Elementi di Informatica



Documenti analoghi
1 introdurre le monete per l importo necessario. 2 selezionare la quantità di zucchero. 3 selezionare la bevanda desiderata

Un algoritmo ben fatto deve terminare dopo un numero finito

Descrizione di un algoritmo

GESTIONE INFORMATICA DEI DATI AZIENDALI

3. La sintassi di Java

Prof. Giuseppe Chiumeo. Avete già studiato che qualsiasi algoritmo appropriato può essere scritto utilizzando soltanto tre strutture di base:

FONDAMENTI di INFORMATICA L. Mezzalira

INFORMATICA 1 L. Mezzalira

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

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

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a prof.

APPUNTI SUL LINGUAGGIO DI PROGRAMMAZIONE PASCAL

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Progetto Lauree Scientifiche Liceo Classico L.Ariosto, Ferrara Dipartimento di Matematica Università di Ferrara 24 Gennaio 2012

Metodologie di programmazione in Fortran 90

Lezione 8. La macchina universale

Introduzione alla programmazione in C

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.

Funzioni in C. Violetta Lonati

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

INFORMATICA GENERALE Prof. Alberto Postiglione Dipartimento Scienze della Comunicazione Università degli Studi di Salerno

Appunti di Sistemi Elettronici

RAPPRESENTAZIONE GRAFICA DEGLI ALGORITMI

Laboratorio di Informatica

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

Corso di INFORMATICA 2 (Matematica e Applicazioni)

Sommario. Definizione di informatica. Definizione di un calcolatore come esecutore. Gli algoritmi.

Cenni su algoritmi, diagrammi di flusso, strutture di controllo

MATLAB. Caratteristiche. Dati. Esempio di programma MATLAB. a = [1 2 3; 4 5 6; 7 8 9]; b = [1 2 3] ; c = a*b; c

+ / operatori di confronto (espressioni logiche/predicati) / = > < Pseudo codice. Pseudo codice

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Linguaggi e Paradigmi di Programmazione

Arduino: Programmazione

Introduzione ai tipi di dato astratti: applicazione alle liste

Gli algoritmi: definizioni e proprietà

Introduzione. Informatica B. Daniele Loiacono

La selezione binaria

Appunti del corso di Informatica 1 (IN110 Fondamenti) 4 Linguaggi di programmazione

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

DAL DIAGRAMMA AL CODICE

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Introduzione a Visual Basic Lezione 1 Concetti base e istruzioni condizionali

Utilizzo del linguaggio Basic utilizzando l interfaccia di Excel Silvia Patacchini

PIANO DI LAVORO DEI DOCENTI

Fondamenti di Informatica PROBLEMI E ALGORITMI. Fondamenti di Informatica - D. Talia - UNICAL 1

I Problemi e la loro Soluzione. Il Concetto Intuitivo di Calcolatore. Risoluzione di un Problema. Esempio

3. Programmazione strutturata (testo di riferimento: Bellini-Guidi)

I file di dati. Unità didattica D1 1

Corso di Informatica

Algoritmi, dati e programmi

Il software e la programmazione

La programmazione. Sviluppo del software

Obiettivi d esame PHP Developer Fundamentals on MySQL Environment

Richiesta pagina PHP (es: index.php)

ALGEBRA DELLE PROPOSIZIONI

Concetto di Funzione e Procedura METODI in Java

GUIDA BASE DI PASCAL

LINGUAGGI DI PROGRAMMAZIONE

Introduzione al MATLAB c Parte 2

DAL PROBLEMA AL CODICE: ATTRAVERSO LO PSEUDOCODICE

OBIETTIVI SPECIFICI DI APPRENDIMENTO

Fasi di creazione di un programma

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1

Algebra Booleana ed Espressioni Booleane

Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C

ISTITUTO TECNICO ECONOMICO MOSSOTTI

Corso di Laurea in INFORMATICA

Lezione 2 OPERAZIONI ARITMETICHE E LOGICHE ARCHITETTURA DI UN ELABORATORE. Lez2 Informatica Sc. Giuridiche Op. aritmetiche/logiche arch.

Nozione di algoritmo. Gabriella Trucco

Software di base. Corso di Fondamenti di Informatica

EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO

Capitolo Quarto...2 Le direttive di assemblaggio di ASM Premessa Program Location Counter e direttiva ORG

LICEO SCIENTIFICO "LEONARDO DA VINCI" - RC PROGRAMMA DI INFORMATICA A.S. 2014/15 - CLASSE: I Q - Indirizzo Scienze applicate Prof Miritello Rita

Corso Base. Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO

- Algoritmi ed esecutori di algoritmi - ALGORITMI MACCHINA DI VON NEUMANN

Strutturazione logica dei dati: i file

Linguaggi di programmazione

Il calcolatore oggi : UN SISTEMA DI ELABORAZIONE

Introduzione alla Programmazione e Applicazioni per la Finanza M2 (Prodotti Derivati) Lezione 9

Come ragiona il computer. Problemi e algoritmi

Programmazione in Java e gestione della grafica (I modulo) Lezione 1: Presentazione corso

Semantica dei programmi. La semantica dei programmi è la caratterizzazione matematica dei possibili comportamenti di un programma.

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

Algoritmi di Ricerca. Esempi di programmi Java

Matematica in laboratorio

Linguaggi per COMUNICARE. Il linguaggio è un sistema codificato di segni che consente la comunicazione, intesa come scambio di informazioni

Linguaggi di programmazione

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione

(Esercizi Tratti da Temi d esame degli ordinamenti precedenti)

Organizzazione degli archivi

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1


10 - Programmare con gli Array

Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP

Algoritmi. Maurizio Palesi. Maurizio Palesi 1

3) Il seguente numerale A1F0 in base 16 a quale numero in base 10 corrisponde?

Definizione di nuovi tipi in C

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

Elementi di Architettura e Sistemi Operativi

Transcript:

Università degli Studi di Udine Facoltà di Ingegneria CORSO DI LAUREA IN SCIENZE dell ARCHITETTURA Elementi di Informatica Algoritmi, e Programmi D. Gubiani 29 marzo 2010 D. Gubiani Algoritmi, e Programmi 1

Variabili Esempi di Algoritmi Formalismi per la Codifica Problema: Prendere un Caffè al Distributore 1 introdurre le monete per l importo necessario 2 selezionare la quantità di zucchero 3 selezionare la bevanda desiderata 4 attendere che il distributore eroghi la bevanda 5 ritirare il resto 6 ritirare la bevanda D. Gubiani Algoritmi, e Programmi 2

Algoritmo Algoritmi Variabili Esempi di Algoritmi Formalismi per la Codifica Un algoritmo è la descrizione della soluzione di un problema espressa come un insieme di istruzioni che operando sui dati iniziali permette di ottenere il risultato che costituisce la soluzione del problema Se il problema è complesso può essere scomposto in sottoproblemi, detti step Un algoritmo ben fatto deve terminare dopo un numero finito di passi D. Gubiani Algoritmi, e Programmi 3

Variabili Esempi di Algoritmi Formalismi per la Codifica dal Problema all Algoritmo D. Gubiani Algoritmi, e Programmi 4

Variabili Esempi di Algoritmi Formalismi per la Codifica Classe di Problemi e Variabili Un algoritmo non risolve un unico problema ma una classe di problemi strutturalmente equivalenti, in cui cambiano solo i dati di partenza Per questo motivo le istruzioni di un algoritmo fanno riferimento non direttamente ai valori ma a delle variabili, il cui valore può variare a seconda della situazione Una variabile può essere intesa come un contenitore con un nome, che la identifica univocamente, e un valore, che corrisponde in ogni istante al dato contenuto In alcune situazione, ad ogni valore è associato anche un tipo - permette di definire l insieme dei valori che la variabile può assumere valori D. Gubiani Algoritmi, e Programmi 5

Operazioni su Variabili Variabili Esempi di Algoritmi Formalismi per la Codifica Assegnamento: corrisponde a introdurre un valore nel contenitore della variabile identificata dal nome, tale valore sostituisce il valore precedente - nomevariavile valore Espressioni su variabili: il valore contenuto nelle variabili viene utilizzato per calcolare il risultato dell espressione Esempi: - x 3 - y x + 1 - y y x D. Gubiani Algoritmi, e Programmi 6

Variabili Esempi di Algoritmi Formalismi per la Codifica Maggiore fra 2 Numeri, x e y Soluzione possibile basata sull osservazione che x è maggiore di y se x y è maggiore di 0 1 leggere il primo valore dall esterno e assegnarlo alla variabile x 2 leggere il secondo valore dall esterno e assegnarlo alla variabile y 3 calcolare la differenza fra x e y e assegnarla alla variabile d (d x y) 4 valutare se d è maggiore di 0: se è vero passare al passo 6, se è falso passare al passo 5 5 restituire il numero maggiore è seguito dal contenuto di y e passare al passo 7 6 restituire il numero maggiore è seguito dal contenuto di x 7 terminare l esecuzione D. Gubiani Algoritmi, e Programmi 7

Variabili Esempi di Algoritmi Formalismi per la Codifica Fattoriale di un Numero (Soluzione Iterativa) n! = n (n 1)... 2 1 1 leggere il valore dall esterno e assegnarlo alla variabile n 2 assegnare alla variabile fatt il valore 1 (fatt 1) 3 se n = 1, passare al passo 7 4 assegnare alla variabile fatt il valore della variabile stessa moltiplicato per n (fatt fatt n) 5 decrementare di 1 la variabile n (n n 1) 6 passare al passo 3 7 restituire il contenuto di fatt 8 terminare l esecuzione D. Gubiani Algoritmi, e Programmi 8

Variabili Esempi di Algoritmi Formalismi per la Codifica Fattoriale di un Numero (Soluzione Ricorsiva) { 1 se n 1 n! = n (n 1)! se n > 1 (1) 1 leggere il valore dall esterno e assegnarlo alla variabile n 2 se n = 1, vai al passo 4 3 restituire n FATTORIALE(n 1) e passare al passo 5 4 restituire 1 5 terminare l esecuzione D. Gubiani Algoritmi, e Programmi 9

Variabili Esempi di Algoritmi Formalismi per la Codifica Rappresentazione mediante PseudoCodice Una metodologia comunemente utilizzata per descrivere algoritmi è la pseudocodifica: un linguaggio più vicino possibile a quello naturale - codifica di un insieme di istruzioni elementari - indentazione D. Gubiani Algoritmi, e Programmi 10

Variabili Esempi di Algoritmi Formalismi per la Codifica PseudoCodice: Assegnamento e Condizionale Assegnamento: - assegna alla variabile n il valore v - n v Condizionale: - se la condizione A è vera allora esegui B (altrimenti esegui C) - if A then B [else C] D. Gubiani Algoritmi, e Programmi 11

PseudoCodice: Cicli Variabili Esempi di Algoritmi Formalismi per la Codifica Ciclo while: - finché A è vera esegui B - while (A) do {B} Ciclo for: - ripeti j i + 1 volte B - for cont i to j do {B} D. Gubiani Algoritmi, e Programmi 12

Variabili Esempi di Algoritmi Formalismi per la Codifica Rappresentazione mediante Diagrammi di Flusso Un linguaggio formale grafico spesso utilizzato per la codifica degli algoritmi è costituito dai diagrammi di flusso - insieme di blocchi che rappresentano le strutture comunemente utilizzate legate fra di loro da frecce che ne indicano l ordine di esecuzione D. Gubiani Algoritmi, e Programmi 13

Variabili Esempi di Algoritmi Formalismi per la Codifica Maggiore fra 2 Numeri, x e y - 1 MAGGIORE read x read y d x y if (d > 0) then { return x } else { return y } D. Gubiani Algoritmi, e Programmi 14

Variabili Esempi di Algoritmi Formalismi per la Codifica Maggiore fra 2 Numeri, x e y - 2 MAGGIORE(x, y) d x y if (d > 0) then { return x } else { return y } D. Gubiani Algoritmi, e Programmi 15

Variabili Esempi di Algoritmi Formalismi per la Codifica Fattoriale di un Numero (Sol. Iterativa) - 1 FATTORIALE(n) fatt 1 while (n > 1) do { fatt fatt n n n 1 } return fatt D. Gubiani Algoritmi, e Programmi 16

Variabili Esempi di Algoritmi Formalismi per la Codifica Fattoriale di un Numero (Sol. Iterativa) - 2 FATTORIALE(n) fatt 1 i 2 while (i n) do { fatt fatt i i i + 1 } return fatt D. Gubiani Algoritmi, e Programmi 17

Variabili Esempi di Algoritmi Formalismi per la Codifica Fattoriale di un Numero (Sol. Ricorsiva) FATTORIALE(n) if (n > 1) then { return n FATTORIALE(n 1) } else{ return 1 } D. Gubiani Algoritmi, e Programmi 18

Algoritmi Vettori Al crescere della complessità degli algoritmi l impiego delle singole variabili diventa inefficiente Esempio: determinare il valore massimo fra 100 numeri - bisognerebbe definire 100 variabili distinte da confrontare due a due Strutture dati: aggregati organizzati di più variabili D. Gubiani Algoritmi, e Programmi 19

Diverse Vettori Strutture dati statiche: - vettori e matrici - record Strutture dati dinamiche: - liste - code e pile - alberi e grafi D. Gubiani Algoritmi, e Programmi 20

Vettori (array) Algoritmi Vettori Un vettore (array) è un insieme ordinato di n elementi dello stesso tipo Una vettore è identificato da un nome v e ogni elemento è individuato univocamente da un indice i che indica la sua posizione - v[i] con i {1..n} v[1] v[2]... v[n 1] v[n] D. Gubiani Algoritmi, e Programmi 21

Ordinamento di n numeri Vettori INPUT: sequenza di n numeri (a 1, a 2...a n ) 9 5 1 2 7 OUTPUT: permutazione degli elementi a 1, a 2...a n tali che a 1 a 2... a n 1 2 5 7 9 D. Gubiani Algoritmi, e Programmi 22

Insertion Sort Algoritmi Vettori INSERTION SORT (A) for j 2 to length(a) { key A[j] i j 1 while ((i > 0) and (A[i] > key)) do { A[i + 1] A[i] i i + 1 } A[i + 1] key } D. Gubiani Algoritmi, e Programmi 23

Merge Sort Algoritmi Vettori MERGE SORT (A, p, r) if (p < r) then { q int((p + r)/2) MERGE SORT (A, p, q) MERGE SORT (A, q + 1, r) MERGE(A, p, q, r) } D. Gubiani Algoritmi, e Programmi 24

Per eseguire un algoritmo su un calcolatore è necessario descriverlo in un linguaggio formale, chiamato linguaggio di programmazione, interpretabile dal calcolatore stesso L algoritmo è così tradotto in un programma D. Gubiani Algoritmi, e Programmi 25

Processo per la Creazione dei Programmi D. Gubiani Algoritmi, e Programmi 26

Diversi Linguaggi di Programmazione - 1 linguaggi interpretati: il testo di un programma scritto è elaborato da un interprete durante l esecuzione del programma stesso: l interprete legge un istruzione, la traduce in un insieme di istruzioni macchina (il linguaggio macchina) direttamente eseguibili dalla CPU del calcolatore, poi passa a leggere l istruzione successiva, la traduce, e cosí via. - perl, php,... linguaggi compilati: prevedono la compilazione, ossia la traduzione dell intero programma in linguaggio macchina, prima dell esecuzione del programma stesso - C, C++, Visual Basic,... D. Gubiani Algoritmi, e Programmi 27

Diversi Linguaggi di Programmazione - 2 Un linguaggio a metà strada tra queste metodologie è Java - il codice sorgente viene compilato in un formato intermedio (chiamato bytecode), il quale a sua volta viene interpretato dalla Java Virtual Machine (JVM) D. Gubiani Algoritmi, e Programmi 28

Algoritmi è un linguaggio di programmazione compilativo Alcune caratteristiche: - creato da Niklaus Wirth per scopi didattici - chiamato in onore del matematico e filosofo francese Blaise, inventore della prima macchina calcolatrice automatica - prima implementazione del linguaggio divenne operativa nel 1970, ma raggiunse una discreta diffusione nel campo industriale nel 1973 - la sua evoluzione orientata ad oggetti è il Delphi - sintassi chiara e rigida - diversi compilatori gratuiti: Free, Lazarus, Dev- D. Gubiani Algoritmi, e Programmi 29

Struttura generale di un Programma Sezione dell Intestazione: specifica il nome del programma Sezione delle Dichiarazioni: indicazione delle variabili con la specifica del relativo tipo di dato (insieme dei valori che la variabile può assumere) Sezione Esecutiva: programma vero e proprio D. Gubiani Algoritmi, e Programmi 30

Tipi di Dato Algoritmi I tipi di dato determinano l insieme dei valori che una variabile può assumere: - byte: numeri interi positivi su 1 byte - word: numeri interi positivi su 2 byte - shortint: numeri interi su 1 byte - integer: numeri interi su 2 byte - longint: numeri interi su 4 byte - real: numeri reali su 6 byte - boolean: valori booleani (1 bit) - char: caratteri (1 byte) - string: sequenza di caratteri (dimensione variabile a partire da 10 byte) D. Gubiani Algoritmi, e Programmi 31

Dichiarazione delle Variabili e Assegnamento I programmi richiedono la dichiarazione delle variabili con la specifica del relativo tipo di dato nella sezione var Esempi di dichiarazioni: x : real; # dichiarazione di una variabile di tipo reale y1, y2 : integer; # dichiarazione di due variabili di tipo intero c : char; # dichiarazione di una variabili di tipo carattere Esempi di assegnamento: x := 10, 5; y1 := y2 10; c := c ; D. Gubiani Algoritmi, e Programmi 32

Operatori Aritmetici e Logici Operatori aritmetici: - + addizione - - sottrazione - moltiplicazione - / divisione - DIV quoziente della divisione tra interi - MOD resto della divisione tra interi Operatori logici - OR disgiunzione logico - AND congiunzione logico - NOT negazione logica D. Gubiani Algoritmi, e Programmi 33

Operatori di Confronto = uguale a <> diverso da > maggiore di >= maggiore o uguale a < minore <= minore o uguale a D. Gubiani Algoritmi, e Programmi 34

Alcuni Controlli di Flusso: Condizionale Sintassi: IF condizione THEN istruzione1 ELSE istruzione2; Esempio: incrementa di 1 il valore di a se b è maggiore di 0, altrimenti lo decrementa di 1 if b > 0 then a := a + 1 else a := a 1; D. Gubiani Algoritmi, e Programmi 35

Alcuni Controlli di Flusso: Ciclo WHILE Sintassi: WHILE condizione DO istruzione; Esempio: calcola la potenza n-esima di 2 (n 0) x := 1; while n > 0 do BEGIN x := x 2; n := n 1 END; D. Gubiani Algoritmi, e Programmi 36

Alcuni Controlli di Flusso: Ciclo REPEAT Sintassi: REPEAT istruzione UNTIL condizione; Esempio: calcola la potenza n-esima di 2 (n 1) x := 1; repeat x := x 2; n := n 1 UNTIL n < 1; D. Gubiani Algoritmi, e Programmi 37

Alcuni Controlli di Flusso: Ciclo FOR Sintassi: FOR a := ni TO nf DO istruzione Esempio: calcola la potenza n-esima di 2 (n 0) x := 1; FOR i := 1 TO n DO x := x 2; D. Gubiani Algoritmi, e Programmi 38

Input e Output Algoritmi READ/READLN (abbreviazione Read Line): legge i dati di input da tastiera READLN (variabile) WRITE/WRITELN (abbreviazione Write Line): stampa i dati di output sullo schermo WRITELN(output) Esempio: lettura di un carattere da tastiera e scrittura dello stesso a video WRITE ( Inserisci un carattere : ); READLN (c); WRITELN ( Carattere inserito :, c); D. Gubiani Algoritmi, e Programmi 39

Vettori Algoritmi Sintassi: dichiarazione di un vettore nome vettore : array[1..n] of tipo dato; accesso ad uno specifico valore del vettore nome array[indice] Esempio: incremento di 1 dei primi 3 valori di un vettore for i := 1 to 3 do vettore[i] := vettore[i] + 1; Esempio: stampa di un vettore di lunghezza n for i := 1 to n do writeln(vettore[i]); D. Gubiani Algoritmi, e Programmi 40

Procedure e Funzioni Una procedura/funzione è una porzione di codice riutilizzabile Entrambi possono prevedere parametri in ingresso: - passaggio parametro per valore - passaggio parametro per riferimento Le funzioni restituiscono un valore in uscita D. Gubiani Algoritmi, e Programmi 41

Procedure Algoritmi Definizione di una procedura: procedure nome procedura(parametri); var... begin... end; Invocazione di una procedura: nome procedura(variabili); D. Gubiani Algoritmi, e Programmi 42

Funzione Algoritmi Definizione di una funzione: function nome funzione(parametri) : tipo restituito; var... begin... nome funzione :=...... end; Invocazione di una funzione: x := nome funzione(variabili); D. Gubiani Algoritmi, e Programmi 43

Variabili e Procedure/Funzioni Locali: definite all interno di una procedure/funzioni, possono essere richiamate solo all interno della specifica procedure/funzioni Globali: definite nel programma principale, possono essere utilizzate in tutto il programma, anche all interno delle procedure/funzioni D. Gubiani Algoritmi, e Programmi 44

Maggiore fra 2 Numeri D. Gubiani Algoritmi, e Programmi 45

Fattoriale Iterativo D. Gubiani Algoritmi, e Programmi 46

Fattoriale Ricorsivo D. Gubiani Algoritmi, e Programmi 47

Insertion sort Algoritmi D. Gubiani Algoritmi, e Programmi 48

Merge sort Algoritmi D. Gubiani Algoritmi, e Programmi 49