La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Istruzioni Decisionali

Presentazioni simili


Presentazione sul tema: "Istruzioni Decisionali"— Transcript della presentazione:

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

2 Istruzione if Sintassi semplice
Si usa quando occorre eseguire un'azione secondo il verificarsi di una condizione esempio: write('inserisci un numero'); readln(i); if i < 100 then writeln('i minore e'' di 100'); sintassi semplificata: if <espressionelogica> then <istruzione> <espressionelogica> denota una espressione booleana che può assumere i valori true o false;

3 Istruzione if Sintassi completa
NB: senza separatore ; if <espressionelogica> then <istruzione1> [else <istruzione2>] il ramo [else <istruzione2>] è opzionale vero espr. logica falso istruzione1 istruzione2

4 Uso di if-then-else program provaIf2(input, output); var i: integer;
begin write('Inserisci un numero intero: '); readln(i); if i<100 then writeln('minore di 100') else writeln('maggiore o uguale a 100'); end.

5 Istruzioni composte A volte è necessario effettuare una sequenza di istruzioni (ad esempio in base ad una condizione) esempio: if i < 100 then writeln('minore di 100'); writeln('istruzione successiva'); oppure if i < 100 then writeln('minore di 100') else writeln('maggiore o uguale a 100'); writeln('istruzione successiva'); writeln('istruzione successiva') viene eseguita indipendentemente dalla verità della condizione

6 Blocco di istruzioni program prova_if3 (input, output); var
i: integer; mag_100: integer; min_100: integer; begin mag_100 := 0; min_100 := 0; write('Inserisci un numero intero: '); readln(i); if i<100 then writeln('minore di 100'); min_100 := 1; end else writeln(' maggiore o uguale a 100'); mag_100 := 1; end.

7 Comporre con begin-end
Le parole chiave begin e end si usano come parentesi per delimitare un blocco di una o più istruzioni in sequenza sarebbe errato scrivere: if i<100 then writeln('minore di 100'); min_100 := 1; else writeln(' maggiore o uguale a 100'); mag_100 := 1; un blocco può comparire dovunque possa comparire un'istruzione semplice (indipendentemente dal particolare costrutto, es. if-then-else)

8 If annidati if-then-else è a sua volta un'istruzione: può quindi comparire all'interno di un'altra if esempio: if i < 100 then if i > 0 then writeln('minore di 100 e maggiore di 0'); se vogliamo anche il ramo else: if i < 100 then if i > 0 then writeln('minore di 100 e maggiore di 0') else writeln('minore di 100 ma non maggiore di 0'); NB: else si riferisce all'ultimo if incontrato!

9 If annidati (2) se vogliamo anche il ramo else riferito al primo if:
if i < 100 then begin if i > 0 then writeln('minore di 100 e maggiore di 0') end else writeln('maggiore o uguale a 100'); volendo l'else anche per l'if interno begin-else son superflui: if i < 100 then if i > 0 then writeln('minore di 100 e maggiore di 0') else writeln('minore di 100 ma non maggiore di 0')

10 If annidati (3) anche il ramo else può fare annidare un altro if:
if i < 100 then if i > 0 then writeln('minore di 100 e maggiore di 0') else writeln('minore di 100 ma non maggiore di 0') else if i = 100 then writeln('uguale a 0') else writeln('maggiore di 100'); si noti l'uso dell'operatore relazionale =

11 Variabili boolean È possibile dichiarare variabili che assumono uno dei due valori logici true o false : il tipo di queste variabili si denota con la keyword boolean es. di dichiarazione: var a,b,c: boolean; è consentito assegnare risultati di espressioni come: a := i < 100; b := x = y; dato che la if testa una espressione logica si possono usare simili espressioni: if a = true then … ovvero if a then ...

12 Variabili boolean test di variabili logiche
program provaIf4 (input, output); var i: integer; a: boolean; begin write('Immetti un numero intero: '); readln(i); a := i<100; if a=TRUE then writeln('minore di 100'); end.

13 Variabili boolean funzioni predefinite
write(·) OK: stampa false o true read(·) NO: in molti compilatori odd(n) dispari su argomenti interi restituisce un valore boolean esempio: write('immettere un numero'); read(n); if odd(n) then write('numero dispari') else write('numero pari'); vale la relazione false < true

14 Espressioni logiche si possono definire utilizzando operatori relazionali: < (minore) > (maggiore) = (uguale) <> (diverso) >= (maggiore o uguale) <= (minore o uguale) espressioni semplici possono essere concatenate con gli operatori logici: not a (negazione: tramuta nel valore duale) a and b (congiunzione: vero sse entrambi veri) a or b (disgiunzione: vero sse almeno uno vero) non standard: a xor b (differenza: vero sse diversi)

15 Espressioni logiche si possono utilizzare le parentesi ed anche relazioni su variabili di altri tipi: ((nx1<>nx2) or (cx1>cx2)) and (presenti <524) in istruzioni condizionali: if (x=y) and (alfa>beta) then writeln('x uguale a y e alfa maggiore di beta') else writeln('x diverso da y o alfa minore o uguale a beta'); operandi misti: if i + 52 < x * a then writeln('espr. aritm. Nelle espr. logiche');

16 Variabili di tipo char Tipo carattere alfanumerico
esempio: var x, y, z : char; Occupazione in memoria: 1 byte => 256 codici carattere distinti assegnamento: x := 'A'; operatori relazionali: si possono usare dato che è implicito un ordinamento (dato dal codice) funzioni: ord() / chr(), pred() / succ() '0' = chr(48) - 'Z' = chr(57) 'A' = chr(65) - 'Z' = chr(90) 'a' = chr(98) - 'Z' = chr(122)

17 Istruzione case Abbreviazione di if in cascata
if <espressione logica1> then <istruzione 1> else if <espressione logica2> then <istruzione 2> else if <espressione logica3> then <istruzione 3> else <istruzione N> quando una stessa espressione (integer o char) viene confrontata con un insieme di espressioni costanti case <espressione> of <lista costanti 1>: <istruzione 1>; <lista costanti 2>: <istruzione 2>; <lista costanti 3>: <istruzione 3>; … [else <istruzione N>;] end;

18 Istruzione case esempio (1)
program provaCase (input, output); var x: integer; begin write('Digita una cifra compresa fra 1 e 4: '); readln(x); case x of 1: writeln(' uno'); 2: writeln(' due'); 3: writeln(' tre'); 4: writeln(' quattro'); else writeln(' cifra fuori intervallo'); end end.

19 Istruzione case esempio (2)
program provaCase2 (input, output); var x: char; begin writeln('Ins. una cifra: '); read(x); case x of '0','2','4','6','8': writeln(' pari'); '1','3','5','7','9': writeln(' dispari'); else writeln(' non hai inserito una cifra'); end end.


Scaricare ppt "Istruzioni Decisionali"

Presentazioni simili


Annunci Google