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

Documenti analoghi
Algoritmi. Andrea Passerini Informatica. Algoritmi

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

Diagrammi a blocchi 1

Diagrammi a blocchi 1

Analisi e Programmazione

Lezione 5. La macchina universale

Analisi strutturata 1

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

CAPITOLO 3 - ALGORITMI E CODIFICA

Analisi e programmazione 1

Introduzione alla programmazione

ELEMENTI DI INFORMATICA L. Ing. Claudia Chiusoli

Istruzioni, algoritmi, linguaggi

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

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

PROBLEMI E ALGORITMI VESPIA CATERINA LICEO CLASSICO AGLI ANGELI

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

L ELABORATORE ELETTRONICO

Caratteristiche di un calcolatore elettronico

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

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

Corso di Informatica. Problemi ed algoritmi. Ing Pasquale Rota

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

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

Analisi e programmazione Gli algoritmi

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Pseudo codice. Pseudo codice, Paolo Bison, FI07, p.1 / Pseudo codice, Paolo Bison, FI07, p.3

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

Corso di Informatica di Base

Blocchi di base. Schemi: Sequenza Selezione Iterazione. Flow chart strutturati Sequenza Selezione Iterazione. Teorema di Bohm e Jacopini

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

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

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

DISPENSE DI PROGRAMMAZIONE

Come ragiona il computer

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Dispensa di Informatica II.1

Fondamenti di Informatica 4. Gli algoritmi

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

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

Sistemi di Elaborazione delle Informazioni

Fondamenti di Informatica

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

INFORMATICA DI BASE Linguaggio C Prof. Andrea Borghesan

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

L ELABORATORE ELETTRONICO!

Pseudo codice. Paolo Bison. Fondamenti di Informatica 1 A.A. 2003/04 Università di Padova. Pseudo codice, Paolo Bison, A.A , p.

ALGORITMI: PROPRIETÀ FONDAMENTALI

10 STRUTTURE DI CONTROLLO REPEAT E WHILE. Strutture di controllo e variabili strutturate

Risoluzione di un problema

Introduzione all informatica

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

Introduzione agli Algoritmi

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

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

Fabrizio Messina, Marzio Pennisi

Programmazione strutturata

Flow-chart. Introduzione agli algoritmi e ai diagrammi a blocchi.

PROBLEMI ALGORITMI E PROGRAMMAZIONE

Elaboratore Elettronico

ALGORITMI E SOLUZIONI DI PROBLEMI

Lezione 8. La macchina universale

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

ALGORITMI E PROGRAMMAZIONE STRUTTURATA. Prof R. Bresolin a.s

Linguaggi, Traduttori e le Basi della Programmazione

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

La formalizzazione dell informazione: Dati e Diagrammi di Flusso

ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE)

Corso di Informatica

Sviluppo di programmi

L uomo come esecutore di algoritmi

MODULO 07. La soluzione dei problemi mediante gli algoritmi

Modulo 1 Concetti di base della Tecnologia dell Informazione

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

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

Rappresentazione degli algoritmi

LA METAFORA DELL UFFICIO

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

Rappresentazione con i diagrammi di flusso (Flow - chart)

CORSO DI INFORMATICA Maria Grazia Celentano

Fondamenti di Algoritmi

Sviluppo di programmi

L ELABORATORE ELETTRONICO

Introduzione alla Programmazione. Informatica 1 / 33

A.A. 2018/2019. CPU e Linguaggio Macchina FONDAMENTI DI INFORMATICA E PROGRAMMAZIONE. Docente Prof. Raffaele Pizzolante

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

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

PROGRAMMAZIONE (Corso A)

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

LA METAFORA DELL UFFICIO

Introduzione agli Algoritmi 4. Problemi. Dal Problema alla Soluzione

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

Sommario Obiettivo della programmazione e ciclo di sviluppo di programmi. Programmi. Ciclo di sviluppo di programmi. Obiettivo

Che cosa si intende per INFORMATICA?

Università degli Studi di Pisa

Corso di Programmazione Dati e Istruzioni. Comunicazione dell algoritmo all elaboratore. Programmazione. Dott. Pasquale Lops

Come ragiona il computer. Problemi e algoritmi

Transcript:

Algoritmi Andrea Passerini passerini@dsi.unifi.it Conoscenze informatiche e relazionali Corso di laurea in Scienze dell Ingegneria Edile

Elaboratore Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni sui dati digitale l informazione è rappresentata in forma numerica discreta elettronica la logica di manipolazione e la memorizzazione sono implementate con tecnologie di tipo elettronico (piuttosto che di tipo meccanico) automatica è in grado di eseguire una successione di operazioni in modo autonomo (cioè senza intervento di un operatore umano)

Programmi le operazioni sono descritte sotto forma di un programma il programma e i dati su cui deve operare sono registrati in un dispositivo di memoria un dispositivo detto unità di controllo legge il programma e lo esegue su i dati questo modo di operare è detto architettura alla Von Neumann

Macchina universale Un programma è una descrizione delle operazioni che devono essere eseguite per risolvere una certa classe di problemi (e.g. trovare il maggiore tra due numeri) Un programma eseguito su dei dati in ingresso risolve lo specifico problema definito dai dati, nella classe di problemi trattati dal programma stesso (e.g. il maggiore tra 3 e 7 è 7) Un programma deve essere in una forma che sia rappresentabile nella memoria dell elaboratore e comprensibile dall elaboratore stesso. L elaboratore è una macchina universale poiché può essere usato per risolvere qualsiasi problema la cui soluzione può essere descritta sotto forma di programma.

Algoritmo Il termine algoritmo deriva dal nome di un matematico arabo al-khuwarizmi (IX sec d.c.) Definizione: un algoritmo è una successione ordinata di istruzioni (o passi) che definiscono le operazioni da eseguire su dei dati per risolvere una classe di problemi Un programma è la descrizione di un algoritmo in una forma comprensibile (ed eseguibile) dall elaboratore

Esempio: calcolo del M.C.D. di due numeri interi a,b positivi Come calcolare il M.C.D. senza provare tutti i divisori interi di a e b? Supponiamo che a > b. Calcoliamo la divisione intera di a con b, ossia a q + r = b con q ed r quoziente e resto della divisione. Se a è divisibile per b (r = 0), il M.C.D. è b: M.C.D.(a, b) = b se r = 0 Altrimenti, il M.C.D. di a e b è anche divisore di r: M.C.D.(a, b) = M.C.D.(b, r) se r 0

Esempio: algoritmo di Euclide per M.C.D 1. inizio dell algoritmo; 2. acquisisci i valori di a e b dall esterno; 3. se b > a scambia tra loro i valori di a e b; 4. calcola il resto r della divisione intera di a con b; 5. se r = 0 allora comunica b all esterno e vai al passo 7; 6. se r 0 sostituisci il valore di a con il valore di b ed il valore di b con il valore di r e vai al passo 4; 7. fine dell algoritmo.

Proprietà degli algoritmi Esistono dei precisi requisiti che devono essere soddisfatti affinchè un determinato elenco di istruzioni possa essere considerato un algoritmo: Finitezza Ogni algoritmo deve essere finito, ossia ogni istruzione deve essere eseguita in un intervallo finito di tempo ed un numero finito di volte. Generalità Ogni algoritmo deve fornire soluzione per tutti i problemi appartenenti ad una data classe, ed essere applicabile a tutti i dati apparententi al suo insieme di definizione o dominio producendo risultati che appartengono al suo insieme di arrivo o codominio. Non ambiguità Devono essere definiti in modo univoco e non ambiguo i passi successivi da eseguire per ottenere i risultati voluti, evitando paradossi e contraddizioni.

Descrizione degli algoritmi Il linguaggio naturale non è adatto a descrivere gli algoritmi in quanto ambiguo e ridondante. Le proposizioni contenute in un algoritmo sono costituite da due componenti fondamentali: istruzioni la descrizione delle operazioni da eseguire dati la descrizione degli oggetti su cui eseguire le operazioni

Dati costanti mantengono lo stesso valore durante l esecuzione dell algoritmo e per esecuzioni diverse dell algoritmo variabili sono costituite da coppie nome,valore. Il nome della variabile non cambia e la identifica all interno dell algoritmo. Il valore deve appartenere ad un insieme detto insieme di definizione, che è l insieme di tutti i possibili valori che la variabile può assumere. All insieme di definizione sono associate delle regole di manipolazione per operare sui suoi elementi (e.g. le operazioni aritmetiche su interi positivi).

Dati vettori sono variabili contenenti insiemi di valori (detti elementi del vettore) Tutti i valori devono appartenere allo stesso insieme di definizione. Il numero di elementi contenuti in un vettore è detto dimensione del vettore. Ogni elemento è indicato tramite un indice che ne identifica la posizione all interno del vettore (e.g. V(1) è il primo elemento del vettore V, V(n) l ultimo se n è la dimensione del vettore).

Dati matrici sono generalizzazioni dei vettori ad un numero arbitrario di dimensioni. Nelle matrici a due dimensioni gli elementi vengono individuati tramite due indici, detti riga e colonna. Ad esempio M(3,4) indica l elemento contenuto nella terza riga e nella quarta colonna della matrice M.

Istruzioni istruzione di assegnazione imposta il valore corrente di una variabile. Si indica con nome di variabile espressione espressione è una stringa di costanti, nomi di variabili ed operazioni. nome di variabile indica la variabile il cui valore deve essere impostato al risultato di espressione I valori delle variabili contenute nell espressione rimangono inalterati.

Istruzioni istruzioni operative producono risultati una volta eseguite (e.g. l istruzione di assegnazione) istruzioni di controllo controllano il verificarsi o meno di condizioni specificate e determinano quali istruzioni eseguire in base al risultato del controllo. istruzione di inizio esecuzione indica quale istruzione dell algoritmo deve essere eseguita per prima istruzione di fine esecuzione indica la fine dell esecuzione dell algoritmo

Istruzioni istruzioni di ingresso/uscita indicano una trasmissione di dati o messaggi tra l algoritmo e l ambiente esterno. Si dividono in: istruzioni di ingresso (lettura) l algoritmo riceve dei dati dall ambiente esterno istruzioni di uscita (scrittura) l algoritmo trasmette dei dati all ambiente esterno

Diagrammi a blocchi (flow chart) E un linguaggio formale di tipo grafico per rappresentare gli algoritmi Attraverso il diagramma a blocchi si può indicare l ordine di esecuzione delle istruzioni. Un particolare simbolo grafico detto blocco elementare è associato ad ogni tipo di istruzione elementare. I blocchi sono collegati tra loro tramite frecce che indicano il susseguirsi delle istruzioni

Blocchi elementari begin leggi X A blocco iniziale blocco di lettura blocco azione scrivi end X falso C vero blocco finale blocco di scrittura blocco di controllo

Diagramma a blocchi Un diagramma a blocchi è un insieme di blocchi costituito da: un blocco iniziale un numero finito n 1 di blocchi azione e/o blocchi di lettura/scrittura un numero finito m 0 di blocchi di controllo un blocco finale ciascun blocco elementare soddisfa le condizioni di validità

Condizioni di validità ciascun blocco azione, lettura/scrittura ha una sola freccia entrante e una sola freccia uscente ciascun blocco di controllo ha una sola freccia entrante e due uscenti ciascuna freccia entra in un blocco o si innesta su una altra freccia ciascun blocco è raggiungibile dal blocco iniziale il blocco finale è raggiungibile da qualsiasi altro blocco

Analisi strutturata Analisi volta alla stesura di descrizioni di algoritmi tramite diagrammi a blocchi strutturati, più facilmente comprensibili e modificabili Un diagramma a blocchi è strutturato se: è costituito da un blocco iniziale, un blocco di azione o lettura/scrittura ed un blocco finale è costituito da blocchi collegati tramite i seguenti schemi di flusso strutturato: schema di sequenza schema di selezione schema di iterazione

Schema di sequenza Due o più schemi di flusso sono eseguiti uno di seguito all altro begin S 1 S 2 Nota Lo schema è strutturato se e solo se sono strutturati gli schemi S 1 ed S 2. end

Schema di selezione Contiene un blocco di controllo che opera in uno dei seguenti modi: Nota Caso 1: subordina l esecuzione di uno schema di flusso S V alla soddisfazione della condizione Caso 2: permette di scegliere quale schema di flusso eseguire tra due schemi indicati S V ed S F. Lo schema è strutturato se e solo se sono strutturati gli schemi S V ed S F.

Schema di selezione Caso 1 Caso 2 begin begin falso C vero falso C vero S V S F S V end end

Schema di iterazione Permette di eseguire più volte un determinato schema di flusso S. Iterazione per vero lo schema S viene eseguito finchè una condizione C è vera Iterazione per falso lo schema S viene eseguito finchè una condizione C è falsa Nota Lo schema è strutturato se e solo se è strutturato lo schema S.

Schema di iterazione Iterazione per vero Iterazione per falso begin begin S S C vero falso C end end

Schema di iterazione Detto anche ciclo o loop. Si distingue anche per la posizione della condizione di fine ciclo: controllo in testa la condizione viene verificata prima di eseguire le istruzioni della iterazione (che possono anche non essere mai eseguite) controllo in coda la condizione viene verificata dopo aver eseguito le istruzioni della iterazione (che vengono eseguite sempre almeno una volta). Viene in genere preceduto da una sequenza di istruzioni di inizalizzazione che assegnano un valore iniziale ad alcune variabili utilizzate nel ciclo.

Schema di iterazione Un ciclo è detto enumerativo quando è noto a priori il numero di volte che deve essere eseguito si usa la tecnica del contatore per controllarne l esecuzione: si usa cioè una variabile detta contatore del ciclo che viene incrementata (o decrementata) fino a raggiungere un valore prefessato Un ciclo è indefinito quando non è noto a priori il numero di volte che deve essere eseguito questo accade quando la condizione di fine ciclo dipende dal valore di una o più variabili che o dipendono dall interazione con l esterno o vengono modificate all interno dell iterazione in modo complesso

Esempio: algoritmo di Euclide begin leggi a, b r a mod b falso b > a vero b r x a a b a b falso r = 0 r a mod b b x vero scrivi b end

Esempio: massimo in un vettore di 100 numeri iterazione per falso begin leggi V iterazione per vero begin leggi V i 1 i 1 max V(i) max V(i) falso i i+1 V(i) > max vero max V(i) falso i < 100 vero i i+1 V(i) > max vero falso i = 100 vero scrivi max end scrivi max end max V(i)

Teorema di Böhm-Jacopini Ogni diagramma a blocchi non strutturato è sempre trasformabile in un diagramma a blocchi strutturato ad esso equivalente Due diagrammi sono equivalenti se partendo dagli stessi dati iniziali producono gli stessi risultati