Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A Programmazione strutturata.

Slides:



Advertisements
Presentazioni simili
Evoluzione dei linguaggi di programmazione
Advertisements

3. Programmazione strutturata (testo di riferimento: Bellini-Guidi)
3. Programmazione strutturata (testo di riferimento: Bellini-Guidi)
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L’attività di.
PROGRAMMAZIONE: linguaggi
3. Programmazione strutturata 3. Programmazione strutturata (testo di riferimento: Bellini-Guidi) Informatica - CDL in Ingegneria Industriale- A.A
© 2015 Giorgio Porcu - Aggiornamennto 01/12/2015 I STITUTO T ECNICO SECONDO BIENNIO T ECNOLOGIE E P ROGETTAZIONE Rappresentazione dell’ Informazione Sistemi.
2a + 10b abx2 3a + 1 y 2 a + 1 x + 2y a − Espressioni algebriche
7. Strutture di controllo Ing. Simona Colucci Informatica - CDL in Ingegneria Industriale- A.A
Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica FONDAMENTI DI INFORMATICA Domenico Talia
Programmazione: Iterazione Esistono tre tipi di iterazione fondamentali e vedremo la corrispondenza dei relativi diagrammi a blocchi e la loro traduzione.
Parte 2 Programmare in Matlab – I Sommario: Introduzione: m-file Strutture condizionali e cicli –Istruzione “if” + Operatori logici in MatlabIstruzione.
INFORMATICA ALGORITMI, PROGRAMMI, E LINGUAGGI DI PROGRAMMAZIONE.
Elementi fondamentali dell’ Architettura di di un elaboratore elettronico.
1. Introduzione al corso Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A
Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica PROBLEMI E ALGORITMI LINGUAGGIO MACCHINA.
© 2007 SEI-Società Editrice Internazionale, Apogeo
La rappresentazione degli algoritmi
Introduzione al linguaggio C
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali
Dal problema al processo risolutivo
Programmazione per la Musica | Adriano Baratè
LE ARCHITETTURE NON VON NEUMANN
7. Strutture di controllo Ing. Simona Colucci
I DIAGRAMMI DI FLUSSO Vantaggi e svantaggi.
(7x + 8x2 + 2) : (2x + 3) 8x2 + 7x + 2 2x + 3 8x2 + 7x + 2 2x + 3 4x
IL CONCETTO DI ALGORITMO
Dal problema al processo risolutivo
10. Programmazione Ricorsiva Ing. Simona Colucci
7. Strutture di controllo
Unità di apprendimento 7
Strutture di controllo
Codifica degli algoritmi in un linguaggio di alto livello
Programmazione strutturata
Forme per rappresentare l’algoritmo:
Lezione 9 – A.A. 2016/2017 Prof. Giovanni Acampora
I MONOMI.
Classe III A A.s – 2012 Programma di Informatica
IL CONCETTO DI ALGORITMO
Programmare.
© 2007 SEI-Società Editrice Internazionale, Apogeo
Dall’analisi del problema alla definizione dell’algoritmo
Strutture di Controllo
Programmazione e Laboratorio di Programmazione
{ } Multipli di un numero M4 ESEMPIO 0, 4, 8, 12, 16, 20, 24, …
Azione delle istruzioni
I numeri relativi DEFINIZIONE. Si dicono numeri relativi tutti i numeri interi, razionali e irrazionali dotati di segno (positivo o negativo). ESEMPI Numeri.
Le espressioni algebriche letterali
Vari e semplici programmi.
INFORMATICA.
© 2007 SEI-Società Editrice Internazionale, Apogeo
Programmazione e Laboratorio di Programmazione
Codici rilevatori di errori
Definizione di linguaggio di programmazione
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Sistemi Digitali.
La struttura dei primi programma in C
Processi decisionali e funzioni di controllo
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Informatica CdL Scienze e Tecniche Psicologiche a.a
Programmazione e Laboratorio di Programmazione
Informatica CdL Scienze e Tecniche Psicologiche a.a
La programmazione strutturata
Relazioni tra CPU e Memoria e Dispositivi I/O
Algoritmi.
ALGORITMO E’ una successione finita di passi che consente di risolvere tutti i problemi di una classe e di determinare il risultato. Caratteristiche: Finito.
Programmazione e Laboratorio di Programmazione
Programmazione Procedurale
Transcript della presentazione:

Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A Programmazione strutturata

Sistemi Informativi DEI - Politecnico di Bari Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A Un programma è un algoritmo espresso in un linguaggio formale, detto linguaggio di programmazione: Interpretabile ed eseguibile da un calcolatore Non ambiguo perchè governato da regole grammaticali precise Linguaggi di programmazione

Sistemi Informativi DEI - Politecnico di Bari Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A Linguaggi di programmazione Classificazione: linguaggi di basso livello (linguaggi macchina e linguaggi assembler): dipendono dalla struttura fisica del tipo di computer per cui sono stati progettati linguaggi di alto livello: più vicini alla forma mentis dell’uomo, ma da tradurre in codice di basso livello per l’interpretazione da parte dell’elaboratore(come il C)

Sistemi Informativi DEI - Politecnico di Bari Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A Linguaggio Macchina Linguaggio formale che il computer è in grado di interpretare ed eseguire senza mediazioni Programmi, codice oggetto, rappresentati da una sequenza di cifre binarie che codificano le istruzioni e i dati su cui lavora la CPU istruzioni fortemente correlate all ’ architettura del calcolatore, perch é corrispondenti ad operazioni direttamente eseguibili dall ’ hardware esempio di istruzione ad un solo operando : codice operativo dell ’ istruzione operando

Sistemi Informativi DEI - Politecnico di Bari Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A Linguaggio assembler Le singole istruzioni binarie sono rappresentate con un codice mnemonico LOAD 220 SUM 252 MEM220 Traduzione in linguaggio macchina ad opera di programmi detti assemblatori, forniti dai costruttori

Sistemi Informativi DEI - Politecnico di Bari Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A Microlinguaggi Usati per i microprogrammi : –corrispondono ad ogni istruzione del linguaggio macchina –costituiti da insiemi di microistruzioni: sequenze di bit che costituiscono i segnali di controllo per pilotare i componenti del processore ed eseguire le istruzioni cablate dal costruttore nelle unità di controllo(fisicamente delle memorie) della CPU per eseguire le operazioni corrispondenti alle istruzioni del linguaggio macchina Obbediscono alla necessità di mediazione tra linguaggio macchina e macchina: lo stesso processore può essere programmato per finalità diverse

Sistemi Informativi DEI - Politecnico di Bari Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A Linguaggi di alto livello Più simili al linguaggio naturale dei linguaggi macchina o assembler Utilizzano simboli matematici e parole tipiche delle lingue naturali(inglese) Usati per scrivere le istruzioni che compongono il codice sorgente

Sistemi Informativi DEI - Politecnico di Bari Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A Interpretazione e Compilazione Il programma di traduzione da un linguaggio di alto livello al linguaggio di macchina può: tradurre ed eseguire frase per frase (interprete) tradurre tutte le frasi e solo successivamente eseguire (assemblatore o compilatore)

Sistemi Informativi DEI - Politecnico di Bari Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A Un Interprete è un programma che legge il programma sorgente e, per ogni istruzione 1.Verifica la correttezza sintattica 2.Effettua la traduzione nella corrispondente sequenza di istruzioni in linguaggio macchina 3.Esegue direttamente la sequenza di istruzioni in linguaggio macchina Svantaggio: istruzioni eseguite più volte (es. ciclo) vengono verificate e tradotte più volte Vantaggio: facile sviluppo e correzione dei programmi Interpretazione

Sistemi Informativi DEI - Politecnico di Bari Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A Compilazione Un Compilatore è un programma che legge il programma sorgente e lo traduce interamente in un programma scritto in linguaggio macchina(programma oggetto): 1.Verifica la correttezza sintattica di ciascuna istruzione 2.Il programma oggetto è generato solo in assenza di errori sintattici 3.La correttezza semantica è verificata solo in fase di esecuzione Svantaggio: difficile correzione dei programmi Vantaggio: istruzioni eseguite più volte (es. ciclo) vengono verificate e tradotte solo una volta

Sistemi Informativi DEI - Politecnico di Bari Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A Interpretazione vs Compilazione Velocità di esecuzione: –Bassa per i linguaggi interpretati –Alta per i linguaggi compilati Facilità di messa a punto dei programmi: –Alta per linguaggi interpretati –Bassa per i linguaggi compilati

Sistemi Informativi DEI - Politecnico di Bari Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A Linguaggi di alto livello Esempio di codifica: somma precedente in Matlab a =6; b =31; a =a+b; –a e b non sono registri o locazioni di memoria ma variabili identificate da: Nome(possibilità di usare nomi simbolici del contenuto, per facilitare la leggibilità del programma) Insieme di valori che può assumere Vantaggi –Programma portabile su ogni macchina con compilatore per il linguaggio in cui è scritto il programma –Gestione indirizzi di memoria totalmente delegata al calcolatore

Sistemi Informativi DEI - Politecnico di Bari Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A Algoritmi come sequenze di stati Esempio: determina il Massimo Comune Divisore (MCD) a. prendi i due numeri b. calcola il resto della divisione intera del num. più grande per il più piccolo c. sostituisci il numero più grande con il resto della divisione d. finché tale resto è diverso da zero torna all’istruzione b e. il numero più grande (quello non nullo) è il MCD cercato

Sistemi Informativi DEI - Politecnico di Bari Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A Algoritmi come sequenze di stati Flusso di esecuzione dell’algoritmo MCD con i numeri 924 e 120 passo e 120 passo 2 84 è il resto della divisione intera di 924 per 120 passo e 84 passo 4 il resto è diverso da zero, torna all’istruzione b passo 5 36 è il resto della divisione intera di 120 per 84 passo 6 84 e 36 passo 7 il resto è diverso da zero, torna all’istruzione b passo 8 12 è il resto della divisione intera di 84 per 36 passo 9 36 e 12 passo 10 il resto è diverso da zero, torna all’istruzione b passo 11 0 è il resto della divisione intera di 36 per 12 passo e 0 passo 13 il resto è uguale a zero, prosegui con l’istruzione successiva passo è il MCD

Sistemi Informativi DEI - Politecnico di Bari Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A Istruzioni all’interno dei cerchi Passi in esecuzione dell’istruzione all’esterno del relativo cerchio Passaggio da un’istruzione all’altra tramite archi L’esecuzione di un passo determina uno stato: fotografia della situazione attuale Il susseguirsi dei passi di esecuzione determina una sequenza di stati Il flusso è sequenziale ed ordinato perché l’algoritmo segue le regole della programmazione strutturata Sequenza di stati nel flusso dell’algoritmo per il calcolo del MCD(924,120) Algoritmi come sequenze di stati

Sistemi Informativi DEI - Politecnico di Bari Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A Programmazione non strutturata Esempio: Algoritmo equivalente per il calcolo del Massimo Comune Divisore (MCD) a. prendi i due numeri b. calcola il resto della divisione intera del num. più grande per il più piccolo c. Se il resto è uguale a zero vai all’istruzione f d. sostituisci il numero più grande con il resto della divisione e. vai all’istruzione b f. il numero più piccolo è il MCD cercato Salto incondizionato Salto condizionato

Sistemi Informativi DEI - Politecnico di Bari Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A Programmazione non strutturata Flusso di esecuzione dell’algoritmo MCD con i numeri 924 e 120 passo e 120 passo 2 84 è il resto della divisione intera di 924 per 120 passo 3 il resto è diverso da zero(prosegui in sequenza) passo e 84 passo 5 vai all’istruzione b passo 6 36 è il resto della divisione intera di 120 per 84 Passo 7 il resto è diverso da zero(prosegui in sequenza) Passo 8 84 e 36 passo 9 vai all’istruzione b passo è il resto della divisione intera di 84 per 36 Passo 11 il resto è diverso da zero(prosegui in sequenza) passo e 12 passo 13 vai all’istruzione b passo 14 0 è il resto della divisione intera di 36 per 12 passo 13 il resto è uguale a zero, vai all’istruzione f passo è il MCD

Sistemi Informativi DEI - Politecnico di Bari Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A Si parte dal nodo iniziale e poi si passa ai nodi successivi selezionando il cammino in base allo stato che si viene a creare dopo l’esecuzione delle operazioni specificate nel nodo L’arco e-b corrisponde ad un salto incondizionato (goto) L’uso dei goto : –porta a sequenze non lineari di stati, molto contorte, note come programmi a “spaghetti”, specie per programmi complessi –ha un numero di istruzioni minori e riusa parti di programma tramite salti –porta a programmi difficili da correggere manutenere ed estendere Programmazione non strutturata Sequenza di stati nel flusso dell’algoritmo per il calcolo del MCD(924,120) abc d e f 12,6,10, ,7,11,15 4,8,12 5,9,13

Sistemi Informativi DEI - Politecnico di Bari Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A Programmi strutturati L’obiettivo della programmazione strutturata è di rendere un flusso ordinato il passaggio tra le istruzioni dall’inizio alla fine dei programmi Realizzazione: –Condizione ideale: sequenza lineare di operazioni, senza alternative possibili(limite: potenza algoritmi ridotta) –Condizione reale: regole coerenti con il pensiero naturale che portano ad effetti equivalenti all’esecuzione sequenziale di operazioni Costrutti consentiti (strutture di controllo del flusso): –Sequenza: fai questo –Selezione tramite strutture di controllo decisionali: se è verificata una condizione fai questo altrimenti fai quello –Ripetizioni cicliche tramite strutture di controllo iterative: finché è verificata una condizione fai questo Costrutti non consentiti: –Salto incondizionato (goto): ancora nella sintassi solo per compatibilità verso il basso(era necessario nel linguaggio macchina e assembler)

Sistemi Informativi DEI - Politecnico di Bari Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A Programmi strutturati TEOREMA DI BOHM-JACOPINI: tutti i programmi possono essere scritti con l’utilizzo delle sole strutture di controllo: sequenza, selezione e iterazione (senza l’uso del salto goto) Corrado Böhm e Giuseppe Jacopini hanno dimostrato che la potenza di calcolo dei programmi strutturati(più chiari, più facili da scrivere e da modificare e più probabilisticamente esenti da errori) non è inferiore a quella dei programmi che usano il goto

Sistemi Informativi DEI - Politecnico di Bari Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A : flow-chart Sequenza : flow-chart Operazioni: - fai questo - fai quello Esempio: a = 5; a = a+b;

Sistemi Informativi DEI - Politecnico di Bari Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A : flow-chart Selezione : flow-chart Operazioni: –se è verificata una condizione fai questo –se è verificata una condizione fai questo altrimenti fai quello Sintassi Matlab: –if espressione istruzione end –if espressione istruzione1 else istruzione2 end

Sistemi Informativi DEI - Politecnico di Bari Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A : flow-chart Iterazione : flow-chart Operazioni: –finchè è verificata una condizione fai questo –esegui fai questo finchè è verificata una condizione Sintassi Matlab: –while espressione istruzione end espressio ne istruzione vero falso

Sistemi Informativi DEI - Politecnico di Bari Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A Programmi strutturati: flow-chart Si apre con un cerchio e finisce con un cerchio: tutti i canali partono dal primo cerchio e terminano nell’ultimo(un solo inizio ed una sola fine) Composto da più strutture di controllo del tipo sequenza selezione o iterazione I cerchi sono i connettori tra le strutture di controllo: altri punti di attacco non consentiti

Sistemi Informativi DEI - Politecnico di Bari Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A Blocco d ’ istruzioni Più strutture formano un blocco d’istruzioni: –insieme d’istruzioni con una sola entrata, da dove inizia sempre l’elaborazione, e una sola uscita, dove termina sempre l’elaborazione del blocco(nessuna uscita laterale con istruzioni di salto) –Scatola nera per eseguire un compito: non possono essere utilizzate delle sottoparti –Sintassi: {blocco} I blocchi possono contenersi l’un l’altro ma mai intersecarsi blocco

Sistemi Informativi DEI - Politecnico di Bari Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A Calcolo della somma algebrica tra due numeri relativi utilizzando le operazioni di somma e differenza tra numeri senza segno 2.Calcolo della media 3.Calcolo dei valori massimo e minimo 4.Visualizzazione di caratteri letti da tastiera 5.Calcolo di una potenza 6.Visualizzazione di un quadrato Programmazione strutturata: esempi

Sistemi Informativi DEI - Politecnico di Bari Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A Esempio 1 Problema: Calcolo della somma algebrica tra due numeri relativi utilizzando le operazioni di somma e differenza tra numeri senza segno Algoritmo: - acquisizione dei due numeri a,b - se a,b sono concordi |s|=|a|+|b| - se a,b sono discordi - se |a|<|b| si scambiano i valori di a e b - |s|=|a|-|b| - la somma ha il segno di a e modulo |s| falso inizio a, b concordi s  a+b fine |a| < |b| s  a-b t  a a  b b  t vero falso modulo di s e segno di a a, b

Sistemi Informativi DEI - Politecnico di Bari Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A Esempio 2 Problema: Acquisizione di 10 numeri interi e calcolo della media Algoritmo: 1.Azzerare la somma s 2.Se non si sono acquisiti tutti i numeri: 2.1 Acquisire un numero n 2.2 Sommare n ad s e tornare al passo 2 3.La media è s/10 4.Fine inizio s  0 i  0 i < 10 s  s + n i  i + 1 m  s/10 fine vero falso m n

Sistemi Informativi DEI - Politecnico di Bari Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A Esempio 3 Problema: Acquisizione di 10 numeri interi; determinazione e visualizzazione del numero maggiore e minore Algoritmo: 1.Leggi il primo numero n 2.Poni il massimo e il minimo corrente(variabili max e min) pari a n 3.Finché i numeri inseriti sono meno di Leggi un nuovo numero n 3.2 Se n<min min=n altrimenti se n>max max=n 4.Visualizza min e max 5.Fine inizio max  n min  n i  1 i < 10 fine n > max min  n n< min max  n vero falso vero i  i +1 falso min, max n n

Sistemi Informativi DEI - Politecnico di Bari Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A Esempio 4 Problema: Scrivere un programma che consenta, acquisito un numero intero n, di acquisire un carattere c e visualizzarlo n volte sulla stessa riga finché n è maggiore di zero Algoritmo: 1.Leggi il primo numero n 2.Finché n>0 2.1 Leggi c 2.2 Visualizza c n volte 2.3 Visualizza “a capo” 2.3 Leggi nuovo numero n 3.Fine inizio n > 0 i  0 blocco 2.2 fine a capo n n c falso vero Inizio blocco 2.2 i< n c i  i+1 vero falso Fine blocco 2.2 connettore

Sistemi Informativi DEI - Politecnico di Bari Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A Esempio 5 Problema: Calcolo e visualizzazione di una potenza(variabile pot), acquisiti la base x e l’esponente n Algoritmo: 1.Acquisisci x ed n(intero) 2.Poni pot pari ad 1 3.Esegui per n volte pot  pot * x 4. Visualizza pot 5. Fine inizio x, n pot  1 i  0 i< n i  i+1 vero falso pot = pot * x pot fine

Sistemi Informativi DEI - Politecnico di Bari Informatica per l’Ingegneria- CDL in Ingegneria Informatica- A.A Esempio 6 Problema: acquisito un numero intero n, si visualizzi una figura quadrata di n*n con degli asterischi nella diagonale principale, dei segni meno al di sotto e dei segni più al di sopra della diagonale principale Algoritmo: 1.Leggi n 2.Finché le righe visualizzate sono meno di n (indice i scorre le righe) Finchè le colonne visualizzate sono meno di n(indice j scorre le colonne) se j>i visualizza il carattere meno se j=i visualizza il carattere asterisco se i<j visualizza il carattere più 3.Esci inizio n i  0 i< n j  0 j < n j < i j =i j  j+1 *+ - a capo i  i+1 fine falso vero falso vero falso vero