Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
1
CAPITOLO 7
2
Operatori di espressione di controllo (booleani)
AND (operatore binario) OR (operatore binario) NOT (operatore unario) (IN) (operatore binario)
3
IF Ch IN [‘A’..’Z’,’1..9’] THEN …………………..
REGOLA SINTATTICA PER IN [ ] espressione IN Insieme di valori IF Ch IN [‘A’..’Z’,’1..9’] THEN …………………..
4
Gli operatori binari L’operatore unario AND Falso Vero OR Falso Vero
Falso Falso Falso Falso Falso Vero Vero Falso Vero Vero Vero Vero NOT Falso Vero Vero Falso L’operatore unario
5
ESEMPI WHILE (A <> 0) AND (B <> 0) DO corpo del ciclo
WHILE NOT ((A = 0) OR (B = 0)) DO
6
Gerarchia degli operatori
( ) NOT * / DIV MOD AND + - OR < <= = <> > >= IN
7
Espressioni booleane
8
Fino a quando chiarisco il concetto e voi capite, la lezione prosegue
Fino a quando non chiarisco il concetto o voi capite, la lezione prosegue UNTIL NOT chiarisco OR capite REPEAT La lezione prosegue Fino a quando chiarisco il concetto e voi capite, la lezione prosegue UNTIL chiarisco AND capite REPEAT La lezione prosegue
9
Realizzazione di cicli
preprocessing condizioni di ingresso istruzione di ciclo espressione di controllo corpo del ciclo condizioni di uscita postprocessing
10
Valutiamo alcuni esempi (1- 1)
WHILE (A <> 0) AND (B <> 0) DO corpo del ciclo (A <> 0) AND (B <> 0) = VERO (A <> 0) = VERO e (B <> 0) = VERO Il corpo del ciclo viene eseguito fino a quando A è diverso da zero e B è diverso da zero L’esecuzione del ciclo si interrompe per A uguale a zero L’esecuzione del ciclo si interrompe per B uguale a zero
11
Valutiamo alcuni esempi (2 - 1)
WHILE NOT ((A = 0) OR (B = 0)) DO corpo del ciclo NOT ((A = 0) OR (B = 0)) = VERO (A = 0) OR (B = 0) = FALSO (A = 0) = FALSO e (B = 0) = FALSO Il corpo del ciclo viene eseguito fino a quando A è diverso da zero e B è diverso da zero L’esecuzione del ciclo si interrompe per A uguale a zero L’esecuzione del ciclo si interrompe per B uguale a zero
12
Teorema di De Morgan (condizioni di uscita)
ESPRESSIONE Esp1 AND Esp2 Esp1 OR Esp2 COMPLEMENTO NOT Esp1 OR NOT Esp2 NOT Esp1 AND NOT Esp2
13
Valutiamo alcuni esempi (1 - 2)
ESPRESSIONE Esp1 AND Esp2 Esp1 OR Esp2 COMPLEMENTO NOT Esp1 OR NOT Esp2 NOT Esp1 AND NOT Esp2 WHILE (A <> 0) AND (B <> 0) DO corpo del ciclo condizione di ingresso Esp1 = (A <> 0) AND Esp2 = (B <> 0) (A <> 0) = VERO e (B <> 0) = VERO condizione di uscita NOT Esp1 = (A = 0) OR NOT Esp2 = (B = 0) (A = 0) = VERO o (B = 0) = VERO
14
Valutiamo alcuni esempi (2 - 2)
WHILE NOT ((A = 0) OR (B = 0)) DO corpo del ciclo condizione di ingresso NOT ( Esp1 = (A = 0) OR Esp2 = (B = 0) ) (NOT Esp1) = (A<>0) AND (NOT Esp2) = (B<>0) (A <> 0) = VERO e (B <> 0) = VERO condizione di uscita NOT(NOT(Esp1 = (A = 0)) OR NOT(NOT(Esp2 = (B = 0)) Esp1 = (A = 0) OR Esp2 = (B = 0) (A = 0) = VERO o (B = 0) = VERO ESPRESSIONE Esp1 AND Esp2 Esp1 OR Esp2 COMPLEMENTO NOT Esp1 OR NOT Esp2 NOT Esp1 AND NOT Esp2
15
Esempio di algoritmo (1)
DESCRIZIONE Verificare se tre valori numerici inseriti possono essere considerati come le lunghezze dei lati di un triangolo read (L1, L2, L3) WHILE NOT ( (L1 < L2 + L3) AND (L2 < L1 + L3) AND (L3 < L1 + L2) ) DO write (Valori non validi - Inserire di nuovo) END
16
Esempio di algoritmo (2)
DESCRIZIONE Verificare se tre valori numerici inseriti possono essere considerati come le lunghezze dei lati di un triangolo read (L1, L2, L3) WHILE ( (L1 >= L2 + L3) OR (L2 >= L1 + L3) OR (L3 >= L1 + L2) ) DO write (Valori non validi - Inserire di nuovo) END
17
Fino a quando chiarisco il concetto o voi capite
Proseguo la lezione: ESPRESSIONE Esp1 AND Esp2 Esp1 OR Esp2 COMPLEMENTO NOT Esp1 OR NOT Esp2 NOT Esp1 AND NOT Esp2 Fino a quando chiarisco il concetto o voi capite WHILE chiarisco OR capite La lezione prosegue; Fino a quando non chiarisco il concetto e voi non capite WHILE (NOT chiarisco AND NOT capite) La lezione prosegue;
18
Valutiamo gli esempi (3 - 1)
REPEAT corpo del ciclo UNTIL NOT ((A <> 0) AND (B <> 0)) NOT((A <> 0) AND (B <> 0)) = FALSO (A <> 0) AND (B <> 0) = VERO (A <> 0) = VERO e (B <> 0) = VERO Il corpo del ciclo viene eseguito fino a quando A è diverso da zero e B è diverso da zero L’esecuzione del ciclo si interrompe per A uguale a zero L’esecuzione del ciclo si interrompe per B uguale a zero
19
Valutiamo gli esempi (4 - 1)
REPEAT corpo del ciclo UNTIL (A = 0) OR (B = 0) (A = 0) OR (B = 0) = FALSO (A = 0) = FALSO e (B = 0) = FALSO Il corpo del ciclo viene eseguito fino a quando A è diverso da zero e B è diverso da zero L’esecuzione del ciclo si interrompe per A uguale a zero L’esecuzione del ciclo si interrompe per B uguale a zero
20
Esempio di algoritmo (3)
DESCRIZIONE Verificare se tre valori numerici inseriti possono essere considerati come le lunghezze dei lati di un triangolo L1 L2 L3 0 REPEAT write (Valori non validi - Inserire di nuovo) read (L1, L2, L3) UNTIL (L1 < L2 + L3) AND (L2 < L1 + L3) AND (L3 < L1 + L2)
21
Esempio di algoritmo (4)
DESCRIZIONE Verificare se tre valori numerici inseriti possono essere considerati come le lunghezze dei lati di un triangolo L1 L2 L3 0 REPEAT write (Valori non validi - Inserire di nuovo) read (L1, L2, L3) UNTIL NOT ( (L1 >= L2 + L3) OR (L2 >= L1 + L3) OR (L3 >= L1 + L2) )
22
ESEMPI REPEAT corpo del ciclo
UNTIL NOT ((A <> 0) AND (B <> 0)) UNTIL (A = 0) OR (B = 0)
23
Array elementari
24
Tipi di variabile in Pascal
Tipi predefiniti integer real char Tipi utente (esempi) giorno (subrange) indice (subrange) ….
25
Tipo SUBRANGE (sotto-intervallo)
intervallo di valori di tipo predefinito (integer, real, ecc.) valore minimo valore massimo minimo < massimo SINTASSI tipo subrange costante ..
26
Esempi di Subrange TYPE GiornoType = 1 . . 31; IndiceType = 1 . . 100;
VAR Giorno: GiornoType; Indice: IndiceType;
27
variabili che possono assumere un solo valore ad un dato istante
Variabili SCALARI variabili che possono assumere un solo valore ad un dato istante intero reale carattere giorno indice …….. integer real char GiornoType IndiceType ……..
28
Variabili STRUTTURATE
variabili che contengono variabili componenti Meccanismo di accesso alle variabili componenti è il modo in cui ciascun componente di una variabile strutturata può essere manipolato come se fosse una variabile scalare
29
una variabile componente di un ARRAY
variabile strutturata che contiene variabili componenti tutte dello stesso tipo (omogenee) il cui meccanismo di accesso consiste di una o più espressioni di SUBRANGE ELEMENTO una variabile componente di un ARRAY
30
SINTASSI Array mono-dimensionale array mono- dimensionale ARRAY [
subrange ] OF type ArrayDiReali = ARRAY [1..10] OF real; Accesso ad un elemento accesso ad elemento identificatore [ espressione ]
31
Esempio 1 TYPE TipoIndice = 1 . . 5;
ArrayDiReali = ARRAY [TipoIndice] OF real; VAR Reali: ArrayDiReali; Indice: TipoIndice; BEGIN Indice := 3; Reali[1] := 2.5; Reali[2] := 3.14; Reali[Indice] := 6.0; Reali[4] := Reali[1]; Reali[5] := Reali[Indice]; END.
32
Risultato dell’Esempio 1
[1] [2] [3] [4] [5] Reali
33
Esempio 2 TYPE IndiceType = 1 . . 5;
IntArray = ARRAY [IndiceType] OF integer; VAR Interi: IntArray; Indice: IndiceType; BEGIN writeln (‘Inserisci 5 interi’); FOR Indice := 1 TO 5 DO read (Interi[Indice] : 6); readln; FOR Indice := 5 DOWNTO 1 DO write (Interi[Indice] : 6); writeln (‘I numeri in ordine inverso sono’); writeln; END.
34
Risultato dell’Esempio 2
Se i valori inseriti sono: il contenuto dell’array è: [1] [2] [3] [4] [5] Interi e la stampa finale è:
35
Esempio 3 Assegnato un Array contenente un serie di valori numerici si vuole che tali valori siano riscritti nell’Array in ordine inverso Se il contenuto iniziale dell’array è il contenuto finale deve essere
36
Esempio 3 PROGRAM Arr(input,output); TYPE IndiceType = 1..5;
IntArray = ARRAY [IndiceType] OF integer; VAR Interi: IntArray; Indice: IndiceType; PROCEDURE Inverti (VAR Inter: IntArray); Ind: Integer; Invert, Temp: integer; BEGIN Invert := 6; FOR Ind := 1 TO Invert DIV 2 DO Temp:=Inter[Invert - Ind]; Inter[Invert - Ind]:= Inter[Ind]; Inter[Ind]:=Temp; END END; BEGIN Interi [1]:=50; Interi [2]:=40; Interi [3]:=30; Interi [4]:=20; Interi [5]:=10; writeln ('I numeri in ordine diretto sono'); FOR Indice := 1 TO 5 DO write (Interi[Indice]: 5); writeln; Inverti(Interi); writeln ('I numeri in ordine inverso sono'); readln END.
37
Risultato dell’Esempio 3
I valori inseriti sono: il contenuto iniziale dell’array è: [1] [2] [3] [4] [5] Interi dopo l’esecuzione della procedura diventa: [1] [2] [3] [4] [5] Interi e la stampa finale è:
38
Nota Le variabili strutturate possono essere parametri di procedure così come le variabili predefinite. Ciò significa che possono essere passate per valore o per variabile.
39
ESERCIZIO Dato un Array di N interi eliminare da esso i numeri dispari sostituendoli con il primo pari che li segue. Si ottiene così una Array di K interi con K N Es. A[ ] -> A[ ]
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.