1 Informatica Generale Alessandra Di Pierro Ricevimento: Giovedì ore 14.30-17.30 presso Dipartimento di Informatica, Via Buonarroti,

Slides:



Advertisements
Presentazioni simili
Informatica Generale Marzia Buscemi
Advertisements

INFORMATICA Algoritmi fondamentali
Informatica Generale Susanna Pelagatti
Informatica Generale Marzia Buscemi IMT Lucca
Linguaggi algoritmici
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
1 System Call per Comunicazione tra Processi Pipe.
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
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 Usa la tecnica del.
La valutazione delle espressioni
Algoritmi Politecnico di Milano
Corso di Informatica (Programmazione)
1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)
Introduzione alla programmazione lll
07/04/2003Algoritmi Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare se un elemento fa parte della sequenza oppure.
Corso di Informatica A.A Corso di Informatica Laurea Triennale - Comunicazione&Dams Dott.ssa Adriana Pietramala Laurea.
Corso di Informatica A.A Corso di Informatica Laurea Triennale - Comunicazione&Dams Dott.ssa Adriana Pietramala Laurea.
Strutture di controllo in C -- Flow Chart --
Gli algoritmi.
Lezione VII Laboratorio di Programmazione. Simulazione esame Scrivere in C++ una funzione di nome RICERCA che, presi come parametri. un array A di numeri.
Algoritmi e diagrammi di flusso
Elementi di Informatica
Elementi di Informatica
Biologia Computazionale - Algoritmi
Dall’algoritmo al programma.
Problema dell’ordinamento di un array: Il metodo Bubble Sort.
Lezione 6 Strutture di controllo Il condizionale
PROBLEMA ALGORITMO PROGRAMMA LINGUAGGI di PROGRAMMAZIONE
Massimo Comun Divisore
IL MASSIMO DI UN ARRAY ESERCIZIO
BIOINFO3 - Lezione 211 INPUT La lettura di un input dallo standard input (tastiera) si effettua utilizzando lespressione. Quando il programma incontra.
BIOINFO3 - Lezione 15 ISTRUZIONI
Corso JAVA Lezione n° 11 Istituto Statale di Istruzione Superiore “F. Enriques”
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
ALGORITMI a.
ELETTRONICA GEORGE BOOLE FUNZIONI LOGICHE Lezione N° 1
Array (ordinamento) CORDA – Informatica A. Ferrari.
La ricorsione.
Lezione 19 Riccardo Sama' Copyright  Riccardo Sama' Access.
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
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.
1 Informatica Generale Alessandra Di Pierro Ricevimento: Giovedì ore presso Dipartimento di Informatica, Via Buonarroti,
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 Sommario lez 1 Concetti principali, domande ed esercizi Concetti principali –algoritmo, programma –struttura di controllo: condizionale (if …), iterativa.
Algoritmi.
Il Problema del Commesso Viaggiatore. Traveling Salesman’s Problem (TSP) Un commesso viaggiatore deve visitare un certo numero di città Conosce la distanza.
Sommario Oggetti immutabili e non Tipi Primitivi: String, Arrays.
1 Informatica Generale Marzia Buscemi Ricevimento: Giovedì ore , Dipartimento di Informatica, stanza 306-PS o per posta.
1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore presso Dipartimento di Informatica, Via Buonarroti,
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.
Informatica Generale Marzia Buscemi
Informatica e Informatica di Base
Problemi, algoritmi e programmazione
1 Informatica Generale Alessandra Di Pierro Ricevimento: Giovedì ore presso Dipartimento di Informatica, Via Buonarroti,
GLI ALGORITMI DI ORDINAMENTO
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Programmazione dei Calcolatori Elettronici
Dal problema al programma
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – Ver. aggiornata al 24 Agosto 2015.
“ Pseudocodice ” Un programma per computer lavorerà su in insieme di “ variabili ” contenenti i dati del problema, soluzioni intermedie, soluzioni finali.
Istruzioni e algoritmi. Istruzioni Operative I passi elementari che compongono l’algoritmo sono le istruzioni. Distinguiamo: Istruzioni di input Istruzioni.
Transcript della presentazione:

1 Informatica Generale Alessandra Di Pierro Ricevimento: Giovedì ore presso Dipartimento di Informatica, Via Buonarroti, 2 stanza 362 DE Tel o per posta elettronica Pagina web del corso:

2 La scorsa lezione … Abbiamo dato alcuni esempi di algoritmi Abbiamo introdotto i diagrammi di flusso (DF), dei grafici che permettono di esprimere un algoritmo tramite una combinazione grafica di passi elementari e strutture si controllo. Abbiamo discusso la distanza fra DF e tipici linguaggi di programmazione ad alto livello

3 Oggi … Iniziamo con la discussione degli esercizi proposti la volta scorsa : –formalizzare un algoritmo che effettua la ricerca della scheda relativa a un certa coppia (Autore, Titolo) usando la strategia della ricerca nel dizionario –modificare l’algoritmo max_N in modo da ordinare gli N numeri (diagramma di flusso)

4 Oggi …(2) Introdurremo le strutture dati, cioè variabili ‘con struttura’ che permettono di rappresentare agevolmente dati più complessi di quelli visti finora e ne discuteremo alcuni esempi

5 La ricerca stile ‘dizionario’ 1. Apri il classificatore 2. Prendi la scheda X al centro dello schedario 3. Confronta il campo autore e titolo di X con quelli cercati 4. Se sono uguali, allora termina, altrimenti prosegui 5. Se il campo autore di X è minore di quello cercato allora prosegui la ricerca sulla metà inferiore delle schede altrimenti considera la metà superiore 6. Se la metà selezionata al passo 5 è vuota allora termina (lo schedario non contiene il libro cercato) altrimenti scegli come X la scheda al centro della metà scelta e vai al passo 3

6 La ricerca stile ‘dizionario’ (2) schedario Situazione iniziale

7 La ricerca stile ‘dizionario’ (3) Ogni volta elimino la metà delle schede, oppure mi fermo perché ho trovato la scheda cercata Ogni volta divido il numero N delle schede per 2, mi fermo quando N è diventato 1 o 0 Al più eseguo x passi dove x è il logaritmo in base 2 di N Scheda cercata!

8 Ordinare N numeri interi 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

9 Ordinare N numeri interi (2) 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

10 Ordinare N numeri interi (3) 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

11 Ordinare N numeri interi (4) … problema…. –La variabile X_i che deve essere scambiata è diversa ogni volta! Questo non è possibile esprimerlo utilizzando solo le cose viste finora –Inoltre se N cambia devo aggiungere/togliere variabili … –Soluzione : utilizzare un meccanismo di rappresentazione ‘più potente’ della singola variabile, che mantenga l’informazione che stiamo elaborando una sequenza di valori (strutture dati)

12 Strutture dati Tutti i linguaggi ad alto livello per la programmazione permettono di definire due tipi di aggregati di variabili (o strutture dati) –array : tabelline di valori tutti dello stesso tipo –record : gruppi di variabili di tipo diverso

13 Array –Possiamo definire una sequenza lunga N per il nostro problema di ordinamento, es Array di 4 valori interi (a una sola dimensione) Array 3x4 di 12 valori interi (a due dimensioni) –Possiamo definire una tabella a due dimensioni, ad esempio per memorizzare le vendite di un prodotto in un trimestre dell’anno Prod 1 Prod 2 Prod 3 I IIIII IV

14 Array (2) Come si specifica la struttura di un array ? e come si usano le singole variabili nella struttura ? –La struttura si specifica con il tipo e l’ampiezza di ogni dimensione –es : int x[4] int tab[3][4] Prod 1 Prod 2 Prod 3 I IIIII IV Nomi delle tabelle

15 Array (3) Uso di una singola variabile : –Si specificano le coordinate della variabile desiderata : –Ogni elemento di ogni dimensione è identificato da un valore da 1 a N (o da 0 a N-1, dipende dal linguaggio) Prod 1 Prod 2 Prod 3 I IIIII IV x[1] tab[1][0] Noi generalmente seguiremo la convenzione C di partire da posizione valore

16 Usiamo gli array... 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

17 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

18 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

19 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

20 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