Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Documenti analoghi
Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio

Diagrammi di flusso (Flow Chart)

Diagrammi di flusso (Flow Chart)

Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Fondamenti di Informatica.

Introduzione alla programmazione

Risoluzione di un problema

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

Elementi di Informatica e Programmazione

Caratteristiche di un calcolatore elettronico

CAPITOLO 3 - ALGORITMI E CODIFICA

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

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

Introduzione agli Algoritmi

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

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Rappresentazione con i diagrammi di flusso (Flow - chart)

Sistemi di Elaborazione delle Informazioni

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

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

LA METAFORA DELL UFFICIO

Il Concetto Intuitivo di Calcolatore. Esercizio. I Problemi e la loro Soluzione. (esempio)

Il Concetto Intuitivo di Calcolatore. Esercizio. I Problemi e la loro Soluzione. (esempio)

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

La Programmazione particolare insieme di azioni particolare tipologia di dati risolvere un problema

Algoritmi e soluzione di problemi

Introduzione all informatica

Informatica. Come si risolve un problema?

Informatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi

Corso di Matematica per la Chimica. Dott.ssa Maria Carmela De Bonis a.a

L ELABORATORE ELETTRONICO

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

Algoritmi. Andrea Passerini Conoscenze informatiche e relazionali Corso di laurea in Scienze dell Ingegneria Edile

LA METAFORA DELL UFFICIO

Algoritmi e Programmi

Pag. 1. La formalizzazione dell informazione: Dati e Diagrammi di Flusso. Codifica degli algoritmi

Introduzione alla programmazione strutturata

Dal problema a un programma comprensibile dal calcolatore. Il Progetto degli Algoritmi. Dall analisi del problema all esecuzione

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

ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE)

Sviluppo di programmi

Sviluppo di programmi

Computer. Capitolo 2. 05/04/2012 continuazione 1

Corso di Informatica. Problemi ed algoritmi. Ing Pasquale Rota

APPUNTI DI INFORMATICA

Programmazione. Dipartimento di Matematica. Ing. Cristiano Gregnanin. 29 febbraio Corso di laurea in Matematica

Cicli. S i a i = a 1 + a 2 + a a n

Problemi, algoritmi, calcolatore

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

L ELABORATORE ELETTRONICO!

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Dall algoritmo al calcolatore: concetti introduttivi. Algoritmo. Problema: consumo medio 9/27/2018. Fondamenti di Programmazione 3

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

CORSO DI PROGRAMMAZIONE E INFORMATICA GENERALE 1

Cosa è l Informatica?

Elaboratore Elettronico

Il linguaggio di programmazione Python

ALGORITMI: PROPRIETÀ FONDAMENTALI

LAVAGNA DI PROGRAMMA SPORTELLO UTENTE LAVAGNA DI LAVORO

ELEMENTI DI INFORMATICA L. Ing. Claudia Chiusoli

Il concetto di calcolatore e di algoritmo

Paolo Bison. Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09

Formalismi per la descrizione di algoritmi

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

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

o Introduzione agli algoritmi o Rappresentazione delle Informazioni o Architettura del calcolatore o Reti di Calcolatori

Elementi di Informatica. Introduzione. Cos è l informatica. Corso di Laurea in Ingegneria Biomedica aa 2003/2004. Ing.

Fondamenti di informatica

FONDAMENTI DI INFORMATICA

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

IL TEOREMA DI BOEHM-JACOPINI

Corso di Informatica di Base

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

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

MODULO 07. La soluzione dei problemi mediante gli algoritmi

Concetti Introduttivi. Il Computer

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio

Diagrammi di flusso - Flowcharts. E un formalismo che consente di rappresentare graficamente gli algoritmi

PROBLEMI E ALGORITMI VESPIA CATERINA LICEO CLASSICO AGLI ANGELI

INFORMATICA. Strutture iterative

Linguaggio Testuale. E un formalismo che consente di rappresentare gli algoritmi mediante semplici istruzioni in linguaggio «parlato»

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

La formalizzazione dell informazione: Dati e Diagrammi di Flusso

Studio degli algoritmi

Lez. 8 La Programmazione. Prof. Pasquale De Michele (Gruppo 2) e Raffaele Farina (Gruppo 1) 1

Sviluppo di programmi

ALGORITMI E SOLUZIONI DI PROBLEMI

Strutture di controllo

L uomo come esecutore di algoritmi

generalità concetti di base

Università di Salerno Corso di FONDAMENTI DI INFORMATICA Corso di Laurea Ingegneria. Docente : Ing. Secondulfo Giovanni Anno Accademico

INFORmazione+autoMATICA. Perché saperne di piu? Le fasi della programmazione. Cosa intendiamo per programmazione

L ELABORATORE ELETTRONICO

Transcript:

Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Algoritmi e Programmazione Stefano Cagnoni

Il problema di fondo Descrizione di un problema individuazione di una soluzione Quale è il giusto punto di partenza? Cioè, di quali dati abbiamo bisogno? Quali metodologie o tecniche utilizzare? In quale ordine eseguire le operazioni consentite da tali tecniche?

Variabili (richiamo) Costituiscono un astrazione della memoria, cioè tramite una variabile si fa riferimento ad una specifica area della memoria centrale. Una variabile è caratterizzata da: Un nome che la identifica Un valore modificabile che viene associato al nome Il risultato di un'espressione contenente variabili si ottiene sostituendo ad ogni variabile il suo valore. L'operazione di assegnazione ( var = expr ) consente di assegnare il valore dell'espressione expr alla variabile var, quindi di modificare il valore di var

Risoluzione di problemi Un ambiente di programmazione (come MATLAB) o applicazione di calcolo (come Excel) fornisce una serie di operatori di base e di funzioni per programmare il computer a calcolare la soluzione, se esiste, di un problema. Due casi Foglio di calcolo (Excel): ogni soluzione è basata su funzioni definibili come singole formule a partire dagli operatori e dalle funzioni fornite dall applicazione Linguaggio di programmazione (MATLAB): definizione di una procedura (algoritmo) traducibile in un programma utilizzando la sintassi del linguaggio.

Risoluzione di problemi Esempio di soluzione diretta mediante calcolo di una singola espressione (può essere anche molto complessa): Calcolo dell area di un rettangolo: Data la base B e l altezza H l area A si calcola con la formula A = B * H Ho a disposizione l operatore * (moltiplicazione) e lo uso per definire una funzione area(b, H) come prodotto delle due variabili B e H in cui inserisco i valori che descrivono il rettangolo che mi interessa.

Risoluzione di problemi Esempio di soluzione mediante algoritmo: Calcolo del massimo M fra tre numeri C, D, E: se C > D se C > E altrimenti M = C M = E altrimenti (cioè se D >= C) se D > E M = D altrimenti M = E

Algoritmo Dall'arabo al-khuwarizmi, e dal greco arithmós Un algoritmo è un metodo generale che risolve in un tempo finito e con una sequenza finita di passi qualsiasi istanza di un dato problema.

Algoritmo: esempio Problema generale: Calcolare la somma di un numero arbitrario N di numeri. Se sono in grado di fare la somma fra 2 numeri risolvo il problema per qualsiasi valore di N con una stessa sequenza di operazioni: Poni totale=0; Per N volte: somma un nuovo addendo a totale. Infatti, sommare un nuovo numero alla somma dei precedenti è ancora una somma fra due numeri! Ad ogni valore di N corrisponde una diversa istanza del problema generale, ma tutte le istanze possono essere risolte mediante lo stesso algoritmo

Algoritmo E possibile definire algoritmi anche per la risoluzione di problemi non informatici Esempi: Descrivere come raggiungere una destinazione Istruzioni per il montaggio di un mobile Istruzioni per la realizzazione di una torta Non sempre la soluzione di un problema può essere descritta tramite un algoritmo. Il calcolo di p non è un algoritmo (non ha fine) Il calcolo di p fino alla decima cifra decimale è un algoritmo

Codifica di un algoritmo Fase di descrizione (scrittura) di un algoritmo attraverso un insieme ordinato (sequenza) di codici (istruzioni, ciascuno dei quali rappresenta un operazione), appartenenti a un qualche linguaggio di programmazione, che specificano le azioni da compiere e l ordine in cui devono essere eseguite Il prodotto della codifica è un programma

Programma Testo scritto in accordo alla sintassi (insieme di regole sulla formazione delle espressioni in un linguaggio) e alla semantica (insieme di regole che consentono l interpretazione del significato del testo) di un linguaggio di programmazione Un programma rappresenta l insieme delle istruzioni che descrivono un processo computazionale, espresse in un qualche linguaggio Un processo trasforma un insieme di dati iniziali nei risultati finali mediante una successione di azioni elementari (operazioni)

Programma Un programma può non descrivere un algoritmo (basta che la sequenza di operazioni non sia finita, cioè che il programma non termini)... tuttavia può essere ugualmente molto utile Es. gestione di un semaforo: non ha fine poiché ripete indefinitamente la stessa sequenza

Esecuzione L esecuzione delle azioni nell ordine specificato dall algoritmo consente di ottenere i risultati che risolvono il problema a partire dai dati in ingresso algoritmo programma Metodo risolutivo Codifica del metodo in un linguaggio di programmazione

Algoritmo Un algoritmo deve avere le seguenti proprietà: Finitezza: deve essere composto da un numero finito di passi elementari. Non ambiguità (determinismo): i risultati non variano in funzione della macchina/persona che esegue l'algoritmo. Realizzabilità: deve essere eseguibile con le risorse a disposizione. Efficienza (auspicabile): deve eseguire il minimo numero possibile di operazioni

Algoritmo Per definire un algoritmo è necessario: Condurre un'attenta analisi del problema ed eventualmente suddividere il problema in sottoproblemi più piccoli. Individuare le informazioni disponibili in ingresso (input) e precisare le informazioni che devono essere prodotte dall elaborazione (output), cioè definire i dati di input e di output. Definire completamente e dettagliatamente la sequenza dei passi che portano alla soluzione.

Il crivello di Eratostene Si vogliono trovare tutti i numeri primi compresi fra 2 e n (in modo efficiente). 1. Si costruisce una sequenza ordinata dei numeri fra 2 e n. 2. Si estrae il primo numero dalla sequenza. E necessariamente un numero primo. 3. Si eliminano dalla sequenza tutti i multipli del numero estratto al passo 2. 4. Se la sequenza non è vuota si torna al passo 2, altrimenti si termina.

Il crivello di Eratostene Esempio : trovare i numeri primi compresi fra 2 a 20 Sequenza iniziale: 2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 2 è primo; lo elimino con tutti i suoi multipli: 3,5,7,9,11,13,15,17,19 3 è primo; lo elimino con tutti i suoi multipli: 5,7,11,13,17,19 5 è primo; lo elimino con tutti i suoi multipli: 7 11 13 17 (li estraggo allo stesso modo) 19 è primo, la sequenza è vuota, termino.

Diagrammi di flusso (Flow Chart) I diagrammi di flusso sono un formalismo grafico per descrivere gli algoritmi. I diagrammi di flusso visualizzano graficamente i passi da cui sono formati gli algoritmi e l ordine in cui devono essere eseguiti. Un diagramma di flusso è una descrizione formale, (cioè rispetta una precisa sintassi), più efficace e meno ambigua di una descrizione a parole.

Diagrammi di flusso Operazioni rappresentabili in un diagramma di flusso: Ingresso/Uscita dati (rappresentate come schede) Operazioni sui dati (rappresentate come rettangoli) Trasferimento di informazione (assegnazioni) Calcolo di espressioni aritmetiche e logiche Verifica di condizioni (rappresentate come rombi) Assunzione di decisioni o cicli (combinazioni di rettangoli e rombi) Se allora Ripeti per N volte Ripeti finché. Possono utilizzare costanti e variabili

Diagrammi di flusso Un diagramma di flusso è costituito da due tipi di entità: Nodi rappresentano le operazioni e gli stati di inizio e fine dell algoritmo Archi orientati (di solito in realtà sono segmenti di retta orientati secondo la direzione di una freccia) Collegano fra loro i nodi, rappresentando con frecce il flusso dei dati, cioè la sequenza delle operazioni: l istruzione contenuta in un nodo è seguita dall esecuzione dell operazione contenuta nel nodo a cui punta l arco uscente da esso Una struttura di questo tipo è detta grafo (orientato)

Tipi di Nodi Start Inizio Var1 Lettura dati (input) Var1 Espr1 Elaborazione / Assegnazione Stop Fine Var1 Scrittura dati (output) Sì No Espr1 = Espr2 Espr1 Espr2 Espr1 > Espr2 Espr1 Espr2 Espr1 < Espr2 Espr1 Espr2 Decisione

Esempio Start Inizio Var1 Leggi un valore (ad es. 10) che sarà assegnato alla variabile Var1 Var1 Stampa il contenuto di Var1 (stampa 10) Stop Fine

Esempio 2 Start Var1 Var1 Var1 + 1 Inizio Leggi un valore (ad es. 10) e inseriscilo nella locazione di memoria corrispondente alla variabile Var1 Aggiungi 1 a quel valore Var1 Stop Stampa il nuovo valore (stampa il contenuto di Var1 cioè 11) Fine

Esempio 3 Start Inizio Var1 Leggi Var1 Var1 > 10 No Var1 Var1 + 1 Se Var1 > 10 stampa Var1 Sì Altrimenti Var1 incrementa di 1 Var1 e poi stampa Var1 Stop Fine

Strutture di Controllo Sì C No C No O O1 O2 O Sì No C Sì If - Then - Else Se C è vera esegue l operazione (o sequenza) O1, altrimenti esegue O2 Ciclo While Ciclo For Ripete una stessa operazione (o sequenza) O finché la condizione C resta vera Ciclo Repeat - Until Ripete una stessa operazione (o sequenza) O finché la condizione C non diventa vera

Programmazione Strutturata Si compone di sequenze di azioni, decisioni (if then, if then else) e cicli (do-while, repeat until). Ogni diagramma ha esattamente un ingresso ed una uscita Ogni azione può essere Un operazione semplice Un azione composta da altri diagrammi strutturati

Esempio: Somma di due Numeri Start Var1 Var2 Somma Var1 +Var2 Somma Stop

Esempio: Somma di N Numeri Start No I < N Sì Var N Somma Somma + Var I 0 Somma 0 Somma I I + 1 Stop

Esercizi Sulla base di quanto visto per la somma di N numeri Definire un algoritmo per il calcolo del prodotto di N numeri Descriverlo attraverso un opportuno diagramma di flusso Descrivere il diagramma di flusso di un algoritmo che calcola l area di triangoli o rettangoli: Inizialmente il programma deve chiedere quanti lati ha la figura di cui si vuole calcolare l area Poi chiede base e altezza e calcola l area mediante la giusta formula per la figura considerata.