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 |