CAPITOLO 7.

Slides:



Advertisements
Presentazioni simili
Esercizio Usate il ciclo repeat until (controllo post condizionale) per simulare il prodotto N x M con M somme di N. Esempio: 5 x 3 equivale a fare 5 +5.
Advertisements

Programma: main() { istruzioni } ; assegnazione condizione ciclo istruzione: ;
Informatica 22/03/2012.
PROGRAMMARE IN PASCAL (le basi)
Le funzioni UD. 8 – Lorganizzazione dei programmi p. 309 LS Tron 4TC 06/07.
Lez. 11 (11/12) - PBElementi di Programmazione1 Lezione 11 Esercizi.
MATLAB. Scopo della lezione Programmare in Matlab Funzioni Cicli Operatori relazionali Esercizi vari.
Dipartimento di Matematica
Algoritmi e Programmazione
Informatica Generale Marzia Buscemi
Dr. Francesco Fabozzi Corso di Informatica
Programmazione Concorrente
INFORMATICA Strutture iterative
Programmazione Procedurale in Linguaggio C++
Introduzione agli algoritmi. Definizione Sistema di regole e procedure di calcolo ben definite che portano alla soluzione di un problema con un numero.
Linguaggio MATLAB: costrutti tipici (IF,WHILE…)
Algebra di Boole ed elementi di logica
Informatica di base A.A. 2003/2004 Algoritmi e programmi
Università degli Studi di Bergamo Facoltà di Lingue e Letterature Straniere Facoltà di Lettere e Filosofia A.A Informatica generale 1 Appunti.
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
Corso di Informatica (Programmazione)
Ricorsione e Debug.
Primo esercizio Scrivere un programma che legge da input
e array a più dimensioni
Il linguaggio Fortran 90: 4. Array: Vettori e Matrici
Il linguaggio Fortran 90: 2. Istruzioni di Controllo
Introduzione alla programmazione ll
Introduzione alla programmazione lll
Fondamenti di Informatica I a.a Il linguaggio C Il controllo di flusso La selezione condizionale Listruzione switch I cicli Le istruzioni break,
Fondamentidi Programmazione Corso: Fondamenti di Programmazione Classe: PARI-DISPARI Docente: Prof. Luisa Gargano Testo: Aho, Ulman, Foundations of Computer.
Procedure e funzioni nei linguaggi di alto livello Lab Programmazione - turno /2006.
Esercitazioni sui File Nicola Fanizzi - DIB Corso (B) di Programmazione CdL in Informatica – I livello A.A. 2003/2004.
Organizzazione del corso
Algoritmi su Tipi Semplici
Istruzioni Decisionali
Istruzioni Iterative Nicola Fanizzi
Array Ricerca Ordinamento Fusione Nicola Fanizzi Laboratorio - Corso di Programmazione (B) C.d.L. in Informatica DIB - Università degli Studi di Bari.
Strutture di controllo in C -- Flow Chart --
Relatori: Emanuele e Denis Tornei Informatici. Introduzione In queste prime lezioni abbiamo affrontato linformatica procedendo a soluzioni di problemi,
Problema Ci sono 5 signore nel parco. Ognuna di loro ha 1 figlio. Ogni bambino ha 10 figurine di calciatori, per un totale quindi di 50 figurine. Questi.
OPERAZIONI CON STRINGHE Le operazioni più interessanti da fare, per ora, con le stringhe sono: determinare la lunghezza della stringa, cioè quanti caratteri.
CAPITOLO 6.
Il Linguaggio C.
TURBOPASCAL …. ripassiamo - prof. V. Riboldi -.
PROBLEMA ALGORITMO PROGRAMMA LINGUAGGI di PROGRAMMAZIONE
Cicli in Fortran I cicli consentono di eseguire una sequenza di istruzioni più di una volta due tipi: Cicli iterativi Cicli while.
La complessità media O(n log n) di Quick-Sort vale soltanto se tutte le permutazioni dell’array in ingresso sono ugualmente probabili. In molte applicazioni.
Problema: come dividere due numeri
Programma di Informatica Classi Prime
Programmazione Strutturata
Anno accademico Le istruzioni di controllo in C.
TURBOPASCAL …. ripassiamo - prof. V. Riboldi -.
RISOLUZIONE DI EQUAZIONI
Il linguaggio Fortran 90: 3. Procedure e Funzioni
TURBOPASCAL L’iterazione - prof. V. Riboldi -.
ESERCIZIO Assegnata una lista L di caratteri ed un carattere k, scrivere una procedura che cancelli tutte le occorrenze di k in L. PROGRAM Liste(output,input);
Corso JAVA Lezione n° 03 Istituto Statale di Istruzione Superiore “F. Enriques”
Algebra di Boole.
Informatica B Allievi Elettrici - AA Fondamenti della programmazione in linguaggio C (II) Istruzioni e strutture di controllo.
Lez. 9 (13/14)Elementi di Programmazione1 Lezione 9 Valutazione di espressioni File di testo sequenziali.
PROVA INTERCORSO MOD.B a.a RICORSIONE ESERCIZI A1.1-A1.6.
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali
1 Fabio Scotti – Università degli Studi di Milano Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( )
Lez. 11 (13/14)Elementi di Programmazione1 Lezione 11 Esercizi.
13 ottobre Decisioni F. Bombi 13 ottobre 2002.
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Informatica e Informatica di Base
Ciclo for nei linguaggi di programmazione. Nei linguaggi di programmazione, il ciclo for è una struttura di controllo iterativa che determina l'esecuzione.
Samuele Marino. Cos’è il Repeat Until?  In Pascal, il Repeat Until è un ciclo che consiste nel ripetere (Repeat) una o più istruzioni fino a quando (Until)
Transcript della presentazione:

CAPITOLO 7

Operatori di espressione di controllo (booleani) AND (operatore binario) OR (operatore binario) NOT (operatore unario) (IN) (operatore binario)

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 …………………..

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

ESEMPI WHILE (A <> 0) AND (B <> 0) DO corpo del ciclo WHILE NOT ((A = 0) OR (B = 0)) DO

Gerarchia degli operatori ( ) NOT * / DIV MOD AND + - OR < <= = <> > >= IN

Espressioni booleane

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

Realizzazione di cicli preprocessing condizioni di ingresso istruzione di ciclo espressione di controllo corpo del ciclo condizioni di uscita postprocessing

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

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

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

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

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

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

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

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;

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

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

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)

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) )

ESEMPI REPEAT corpo del ciclo UNTIL NOT ((A <> 0) AND (B <> 0)) UNTIL (A = 0) OR (B = 0)

Array elementari

Tipi di variabile in Pascal Tipi predefiniti integer real char Tipi utente (esempi) giorno (subrange) indice (subrange) ….

Tipo SUBRANGE (sotto-intervallo) intervallo di valori di tipo predefinito (integer, real, ecc.) valore minimo valore massimo minimo < massimo SINTASSI tipo subrange costante ..

Esempi di Subrange TYPE GiornoType = 1 . . 31; IndiceType = 1 . . 100; VAR Giorno: GiornoType; Indice: IndiceType;

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 ……..

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

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

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 ]

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.

Risultato dell’Esempio 1 [1] [2] [3] [4] [5] Reali 2.5 3.14 6.0 2.5 6.0

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.

Risultato dell’Esempio 2 Se i valori inseriti sono: 5 10 54 1 32 il contenuto dell’array è: [1] [2] [3] [4] [5] Interi 5 10 54 1 32 e la stampa finale è: 32 1 54 10 5

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 è 50 40 30 20 10 il contenuto finale deve essere 10 20 30 40 5

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.

Risultato dell’Esempio 3 I valori inseriti sono: 50 40 30 20 10 il contenuto iniziale dell’array è: [1] [2] [3] [4] [5] Interi 50 40 30 20 10 dopo l’esecuzione della procedura diventa: [1] [2] [3] [4] [5] Interi 10 20 30 40 50 e la stampa finale è: 10 20 30 40 50

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.

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[1 2 4 5 7 9 8 2] -> A[2 4 8 2 ]