1 Informatica Generale Marzia Buscemi Ricevimento: Giovedì ore 16.00-18.00, Dipartimento di Informatica, stanza 306-PS o per posta.

Slides:



Advertisements
Presentazioni simili
Informatica Generale Marzia Buscemi
Advertisements

Sottoprogrammi: funzioni e procedure
Ricorsione Procedure e funzioni ricorsive. Definizioni Un oggetto si dice ricorsivo se è definito totalmente o parzialmente in termini di sé stesso La.
Algoritmi e Programmazione
Informatica Generale Marzia Buscemi
1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore presso Dipartimento di Informatica, Via Buonarroti,
Informatica Generale Susanna Pelagatti
(sommario delle lezioni in fondo alla pagina)
Informatica Generale Alessandra Di Pierro
INFORMATICA Strutture iterative
Introduzione agli algoritmi. Definizione Sistema di regole e procedure di calcolo ben definite che portano alla soluzione di un problema con un numero.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Usa la tecnica del.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti ottimi.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Usa la tecnica del.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Usa la tecnica del.
Informatica Problema Algoritmo Programma
Algoritmi Politecnico di Milano C Primi programmi Politecnico di Milano.
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
1 Corso di Informatica (Programmazione) Lezione 11 (19 novembre 2008) Programmazione in Java: controllo del flusso (iterazione)
Corso di Informatica (Programmazione)
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L’attività di.
Introduzione alla programmazione lll
APPUNTI SUL LINGUAGGIO C
ITERAZIONE e RICORSIONE (eseguire uno stesso calcolo ripetutamente) ITERAZIONE: ripetere piu volte una sequenza di operazioni istruzioni: for, while, do.
ITERAZIONE e RICORSIONE (eseguire uno stesso calcolo ripetutamente)
Istruzioni Iterative Nicola Fanizzi
Strutture di controllo in C -- Flow Chart --
Fondamenti di Informatica Algoritmi
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Elementi di Informatica
Elementi di Informatica
Biologia Computazionale - Algoritmi
Dall’algoritmo al programma.
ELEMENTI DI PROGRAMMAZIONE
1 Programmazione = decomposizione basata su astrazioni (con riferimento a Java)
INFORMATICA MATTEO CRISTANI.
Problema dell’ordinamento di un array: Il metodo Bubble Sort.
Radix-Sort(A,d) // A[i] = cd...c2c1
PROBLEMA ALGORITMO PROGRAMMA LINGUAGGI di PROGRAMMAZIONE
Massimo Comun Divisore
REDIREZIONE INPUT E OUTPUT
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
Programmazione Strutturata
Array (ordinamento) CORDA – Informatica A. Ferrari.
Corso JAVA Lezione n° 03 Istituto Statale di Istruzione Superiore “F. Enriques”
ALGORITMO Un algoritmo è un procedimento che risolve un determinato problema attraverso un numero finito di passi. Un formalismo che permette di rappresentare.
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
Sottoprogrammi e funzioni
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali
Paola Disisto, Erika Griffini, Yris Noriega.  Insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce.
13 ottobre Decisioni F. Bombi 13 ottobre 2002.
Array (visita e ricerca) CORDA – Informatica A. Ferrari.
1 Sistemi Operativi … e altro. Susanna Pelagatti Dipartimento di Informatica, Via Buonarroti, 2 stanza 346 DE Tel
1 Informatica Generale Alessandra Di Pierro Ricevimento: Giovedì ore presso Dipartimento di Informatica, Via Buonarroti,
1 Sommario lez 1 Concetti principali, domande ed esercizi Concetti principali –algoritmo, programma –struttura di controllo: condizionale (if …), iterativa.
Algoritmi.
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
1 Informatica Generale Marzia Buscemi Ricevimento: Giovedì ore , Dipartimento di Informatica, stanza 306-PS o per posta.
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Informatica Generale Marzia Buscemi
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Informatica e Informatica di Base
Dal problema al programma
“ Pseudocodice ” Un programma per computer lavorerà su in insieme di “ variabili ” contenenti i dati del problema, soluzioni intermedie, soluzioni finali.
Algoritmi e Strutture Dati Luciano Gualà
Basi di Java Strutture base di Java. Basi di java ▪Variabili ▪Operatori ▪Condizioni e Cicli ▪Array.
Transcript della presentazione:

1 Informatica Generale Marzia Buscemi Ricevimento: Giovedì ore , Dipartimento di Informatica, stanza 306-PS o per posta elettronica Pagina web del corso: (sommario delle lezioni in fondo alla pagina)

2 La volta scorsa abbiamo visto Le strutture di controllo: sequenza di istruzioni selezione (if.. then.. else..) iterazione (while.. do, repeat.. while, for.. to.. do) Come si rappresentano gli algoritmi: pseudocodice diagramma di flusso Strutture dati: array

3 Oggi... approfondiremo alcuni punti visti la scorsa volta faremo altri esempi di algoritmi per risolvere problemi (numerici e non numerici) vedremo come dividere un problema in sotto-problemi e quindi trovare un algoritmi componendo sotto-algoritmi

4 Algoritmi e programmi Algoritmo Codifica in un linguaggio di programmazione (C, Java, etc) Programma Compilatore Input : programma Output : rappresentazione comprensibile alla macchina Eseguibile

5 Sotto-programmi Tutte le operazioni specificate devono essere ‘elementari’ per chi esegue il programma. Se non lo sono è possibile spiegarle a parte per mezzo di un sotto-programma es culinario: ‘… preparare la pasta frolla (ricetta p. 212) usando i primi 3 ingredienti, poi preparare il ripieno come segue ….’ es programmazione:  calcolare il max di N numeri ripetendo l’algoritmo per trovare il max tra due numeri

6 Ordinare N numeri interi 1 Supponiamo di voler ordinare N numeri interi. Vedremo ora come risolvere questo problema suddividendolo in sotto- problemi, trovando un (sotto-)algoritmo per risolvere ciascun sotto-problema e combinando i sottoalgoritmi per ottenere l’algoritmo che dà la soluzione dell’intero problema.

7 Ordinare N numeri interi 2 Problema: Servono N variabili! X_1 … X_N per memorizzare i numeri letti dall’esterno durante l’elaborazione Supponiamo che max_N restituisca una coppia di valori (m,i) dove m è il valore del massimo ed i è la posizione all’interno della sequenza cui corrisponde es (45,3), il massimo valore è 45 e corrisponde al terzo numero nella sequenza lunga N

8 Ordinare N numeri interi 3 Algoritmo ordina_N 1. Leggi il valore di N dall’esterno 2. Finchè (hai letto meno di N numeri) a. Leggi un nuovo numero nella variabile X_i 3. Trova il maggiore (m, i) fra X_1 … X_N (con max_N modificato) 4. Scambia fra loro X_i e X_N 5. Considera adesso solo i primi N-1 numeri (N=N-1) 6. Se N = 1 termina, altrimenti vai al passo 3

9 Ordinare N numeri interi N=4 Max_N = 8 in posizione 1 Scambio la posizione 1 e 4 N=3 Max_N = 7 in posizione 2 Scambio la posizione 1 e 3 N=2 Max_N = 3 in posizione 2 Nessuno scambio 1378 Termina 1378 N=1

10 Ordinare N numeri interi 5 La variabile X_i che deve essere scambiata è diversa ogni volta! Questo non è possibile esprimerlo utilizzando solo variabili Inoltre se N cambia devo aggiungere/togliere variabili … Soluzione: usare gli array!! Se usiamo gli array abbiamo un meccanismo di rappresentazione ‘più potente’ della singola variabile, che mantiene l’informazione che stiamo elaborando.

11 Ordinare N numeri interi 6 Costruiamo una versione dell’algoritmo che ordina N numeri che usa un array int X[N] per memorizzare i numeri della sequenza da ordinare Vediamo prima 2 sottoalgoritmi leggi_Na che legge i numeri da ordinare e li inserisce nell’array X max_Na che trova il valore del massimo numero in X e la sua posizione

12 I < N ? Inizio Fine Si No Leggi il nuovo numero in X[I] Sottoalgoritmo per la lettura di N numeri (leggi_Na) Leggi il valore di N I = 0 I = I + 1 Strutture dati: Int X[N] // la sequenza Input : vuoto (void) Output : Int X[N] // la sequenza letta Int N // la sua lunghezza

13 Esempio di leggi_Na 8 Inizialmente X è vuoto Passo 1, leggo il primo numero I=0Leggo 8 e lo scrivo nella posizione 0, cioè X[0]=8 Termina Sequenza di numeri da leggere : 8, 1, 9, 7 quindi N=4 Passo 2, leggo il secondo numero 81 I=1Leggo 1 e lo scrivo nella posizione 1, cioè X[1]= Passo 3, leggo il terzo numero I=2 Leggo 9 e lo scrivo nella posizione 2, cioè X[2]=9 819 Passo 4, leggo il quarto numero I=3Leggo 7 e lo scrivo nella posizione 3, cioè X[3]=7 X = posizione I=4, quindi I< N non è più verificata

14 I < N ? Inizio Fine Si No Sottoalgoritmo per la trovare il massimo di N numeri in un array (max_Na) Imax = 0, I = 0 I = I + 1 Strutture dati: Int X[N] // la sequenza m = X[0] Input: Int X[N], Int N Output: Int m // il valore del massimo Int Imax // l’indice del massimo m > X[i] ? Si No m = X[i], Imax = I

15 Esempio di max_Na Passo 1, esamino X[0], I=0 m = 8Imax = 0 Termina Trova il valore m del massimo in X e la sua posizione Imax, la lunghezza di X è N=4 Passo 2, esamino X[1], I= Passo 3, esamino X[2], I= Passo 4, esamino X[3], I=3 X = posizione I=4, quindi I< N non è più verificata (Valore e posizione del massimo trovato fra gli elementi già esaminati) m = 8Imax = 0 m = 9Imax = 2 m = 9Imax = 2

16 Algoritmo ordina_Na 1. Leggi il valore di N dall’esterno 2. Leggi gli N numeri della sequenza nell’array X (con leggi_Na ) 3. Trova il maggiore (m, imax) fra i primi N numeri dell’array X (con max_Na ) 4. Scambia fra loro X[imax] e X [N] 5. Considera adesso solo i primi N-1 numeri dell’array (N=N-1) 6. Se N = 1 continua, altrimenti vai al passo 3 7. Stampa X, termina

17 N > 1? Inizio Fine Si No (X,N)=leggi_Na() (m,I) = max_Na(X,N) DF per il problema del ordinare di N numeri ( ordina_Na ) Strutture dati: Int X[N] // la sequenza T = X[N] X[N] = X[I] Input : vuoto (void) X[I] = T N = N-1 Lung=N Output : vuoto (void) Scambio dei due valori Stampa(X,Lung)