Fondamenti di Informatica Prof. D. Cantone Modulo LeTecniche della Programmazione: Strutture di controllo e strutture dati Walter Fiorio Terza classe di un Istituto Tecnico Industriale ad Indirizzo Informatico Modulo 1: Premesse iniziali e formalizzazione dei problemi (6 sett.) – Unità 1: Nozioni di base – Unità 2: Dal problema all’algoritmo 1/3 Terza classe di un Istituto Tecnico Industriale ad Indirizzo Informatico Modulo 2 Il Sistema di elaborazione:Architetture e risorse (11 sett.) – – – – Unità Unità Unità Unità 3: 4: 5: 6: Gli Automi Le risorse Hardware e Software Dall’algoritmo al programma Il sistema operativo Windows 2/3 Terza classe di un Istituto Tecnico Industriale ad Indirizzo Informatico Modulo 3 LeTecniche della Programmazione (13 sett.): Strutture di controllo e strutture dati – Unità 7: Le strutture di controllo – Unità 8: I dati: tipi e strutture – Unità 9: Strutture dinamiche di dati Modulo 4 La Comunicazione con il computer (3 sett.) – Unità 10 Reti e Internet 3/3 Modulo 3 LeTecniche della Programmazione: Strutture di controllo e strutture dati Obiettivi generali Codificare e validare algoritmi effettuando le necessarie correzioni Analizzare situazioni complesse scomponendo i problemi in parti Realizzare procedure risolutive di parti e assemblarle per ottenere soluzioni 1/2 Modulo 3 LeTecniche della Programmazione: Strutture di controllo e strutture dati Obiettivi generali Individuare la struttura dati più idonea in funzione del problema da risolvere Produrre un’efficace documentazione contestualmente allo sviluppo del progetto 2/2 Unità 7: Le strutture di controllo Tempo necessario Prerequisiti richiesti Competenze Metodologie Strumenti Tempo necessario 4 settimane (24 ore) Lezione frontale – 8 ore Laboratorio – 8 ore Verifiche e valutazioni – 4 ore Recupero e/o potenziamento – 4 ore Prerequisiti richiesti Generali – Capacità di decodifica del testo Specifici – Saper realizzare semplici programmi di tipo sequenziale, individuando: dati di input, dati di output, variabili di lavoro, sequenza delle azioni da compiere – Conoscere la sintassi delle istruzioni fondamentali di un linguaggio – Saper lavorare in un ambiente di programmazione Competenze da acquisire Applicare correttamente i principi della programmazione strutturata Costruire algoritmi strutturati Rappresentare le strutture fondamentali e quelle derivate: – in pseudocodifica – con i diagrammi a blocchi – in Pascal Competenze da acquisire Codificare e validare algoritmi effettuando le necessarie correzioni Individuare le strutture di controllo più idonee per la soluzione di un problema Compilare un programma individuando e correggendo gli errori di compilazione più frequenti Metodologie Lezione frontale Discussione guidata Strumenti Libro di testo Schede di verifica e/o monitoraggio PC e ambiente di programmazione La programmazione strutturata La programmazione strutturata è la progettazione, la realizzazione e il collaudo di un programma costituito da parti che dipendono l’una dall’altra secondo un ben definito modello organizzativo 1/2 La programmazione strutturata Qualsiasi algoritmo può essere espresso usando esclusivamente le strutture di sequenza, di selezione e di iterazione. (Teorema di Bohm- Jacopini - 1966) 2/2 Le strutture di controllo 1/11 Sequenza Istruz. 1z Istruzione 1 Istruzione 2 Istruz. 2z Istruzione 3 Istruz. 3z Le strutture di controllo 2/11 Alternativa SE condizione V Condiz. F ALLORA istruzione 1 Istruz. 1z Istruz. 2z ALTRIMENTI istruzione 2 Le strutture di controllo 3/11 Ripetizione RIPETI Istruz. 1z F istruzioni FINCHE’ Condiz. V condizione Le strutture di controllo 4/11 La sequenza si rappresenta costruendo un blocco di istruzioni, ognuna terminante con il punto e virgola, delimitato all’inizio dalla parola BEGIN e alla fine dalla parola END con il punto e virgola. Le strutture di controllo 5/11 Esempio: calcolo dello sconto del 30% sul prezzo di un articolo: BEGIN ClrScr; Write (‘Chiedi prezzo e descrizione’); Readln (prezzo, descrizione); sconto:= prezzo*30/100; prezzo:=prezzo- sconto; Writeln (descrizione, prezzo:7:2); Readln END; Le strutture di controllo 6/11 La struttura If..Then…Else.. costituisce una istruzione unica: pertanto davanti a Else non si mette il punto e virgola. Esempio – Prodotti in offerta 3x2 Se di un prodotto vengono acquistati 3 pezzi, si deve pagare l’importo pari a 2 pezzi. Per le quantità inferiori a tre il prezzo resta invariato. Non sono ammesse quantità maggiori di tre. Le strutture di controllo 7/11 PSEUDOCODIFICA INIZIO chiedi (prezzo, quantità) leggi (prezzo,qta) SE qta =3 ALLORA qta <- 2 importo <- qta* prezzo scrivi (importo) FINE Le strutture di controllo 8/11 BEGIN ClsScr; Write (‘Scrivi prezzo e quantità ‘); Readln(prezzo, qta); IF qta =3 THEN qta:=2; importo:= prezzo*qta; Writeln (‘Importo da pagare = ‘,importo:10:2); Readln END. Le strutture di controllo 9/11 La ripetizione è rappresentata in Pascal dal gruppo di istruzioni comprese tra REPEAT e UNTIL. Tali istruzioni vengono ripetute tante volte, fino a quando la condizione scritta dopo UNTIL diventa vera. Esempio: Calcolare il prodotto tra due interi utilizzando la sola operazione di somma Le strutture di controllo 10/11 PSEUDOCODIFICA INIZIO chiedi (due numeri) leggi (a,b) prodotto <- 0 RIPETI prodotto <- prodotto + a b <- b-1 FINCHE’ b=0 scrivi (prodotto) FINE Le strutture di controllo 11/11 BEGIN ClsScr; Write (‘Scrivi due numeri ‘); Readln(a, b); prod:=0 REPEAT prod:= prod+a; b:= b-1 UNTIL b=0; Writeln (‘prodotto = ‘, prod); Readln END. Le strutture derivate 1/14 E’ possibile considerare delle varianti della struttura di ripetizione già descritta. Nell’iterazione precondizionale si effettua il controllo sulla condizione, prima di eseguire le istruzioni. F condizione V istruzioni Le strutture derivate 2/14 Nel linguaggio Pascal l’iterazione precondizionale si rappresenta con la struttura WHILE: WHILE condizione DO BEGIN istruzione; END; Esempio: Divisione tra interi usando le sottrazioni successive Le strutture derivate 3/14 PSEUDOCODIFICA INIZIO chiedi (due numeri) leggi (a,b) quoz <- 0 MENTRE a >= b ESEGUI a <- a-b quoz <- quoz +1 scrivi (‘quoziente= ‘,quoz) scrivi (‘resto = ‘, a) FINE Le strutture derivate 4/14 Quoziente della divisione tra interi (corpo del programma in Pascal): BEGIN ClrScr; Write (‘Scrivi due numeri ’); Readln (a,b); quoz:= 0; WHILE a >= b DO BEGIN a:=a – b; quoz:=quoz + 1 END; Writeln (‘quoziente ’, quoz); Readln END. Le strutture derivate 5/14 Altra struttura derivata dalla ripetizione è quella che permette di ripetere un certo gruppo di istruzioni per un numero di volte prefissato, cioè la ripetizione enumerativa. Il controllo viene effettuato su una variabile-contatore: la ripetizione si arresta quando il contatore supera un valore prefissato. Le strutture derivate 6/14 La ripetizione enumerativa: diagramma a blocchi c <- min F c<=max V istruzioni incrementa c Le strutture derivate 7/14 La ripetizione enumerativa in Pascal: FOR contatore:= valore_iniziale TO valore_finale DO BEGIN istruzioni END; Esempio: Data in input una serie di n numeri, determinare il massimo tra essi. Le strutture derivate 8/14 PSEUDOCODIFICA INIZIO chiedi (il numero dei dati) leggi(n) PER i DA 1 A n ESEGUI chiedi (dato) leggi (dato) SE i = 1 ALLORA max <- dato SE dato > max ALLORA max <- dato scrivi(max) FINE Le strutture derivate 9/14 BEGIN ClrScr; Write (‘Quanti sono i dati? ‘); Readln (n); FOR i:=1 TO n DO BEGIN Write (‘Inserisci il ‘, i ‘dato ‘); Readln (dato); IF i = 1 THEN max:=dato IF dato > max THEN max:=dato END; Writeln (‘Il valore massimo è: ‘, max); Readln END. Le strutture derivate 10/14 Più complessa della struttura alternativa a due vie è, infine, la struttura di selezione multipla. PSEUDOCODIFICA: CASO DI variabile= lista valori-1: istruzioni-1 lista valori-2: istruzioni-2 ... lista valori-n: istruzioni-n ALTRIMENTI istruzioni Le strutture derivate 11/14 La struttura di selezione multipla – Diagramma a blocchi V Istruz. 1 Var=val1 F V Istruz 2 Var=val2 F V Var =val n F Istruz n istruzioni Le strutture derivate 12/14 La struttura di selezione multipla in Pascal: CASE selettore OF 1: istruzione 1 2: istruzione 2 3: istruzione 3 ELSE istruzione END; Esempio: Simulazione di una calcolatrice che sia in grado di eseguire le 4 operazioni aritmetiche fondamentali. Le strutture derivate 13/14 BEGIN ClrScr; REPEAT Write (‘Dammi due numeri ’); Readln (a,b); Write (‘Indica l’operazione +, -,*, / ‘); Readln (operatore); Errore:= false; CASE operatore OF ‘+’: risultato:=a+b ‘-’ : risultato:=a-b ‘*’ : risultato:=a*b ‘/’ : IF b<>0 THEN risultato:=a/b ELSE BEGIN Writeln(‘Operazione impossibile’); errore:=true END Le strutture derivate 14/14 ELSE BEGIN Writeln (‘Tasto errato’); errore:=true END END; IF NOT errore THEN Writeln (‘Il risultato è ‘ risultato); Write (‘Vuoi ripetere ? (s/n) ‘) Readln (risp) UNTIL risp= ‘n’ END. FINE