Programmazione I. Fondamenti di programmazione. Problemi, Algoritmi, Diagrammi di flusso

Documenti analoghi
Corso di Informatica di Base

Formalismi per la descrizione di algoritmi

Sommario. Problema computazionale Sviluppo software Algoritmi. Istruzioni Sequenziali, Condizionali, Cicliche; Javascript

Introduzione alla programmazione

Sommario. Problema computazionale Sviluppo software Algoritmi. Istruzioni Sequenziali, Condizionali, Cicliche; Javascript

PROGRAMMAZIONE STRUTTURATA

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software

Rappresentazione con i diagrammi di flusso (Flow - chart)

Introduzione agli Algoritmi

in termini informali: un algoritmo è una sequenza ordinata di operazioni che risolve un problema specifico

L ELABORATORE ELETTRONICO!

L ELABORATORE ELETTRONICO

LA METAFORA DELL UFFICIO

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.

Paolo Bison. Fondamenti di Informatica A.A. 2006/07 Università di Padova

RAPPRESENTAZIONE GLI ALGORITMI NOTAZIONE PER LA RAPPRESENTAZIONE DI UN ALGORITMO

Introduzione alla programmazione strutturata

Programmazione: Sommario

Elaboratore Elettronico

MODULO 07. La soluzione dei problemi mediante gli algoritmi

Unità di apprendimento 6. Dal problema al programma

Laboratorio di Programmazione

Sviluppo di programmi

Informatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi

Altrimenti, il M.C.D. di a e b è anche divisore di r (e.g. a=15,b=6,r=3 che è il M.C.D.)

Informatica. Informatica. Problema - soluzione. Algoritmi, dati e programmi. Introduzione ai concetti di: Distinguiamo tra: problema

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Algoritmi e soluzione di problemi

Scrivere il software. Scrivere il software. Interprete. Compilatore e linker. Fondamenti di Informatica

ALGORITMI. Obiettivo: risolvere problemi mediante l uso di un elaboratore elettronico. Elaboratore elettronico

Università degli Studi di Verona. Algoritmie Diagrammidiflusso. Gennaio Sergio Marin Vargas. Dipartimento di Biotecnologie

= < < < < < Matematica 1

Corso di Informatica. Problemi ed algoritmi. Ing Pasquale Rota

1 Esercizi in pseudocodice

Cosa è un programma. Informatica di Base -- R.Gaeta 18

Sviluppo di programmi. E ora, finalmente. Si comincia! 1. Analizzare il problema. 2. Progettare una soluzione (1) E necessario capire:

Dal Problema all Algoritmo. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

LA METAFORA DELL UFFICIO

Programmazione strutturata

Dall analisi alla codifica (1)

Algoritmi e diagrammi di flusso

Problemi e algoritmi. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05 (da U. de' Liguoro - Alg. & Spe. 03/04)

Descrizione di un algoritmo

Problemi e algoritmi. Il che cosa ed il come. Il che cosa ed il come. Il che cosa e il come

Capitolo 3 L elaborazione e la strutturazione dell informazione

Lezione 5. La macchina universale

I costrutti forniti dal linguaggio si dividono in corrispondenti classi di istruzioni

Università degli Studi di Brescia INFORMATICA. Dipartimento di Ingegneria Meccanica e Industriale

Diagrammi a blocchi 1

Dall algoritmo al programma

SISTEMI DI ELABORAZIONE DELLE INFORMAZIONI Algoritmi e programmazione Prof. Andrea Borghesan

LA METAFORA DELL UFFICIO LAVAGNA DI PROGRAMMA SPORTELLO UTENTE LAVAGNA DI LAVORO

Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia

Fasi della programmazione. Gabriella Trucco

Algoritmi. Un tema centrale dell informatica è lo studio degli algoritmi.

ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE)

Diagrammi di flusso. Un metodo per rappresentare graficamente gli algoritmi. sotto programma. Input/ Output. Start. predicato Elaborazione Stop

INFORMATICA. Scienza dei calcolatori elettronici (computer science) Scienza dell informazione (information science)

Matlab. Istruzioni condizionali, cicli for e cicli while.

Lezione 8. Soluzione di un problema Problema. Soluzione di un problema. Comprensione del Problema. Analisi. Introduzione agli algoritmi

Fondamenti di Informatica

PROGRAMMAZIONE: Le strutture di controllo

generalità concetti di base

Strutture di Controllo

n Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati

Le Strutture di controllo Del Linguaggio C. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Analisi e Programmazione

Informatica e Bioinformatica: Algoritmi

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Rappresentazione degli algoritmi

Algoritmi, linguaggi e programmi. Emilio Di Giacomo e Walter Didimo

Cosa si intende con stato

Rappresentazione degli algoritmi

Scienza dei calcolatori elettronici (Computer Science) Scienza dell informazione. è uno strumento in grado di eseguire insiemi di azioni elementari.

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Introduzione alla programmazione

Corso di Fondamenti di Informatica Classi di istruzioni 2

Fondamenti di Informatica 1 (I Modulo) Introduzione agli algoritmi. Roberto Basili a.a

LABORATORIO DI INFORMATICA

Introduzione agli algoritmi

Elementi di programmazione

Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto

Informatica. Come si risolve un problema?

PROGRAMMAZIONE (Corso A)

Dispensa di Informatica II.1

Appunti del corso di Informatica 1 (IN110 Fondamenti) 2 Algoritmi e diagrammi di flusso

Il Concetto di Algoritmo Corso di Informatica Laurea in Fisica

Rappresentazione degli algoritmi

ESERCITAZIONI DI LABORATORIO DI CALCOLO NUMERICO. Introduzione: Algoritmi e Programmazione strutturata

Algoritmi, linguaggi e programmi. Emilio Di Giacomo e Walter Didimo

INFORMATICA Algoritmi come formalizzazione della risoluzione di un problema

Diagrammi a blocchi 1

Calcolo numerico e programmazione Risoluzione di problemi

Il concetto di calcolatore e di algoritmo

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Termine algoritmo da:

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

Algoritmi e diagrammi di flusso versione biennio

Algoritmi e Linguaggi

2. Algoritmi e Programmi

DISPENSE DI PROGRAMMAZIONE

I flow chart. Informatica Generale 14/15 Scienze della comunicazione. cristina gena.

Transcript:

Programmazione I Fondamenti di programmazione ( Lezione I ) Problemi, Algoritmi, Diagrammi di flusso Fabrizio Messina messina@dmi.unict.it www.dmi.unict.it/~messina

Algoritmo Dato un problema, un algoritmo è una procedura, cioè una sequenza di passi, che può essere eseguita automaticamente da una macchina in modo da risolvere il problema dato. Un problema risolvibile mediante un algoritmo si dice computabile. F. Messina Programmazione I 2

Esempio di algoritmo Il pollo alle mandorle: - Abbiamo gli ingredienti (pollo, olio, mandorle, cipolla, sale, pepe, etc.) con le giuste quantità; - Seguiamo la ricetta; - Serviamo il piatto a tavola. F.Messina Programmazione I 3

Un altro esempio di algoritmo La costruzione di un kit di montaggio: - Procuriamo il kit e gli strumenti; - Apriamo la scatola; - Leggiamo le istruzioni; - Mettiamo insieme i pezzi. F. Messina Programmazione I 4

Risoluzione di un problema Algoritmo Input Esecutore Output Generalmente, la risoluzione di un dato problema consiste nel prendere alcuni dati iniziali (input) relativi al problema e nel fornire un risultato (output) che risolve quest ultimo. F. Messina Programmazione I 5

Ma Non è così facile come sembra! Per scrivere la giusta sequenza di passi bisogna essere un bravo cuoco o un bravo costruttore! F. Messina Programmazione I 6

Infatti Problema Risolutore Algoritmo Uomo la risoluzione automatica prevede comunque una notevole componente umana!!! Esecut ore Processo di esecuzione Macchina F. Messina Programmazione I 7

Definizione di algoritmo Un algoritmo è una sequenza ordinata e finita di passi (azioni o istruzioni) che producono un ben determinato risultato in un tempo finito. F. Messina Programmazione I 8

Caratteristiche di un algoritmo 1. Azioni eseguibili e non ambigue. Non ambigue, inoltre non sono ammessi un pò e a piacere, che non sono termini adatti ad una macchina. 2. Determinismo. Fatto un passo, il successivo è uno ed uno solo, ben determinato. Alternative sono possibili, ma la scelta deve essere univoca. 3. Numero finito di passi. 4. Terminazione. L esecuzione deve finire e deve produrre il risultato in tempo finito. Osservazione : la 3 non implica la 4. F. Messina Programmazione I 9

Esempio di non terminazione 1. Si consideri un numero N; 2. Scrivere N; 3. Scrivere il numero successivo; 4. Ripetere il passo precedente. F. Messina Programmazione I 10

Ancora un esempio Ricerca di un nominativo in un elenco. Non ordinato. Es.: Una lista di firme. Ordinato. Es.: Elenco telefonico. F. Messina Programmazione I 11

Codifica dell algoritmo Affinché una macchina riesca a comprendere ed eseguire i passi specificati da un algoritmo, quest ultimo deve essere prima codificato in un opportuno programma scritto in un linguaggio di alto livello. Algoritmo Traduzione Programma F. Messina Programmazione I 12

L esecuzione automatica Uomo Algoritmo Programma Pseudo-codice Linguaggio di alto livello Traduttore Input Linguaggio macchina Macchina F. Messina Programmazione I 13 Esecuzione Output

Scomposizione in sottoproblemi Ricetta del pollo alle mandorle: 1. Preparare il soffritto ed aggiungervi il pollo; 2. Unire le mandorle pelate al soffritto; 3. Mescolare fino a quando il pollo sarà ben dorato; 4. Aggiungere del pepe; 5. Rosolare con vino bianco fino a quando il pollo è cotto; 6. Aggiungere olio q.b.; 7. Se preferisci salato, allora aggiungi sale; F. Messina Programmazione I 14

Scomposizione in sottoproblemi La ricetta precedente è un esempio di cosa significa scomporre un problema in sottoproblemi. Ogni sottoproblema può essere scomposto in problemi via via più elementari. Top-down vs. Bottom-Up F. Messina Programmazione I 15

Top down TOP DOWN: 1. Si formula inizialmente una visione generale del sistema, senza scendere nel dettaglio delle sue parti. 2. Ogni parte del sistema è successivamente rifinita per decomposizione aggiungendo dettagli. 3. Successive decomposizioni permetteranno di specificare ulteriori dettagli, finché la specifica completa è sufficientemente dettagliata da validare il modello. F. Messina Programmazione I

Bottom Up BOTTOM UP: 1. Parti individuali del sistema sono specificate in dettaglio. 2. Le parti vengono connesse tra loro in modo da formare componenti più grandi. 3. Successive connessioni/composizioni permetteranno di realizzare un sistema completo. F. Messina Programmazione I

Descrizione di un algoritmo Si descrive un algoritmo cercando di sintetizzare il più possibile la sua sequenza di passi. La descrizione avviene mediante : pseudo-codice, oppure diagramma di flusso. F. Messina Programmazione I 18

Diagrammi di flusso I diagrammi di flusso permettono di descrivere in modo grafico le azioni che costituiscono un algoritmo e il loro flusso di esecuzione. Ogni azione elementare è rappresentata da un blocco. Esistono 4 tipi di blocchi. F. Messina Programmazione I 19

Diagrammi di flusso (1) Istruzioni di inizio e fine. Inizio Fine F. Messina Programmazione I 20

Diagrammi di flusso (2) Operazioni di lettura (input) o scrittura (output). Leggi il dato Scrivi il dato F. Messina Programmazione I 21

Diagrammi di flusso (3) Istruzioni imperative (azioni oppure operazioni). Calcola : 20+34 F. Messina Programmazione I 22

Connettori I singoli diagrammi devono essere uniti tramite i connettori. L esecuzione delle istruzioni deve essere fatta sequenzialmente, ovvero seguendo i connettori. Quando si scrive l algoritmo bisogna fare molta attenzione alla direzione del flusso di esecuzione. F. Messina Programmazione I 23

Istruzione di assegnamento Una variabile numerica è un entità caratterizzata : da un nome, e da un valore (o contenuto) che può cambiare nel tempo Un espressione è una combinazione di operatori aritmetici, costanti e variabili che può essere calcolata generando un singolo valore numerico. Es.: X, X + 1, X + (Y * 3). Istruzione di assegnamento : Variabile Espressione; Es.: Z 3; Z X + 3; X X + 1; F. Messina Programmazione I 24

Esempio Descrivere, mediante diagramma di flusso, un algoritmo che calcoli la somma di due numeri letti in input. F. Messina Programmazione I 25

Diagramma di flusso : Somma Inizio Z X+Y Leggi X Stampa Z Leggi Y Fine F. Messina Programmazione I 26

Esempio Descrivere, mediante diagramma di flusso, un algoritmo che scambi i valori di due variabili lette in input. F. Messina Programmazione I 27

Diagramma di flusso: Scambio Inizio Leggi X Leggi Y Aux X X Y Y Aux Scrivi X Scrivi Y Fine F. Messina Programmazione I 28

Variazioni nel flusso di esecuzione Ci sono dei momenti in cui il flusso di esecuzione può scegliere tra diverse direzioni; In genere, questi salti sono subordinati al verificarsi di una condizione (che può risultare vera o falsa); Si parla di istruzioni condizionali. F. Messina Programmazione I 29

Diagrammi di flusso (4) Istruzioni condizionali. Es.: Condizione Falso Più sale? Falso Vero Vero F. Messina Programmazione I 30

Esempio Descrivere, mediante diagramma di flusso, un algoritmo che determini il massimo tra due numeri letti in input. F. Messina Programmazione I 31

Diagramma di flusso : Max Inizio X > Y Falso Leggi X Vero Stampa Y Leggi Y Stampa X Fine F. Messina Programmazione I 32

Esempio Descrivere, mediante diagramma di flusso, un algoritmo che determini se un numero letto in input è pari o dispari. F. Messina Programmazione I 33

Diagramma di flusso : Pari o Inizio Resto = 0 Falso Leggi N Vero Scrivi : N è dispari Dividi N per 2 Scrivi : N è pari Fine F. Messina Programmazione I 34

Esercizio Scrivere la ricetta del pollo alle mandorle utilizzando i diagrammi di flusso. Nota: dove è richiesta una ripetizione ad esempio fino a quando utilizzare un istruzione condizionale del tipo mostrato nella prossima diapositiva. F. Messina Programmazione I 35

Ripetizione o ciclo Il pollo è cotto? Falso Rosolare con vino Vero F. Messina Programmazione I 36

Programmazione I Fondamenti di programmazione ( Lezione II ) Notazione Lineare Strutturata Fabrizio Messina messina@dmi.unict.it www.dmi.unict.it/~messina

Esempio Descrivere, mediante diagramma di flusso, un algoritmo che calcoli il fattoriale di un numero intero positivo letto in input. F. Messina Programmazione I 38

Esempio : Fattoriale Inizio Leggi N Fatt Fatt * M M M +1 Fatt 1 M 1 Scrivi Fatt VERO M > N FALSO Fine F. Messina Programmazione I 39

Considerazioni I diagrammi a blocchi si rivelano : poco pratici, soggetti a errori, illeggibili se di notevole complessità. Per ovviare a tali inconvenienti si adotta la Notazione Lineare Strutturata (NLS) o pseudo-codice. F. Messina Programmazione I 40

Notazione Lineare Strutturata Tre costrutti fondamentali : Sequenza Selezione Iterazione. Inoltre, esiste un unico punto d ingresso ed un unico punto d uscita. F. Messina Programmazione I 41

Sequenza Istruzione 1 Istruzione 2 Istruzione 1; Istruzione 2; Istruzione n; Istruzione n F. Messina Programmazione I 42

Selezione (o condizione) Falso Cond izion e Vero Blocco 2 Blocco 1 if (Condizione) then else end if Blocco 1; Blocco 2; La clausola else può anche essere assente. F. Messina Programmazione I 43

Iterazione (o ciclo) Falso Cond izion e Vero while (Condizione) do Blocco; end while; Blocco F. Messina Programmazione I 44

F. Messina Programmazione I 45 Ricapitolando...

Risultato fondamentale TEOREMA (Böhm-Jacopini) : I tre costrutti fondamentali della NLS sono sufficienti a descrivere qualunque algoritmo. F. Messina Programmazione I 46

Esempio : Somma Inizio Z X+Y Leggi X Stampa Z Leggi Y Fine F. Messina Programmazione I 47

Esempio : Somma in NLS Inizio Leggi X Leggi Y Z X + Y Stampa Z Fine F. Messina Programmazione I 48

Esempio : Max Inizio X > Y Falso Leggi X Vero Stampa Y Leggi Y Stampa X Fine F. Messina Programmazione I 49

Esempio : Max in NLS Inizio Leggi X Leggi Y if (X > Y) then Stampa X else Stampa Y end if Fine F. Messina Programmazione I 50

Esempio : Numeri da 1 a N Inizio Leggi N M 0 while (M < N) do M M + 1 Stampa M end while Fine F. Messina Programmazione I 51

Esempio : Somma dei primi N numeri Inizio Leggi N i 0 S 0 while (i < N) do i i + 1 S S + i end while Stampa S Fine F. Messina 52

Esempio : Somma dei numeri pari minori di N Inizio Leggi N i 2 S 0 while (i < N) do S S + i i i + 2 end while Stampa S Fine F. Messina 53

Algoritmo di Euclide per il m.c.m. Inizio Leggi A, B MA A MB B while (MA <> MB) do if (MA > MB) then MB MB + B else MA MA + A end if end while Stampa mcm = MA Fine Es.: m.c.m. (3, 7) = 21 54 MA MB 3 7 6 9 14 12 15 21 18 21

Algoritmo di Euclide per il M.C.D. Inizio Leggi A, B if (A < B) then MB A MA B else MA A MB B end if while (MB<>0) do r MA%MB MA MB MB r end while stampa MA Es.: M.C.D. (21, 14) = 7 MA MB MA%MB 21 14 7 14 7 0 7 0 --- M.C.D.(21,14) = 7

Fine Programmazione I 56