La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Istruzioni Iterative Nicola Fanizzi Laboratorio - Corso di Programmazione (B) C.d.L. in Informatica DIB - Università degli Studi di Bari.

Presentazioni simili


Presentazione sul tema: "Istruzioni Iterative Nicola Fanizzi Laboratorio - Corso di Programmazione (B) C.d.L. in Informatica DIB - Università degli Studi di Bari."— Transcript della presentazione:

1 Istruzioni Iterative Nicola Fanizzi Laboratorio - Corso di Programmazione (B) C.d.L. in Informatica DIB - Università degli Studi di Bari

2 2 Istruzione for Si usa quando occorre eseguire un'istruzione (o una serie di istruzioni) un determinato numero di volte esempio: somma := 0; somma := somma + 7; somma := somma + 7; somma := somma + 7; usando un ciclo for : somma := 0; for i := 1 to 3 do somma := somma + 7; inizializzazione

3 3 Istruzione for Sintassi completa for := to do ; 1. inizializza la variabile a ; 2. confronta la variabile con ; 3. se torna al passo 2 altrimenti esci dal ciclo

4 4 Istruzione for Diagramma di flusso variabile <= val.finale inizializzazione variabile istruzione/i falso vero

5 5 Esempio di ciclo for program somma (input, output); var i, somma, numero: integer; begin writeln('SOMMA 5 NUMERI'); writeln; somma := 0; for i := 1 to 5 do begin write('Inserire un intero: '); readln(numero); somma := somma + numero; end; writeln('Somma: ', somma); readln; end.

6 6 Varianti di ciclo for for i := 16 to 24 do... for i := -20 to -16 do... for i := -3 to 1 do... for i := 5 to 5 do... l'istruzione nel ciclo viene eseguita solo 1 volta for i := 5 to 4 do... non esegue l'istruzione nel ciclo cicli a decremento: for := downto do ; esempio: for i := 5 downto 1 do ;

7 7 Esempio Calcolo del fattoriale il fattoriale di un numero n intero è definito: n! = 1 * 2 * … * (n-1) * n program fattoriale (input, output); var n, fat, aus: integer; begin writeln('CALCOLO DI N!'); writeln; write('Inserire n: '); readln(n); fat := 1; for aus := 2 to n do fat := fat*aus; writeln(n,'! = ', fat); readln; end.

8 8 Istruzione while Si usa quando occorre ripetere un'istruzione (o una serie di istruzioni) mentre una condizione resta vera: while do ; Può essere considerata una generalizzazione del ciclo for ovvero questo ne è una abbreviazione Una istruzione while può far ciclare per un numero di volte non determinato a priori

9 9 Esempio di ciclo while program somma2 (input, output); var i, somma, numero: integer; begin writeln('SOMMA 5 NUMERI'); somma := 0; writeln('PROVA WHILE'); writeln; i := 1; while i <= 5 do begin write('Inserire un intero: '); readln(numero); somma := somma + numero; i := i+1; end; writeln('Somma: ', somma); readln; end.

10 10 Confronto tra cicli while e for i := 1; while i <= 5 do begin write('intero: '); readln(numero); somma:=somma+numero; i := i+1; end; for i := 1 to 5 do begin write('intero: '); readln(numero); somma:=somma+numero; end;

11 11 Istruzione while Diagramma di flusso espressione logica istruzione/i falso vero

12 12 Esempio ripetizione con valore di sentinella program somma3 (input, output); var somma, numero: integer; begin writeln('SOMMA di NUMERI'); writeln('inserire 0 per terminare'); writeln; somma := 0; numero := 1; while numero<>0 do begin write('Inserire un intero: '); readln(numero); somma := somma + numero; end; writeln('Somma: ',somma); readln; end.

13 13 Esempio ripetizione con condizione complessa program sommaMax (input, output); var somma, numero, max, i: integer; begin writeln('SOMMA E MAGGIORE'); writeln('Inserire zero per terminare'); numero := 1; somma := 0; max := 0; i := 1; while (numero<>0) and (i<=10) do begin write('Inserire intero positivo: '); readln(numero); if numero > max then max := numero; somma := somma + numero; i := i+1; end; writeln('Somma: ', somma); writeln('Maggiore: ', max); readln; end.

14 14 Esempio somma e max con interi anche negativi program sommaMax2 (input, output); var ancora: char; somma, numero, max, i:integer; begin writeln('SOMMA E MAGGIORE'); writeln('Inserire zero per terminare'); ancora := 'S'; somma := 0; max := -MAXINT-1; i := 1; while ((ancora='S') or (ancora='s')) and (i<=10) begin write('Valore intero: '); readln(numero); if numero>max then max := numero; somma := somma+numero; i := i+1; write('Vuoi continuare (S/N) ? ' ); readln(ancora); end; writeln('Somma: ', somma); writeln('Maggiore: ', max); readln; end.

15 15 Esempio ciclo potenzialmente infinito program sommaN (input, output); var n, i, somma: integer; begin writeln('SOMMA DEI PRIMI N NUMERI INTERI'); writeln; write('Valore di n ? '); readln(n); somma := 0; i := 0; while i<>n do begin i := i+1; somma := somma+i; end; writeln('Somma: ', somma); readln; end.

16 16 Istruzione repeat-until Si usa quando, in un ciclo, un'istruzione (o una serie di istruzioni) debba essere ripetuta almeno una volta: repeat until ; diversamente dalla while si esce dal ciclo quando la condizione risulta verificata tra repeat e until può essere messo direttamente un blocco di istruzioni (senza begin.. end )

17 17 Esempio somma e max con repeat-until program sommaMax3 (input, output); var somma, numero, max,i:integer; begin writeln('SOMMA E MAGGIORE'); writeln('Inserire zero per terminare'); somma := 0; max := 0; i := 1; repeat write('Valore intero'); readln(numero); if numero>max then max := numero; somma := somma+numero; i := i+1; until (numero=0) or (i>10); writeln('Somma: ', somma); writeln('Maggiore: ', max); readln; end.

18 18 Istruzione repeat-until Diagramma di flusso espressione logica istruzione/i falso vero

19 19 Cicli annidati n uno dei cicli mostrati può essere considerato come una singola istruzione e perciò può essere posto all'interno di un altro ciclo: i:=1; while i <= n do begin for j:=1 to m do writeln('i: ', i, ' j: ', j); i:=i+1; end; n for i :=1 to n do for j:=1 to m do writeln('i: ', i, ' j: ', j);

20 20 Esempio stampa quadrato di + program lineeColonne (input, output); var n, m, i, j: integer; begin write('Inserire il numero di linee: ') readln(n); write('Inserire il numero di colonne: ') readln(m); for i := 1 to n do {inizio blocco ciclo esterno } begin writeln; for j := 1 to m do write('+'); end; { fine blocco ciclo esterno } readln; end.

21 21 Tipo real possibilità di memorizzare numeri non interi var x, y, z: real; n rappresentazione interna a 6 byte range valori positivi e negativi tra e n notazione esponenziale normalizzata: *10 (39+1 bit) (7+1 bit) assegnamento: x:=145.34; y:=0.0008; z:=7E+20; {notazione scientifica} notazione scientifica nEm : indica che n va moltiplicato per 10 elevato a m

22 22 Operazioni sul tipo real writeln(x:5:2); il valore reale sarà scritto in un campo numerico allineato a destra di 5 cifre con 2 cifre decimali operatori: + - * / n regole: –un operando integer può essere usato in luogo di un real –se almeno un operando è real il risultato è un valore real round() e trunc() convertono da real a integer funzioni trigonometriche: sin(), cos() e arctan() funzioni logaritmico/esponenziali: sqr(), sqrt(), ln() e exp()

23 23 Esempio metodo dicotomico per il calcolo degli zeri f(b) a b f(a)

24 24 Esempio metodo dicotomico per il calcolo degli zeri program ricercaZero (input, output); const err=0.001; var a, b, m : real; fa, fb, fm : real; begin repeat write('Inserire a: '); readln(a); write('Inserire b: '); readln(b); fa := 2*a*a*a-4*a+1; fb := 2*b*b*b-4*b+1; until fa*fb <= 0; repeat m:=(a+b)/2; fm:= 2*m*m*m-4*m+1; if fa*fm<0 then begin fb:=fm; b:=m; end else begin fa:=fm; a:=m; end; until abs(fm)


Scaricare ppt "Istruzioni Iterative Nicola Fanizzi Laboratorio - Corso di Programmazione (B) C.d.L. in Informatica DIB - Università degli Studi di Bari."

Presentazioni simili


Annunci Google