Predavanja i vežbe iz računarstva i informatike za učenike gimnazije

Računarstvo i informatika za učenike gimnazije

1. Razred

2. Razred

3. Razred

4. Razred

 

 

Dužina krive f(x) - rektifikacija krive

 

 


Algoritam za numeričko izračunavanje dužine krive poslužiće nam kao primer algoritma koji se sastoji od dva ciklusa koji se nalaze jedan u drugom. Svaki od ciklusa može biti realizovan bilo while..do ciklusom, bilo repeat..until ciklusom.

Detalje vezane za matematiku koja se nalazi u osnovi algoritma možete pročitati ovde.

U zadatku obradite pažnju na komentare koji se nalaze u vitičastim zagradama. Komplikovaniji programi bez propratnih komentara obično su teški za razumevanje, čak i programerima koji ih pišu.

Zadatak:
Napisati program koji izračunava dužinu krive y(x)= sqrt (1- x2) od tačke (-1.0 , 0.0) do tačke (1.0 , 0.0), sa tačnošću na 3 decimale. I spoljašnji i unutrašnji ciklus realizovati sa while..do naredbom.


Program duzinaWW;
Var kor, a, b, ds, dn, dm, eps, x, y1, y2, raz: double;
   
Begin
a:=-1; b:=1; eps:=0.0001; {a, b - granice , eps- tacnost}
kor:=(b-a)/5; {pocetna velicina koraka}
ds:=0; raz:=2*eps; {priprema za spoljasnji ciklus}
while (abs(raz)>eps) do {glavni uslov}
 begin
    dn:=0;
    kor:=kor/2; {smanjivanje koraka}
    x:=a; y1:=sqrt(1-x*x); {priprema za unutrasnji ciklus}

   while (x+kor<b) do { x prolazi od a do b}
    begin
    x:=x+kor; {"pomeranje" tacke x koja nam sluzi za racunanje f(x) }
    y2:=sqrt(1-x*x); {vrednost funkcije u tacki}
    dm:= sqrt(sqr(y2-y1) + sqr(kor)); {Pitagorina teorema za "malu" duzinu}
    dn:=dn+dm; { izracunavanje nove duzine}
    y1:=y2; {priprema za novi ciklus - za sledeci prolazak}
    end;

   raz := ds-dn; {razlika duzina za proveru tacnosti}
   ds:=dn; {priprema za novi ciklus - za sledeci prolaz}
 end;
writeln ('duzina je ', ds:10:3); { no comment}

End.

Program se sastoji od dva while ciklusa. Spoljašnji ciklus služi za proveru razlike stare izračunate dužine i nove dužine. Takođe u spoljašnjem ciklusu dužina koraka u svakom prolazu se upola smanjuje.
Unutrašnji ciklus sabira pronađene male dužine (dužine pojedinačnih segmenata), pronađene pomoću Pitagorine Teoreme i formira novu (ukupnu) dužinu krive. 

Za vežbu napisati isti program pomoću ostalih kombinacija repeat i while ciklusa.
a) spoljašnji ciklus sa while, unutrašnji sa repeat
b) spoljašnji ciklus sa repeat, unutrašnji sa while
c) spoljašnji ciklus sa repeat, unutrašnji sa repeat

 



 

 

© 2009 Dragoljub Perišić 



 

 

 

 

 

 

 

 

 

 

 

 

 

 

 



 

 

 

©2017 Dragoljub Perišić