1 / 19

Istruzioni Decisionali

Istruzioni Decisionali. Nicola Fanizzi Laboratorio - Corso di Programmazione (B) C.d.L. in Informatica DIB - Università degli Studi di Bari. Istruzione if Sintassi semplice. Si usa quando occorre eseguire un' azione secondo il verificarsi di una condizione

kamana
Télécharger la présentation

Istruzioni Decisionali

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Istruzione ifSintassi 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 ifSintassi 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 begin writeln('minore di 100'); min_100 := 1; end else begin writeln(' maggiore o uguale a 100'); mag_100 := 1; end 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 thenif i > 0 thenwriteln('minore di 100 e maggiore di 0'); • se vogliamo anche il ramo else: if i < 100 thenif i > 0 thenwriteln('minore di 100 e maggiore di 0')elsewriteln('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 thenbeginif i > 0 thenwriteln('minore di 100 e maggiore di 0') end elsewriteln('maggiore o uguale a 100'); • volendo l'else anche per l'if interno begin-else son superflui: if i < 100 thenif i > 0 thenwriteln('minore di 100 e maggiore di 0') elsewriteln('minore di 100 ma non maggiore di 0') elsewriteln('maggiore o uguale a 100');

  10. If annidati (3) • anche il ramo else può fare annidare un altro if: if i < 100 thenif i > 0 then writeln('minore di 100 e maggiore di 0') else writeln('minore di 100 ma non maggiore di 0') elseif 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 …ovveroif a then ...

  12. Variabili booleantest 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 booleanfunzioni predefinite • write(·) OK: stampa false o trueread(·) NO: in molti compilatori • odd(n) dispari su argomenti interi restituisce un valore booleanesempio: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) thenwriteln('x uguale a y e alfa maggiore di beta') elsewriteln('x diverso da y o alfa minore o uguale a beta'); • operandi misti: if i + 52 < x * a thenwriteln('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 caseAbbreviazione 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 caseesempio (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 caseesempio (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.

More Related