Sistemi e Tecnologie Informatiche

Slides:



Advertisements
Presentazioni simili
- le Medie la Moda la Mediana
Advertisements

INFORMATICA Algoritmi fondamentali
II° Circolo Orta Nova (FG)
/ fax
Dati strutturati A. Ferrari.
Informatica Generale Marzia Buscemi
1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore presso Dipartimento di Informatica, Via Buonarroti,
1 la competenza alfabetica della popolazione italiana CEDE distribuzione percentuale per livelli.
Lez. 91 Universita' di Ferrara Facolta' di Scienze Matematiche, Fisiche e Naturali Laurea Specialistica in Informatica Algoritmi Avanzati Alberi di ricerca.
1 Tavolo del Patto per la crescita intelligente, sostenibile e inclusiva Il ricorso agli ammortizzatori sociali nei territori colpiti dagli eventi sismici.
Anno accademico Array e puntatori in C.
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.
Capitolo 3 Strutture dati elementari 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.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Usa la tecnica del.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 21 Marzo 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Recap sul C Marco D. Santambrogio – Ver. aggiornata al 11 Aprile 2013.
Algoritmo di Ford-Fulkerson
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
Capitolo 7 Tavole hash Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
Capitolo 4 Ordinamento: Selection e Insertion Sort Algoritmi e Strutture Dati.
1 Corso di Informatica (Programmazione) Esercitazione 1 (26 novembre 2008)
Corso di Informatica (Programmazione)
1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Problemi e algoritmi Anno Accademico 2009/2010.
1 Corso di Informatica (Programmazione) Raffaella Rizzi DISCO Dipartimento di Informatica Sistemistica e Comunicazione Edificio U14 - primo piano - stanza.
Ordinamento di una lista: bubble-sort
Il linguaggio Fortran 90: 4. Array: Vettori e Matrici
Algoritmi di ordinamento
CONTROLLO DI SUPPLY CHAIN MEDIANTE TECNICHE H-INFINITO E NEGOZIAZIONE
Corso di Informatica A.A Corso di Informatica Laurea Triennale - Comunicazione&Dams Dott.ssa Adriana Pietramala Dott.ssa.
ITERAZIONE e RICORSIONE (eseguire uno stesso calcolo ripetutamente)
Algoritmi.
Strutture di controllo in C -- Flow Chart --
Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio.
Esercizi C su array e matrici
Le funzioni.
EXCEL FORMATTAZIONE DATI.
Elementi di Informatica di base
Scheda Ente Ente Privato Ente Pubblico. 2ROL - Richieste On Line.
Problema dell’ordinamento di un array: Il metodo Bubble Sort.
INPS - COMUNI SERVIZI AL CITTADINO.
Radix-Sort(A,d) // A[i] = cd...c2c1
Bando Arti Sceniche. Per poter procedere è indispensabile aprire il testo del Bando 2ROL - Richieste On Line.
Roberto Ariani Presidente Comm. Supporto e sviluppo informatico I Siti in cui dobbiamo navigare per crescere SINS - Seminario Istruzione Nuovi Soci - Arezzo,
1 Questionario di soddisfazione ATA - a. sc. 2008/09 Il questionario è stato somministrato nel mese di aprile Sono stati restituiti 29 questionari.
IN OGNI LUOGO, IN OGNI TEMPO… CON MINIMI VINCOLI TECNOLOGICI… DISPONIBILITA’ DELL’ INFORMAZIONE… IN OGNI LUOGO, IN OGNI TEMPO… CON MINIMI VINCOLI.
Sistemi e Tecnologie Informatiche Requisiti per la realizzazione di un buon programma.
1101 = x 10 x 10 x x 10 x = CORRISPONDENZE
1 Questionario di soddisfazione Studenti - a. sc. 2008/09 Il questionario è stato somministrato dal mese di aprile al mese di maggio Sono stati restituiti.
Capitolo 3 Strutture dati elementari Algoritmi e Strutture Dati Camil Demetrescu, Irene Finocchi, Giuseppe F. Italiano.
Ad opera di: Matteo Donatelli e Maurizio Di Paolo Presentazione su : Elettropneumatica 1.
Anno scolastico Autovalutazione di Istituto Scuola Primaria Classi quinte.
Bando di Residenza Cap Scheda ENTE 3ROL - Richieste On Line.
1Piero Scotto - C14. Finalità del corso Programma Materiale Requisiti Spendibilità 2Piero Scotto - C14.
Sviluppare un programma in C che, dato un array da 100 elementi interi caricato con numeri casuali compresi tra [10,100], sia in grado di cercare il valore.
Pippo.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Algoritmi e basi del C Marco D. Santambrogio – Ver. aggiornata al 13 Marzo 2014.
Bando Pittori e Scultori in Piemonte alla metà del ‘700
Sistemi e Tecnologie Informatiche Ricorsione Umberto Ferraro Petrillo.
Sistemi e Tecnologie Informatiche
lun mar mer gio ven SAB DOM FEBBRAIO.
Sistemi e Tecnologie Informatiche Verifica di correttezza di un programma.
IL GIOCO DEL PORTIERE CASISTICA. Caso n. 1 Il portiere nella seguente azione NON commette infrazioni.
Definizione di algoritmo: Un algoritmo è un procedimento che risolve un determinato problema attraverso un numero finito di passi. Un problema risolvibile.
1 Informatica Generale Marzia Buscemi Ricevimento: Giovedì ore , Dipartimento di Informatica, stanza 306-PS o per posta.
Informatica e Informatica di Base
Sistemi e Tecnologie Informatiche Complessità di calcolo.
Transcript della presentazione:

Sistemi e Tecnologie Informatiche Problemi di ordinamento Umberto Ferraro Petrillo

Obiettivo della lezione Presenteremo un semplice ed importante problema da risolvere mediante un approccio “ragionato” Introdurremo le nozioni di algoritmo, struttura dati ed efficienza di un algoritmo

Domanda … Cosa rende un elenco telefonico di semplice consultazione? Risposta: I nominativi riportati sono elencati in ordine alfabetico! Come si ordina un elenco di nomi?

Problema Compilazione di un elenco dei partecipanti al corso e dei rispettivi voti (ordinato per cognome) Zuzzurellone Zaira 24 Bamonte Giovanni 26 Romano Nadia 21 Medio Massimo 28 Del Monte Francesco 30 Rufolo Carmine 19 Donnaruma Giovanni 27 Santonastaso Maria 25 Abate Alfonso 27

Ordinamento di un elenco (ver. 1) Elenco di partenza Elenco ordinato Zuzzurellone Zaira Bamonte Giovanni Romano Nadia Medio Massimo Del Monte Francesco Rufolo Carmine Donnaruma Giovanni Santonastaso Maria Abate Alfonso Abate Alfonso Bamonte Giovanni Del Monte Francesco Donnaruma Giovanni Medio Massimo Romano Nadia Rufolo Carmine Santonastaso Maria Zuzzurellone Zaira Individua il primo nominativo in ordine alfabetico nell’elenco di input Riponi l’elemento individuato nella posizione 1 dell’elenco ordinato ed eliminalo dall’elenco di partenza Riponi l’elemento individuato nella posizione 2 dell’elenco ordinato ed eliminalo dall’elenco di partenza ….

Procedura risolutiva (prima versione) Sia i l’indice della posizione attualmente considerata (inizialmente i = 0) Sia n la taglia dell’elenco da ordinare Ripeti per n volte la seguente procedura: Scorri l’elenco di input ed individua il primo nominativo in ordine alfabetico Riponi l’elemento individuato nella posizione i dell’elenco ordinato ed eliminalo dall’elenco di partenza Incrementa i di 1 (i = i +1) Ci piace perchè + compatta e perchè è generalizzabile

Ordinamento di un elenco (ver 2) Zuzzurellone Zaira Donnaruma Giovanni Romano Nadia Medio Massimo Del Monte Francesco Rufolo Carmine Bamonte Giovanni Santonastaso Maria Abate Alfonso Abate Alfonso Donnaruma Giovanni Romano Nadia Medio Massimo Del Monte Francesco Rufolo Carmine Bamonte Giovanni Santonastaso Maria Zuzzurellone Zaira Abate Alfonso Bamonte Giovanni Romano Nadia Medio Massimo Del Monte Francesco Rufolo Carmine Donnaruma Giovanni Santonastaso Maria Zuzzurellone Zaira Cambiamo Abate Alfonso con il primo elemento dell’elenco e vice-versa Cambiamo Bamonte Giovanni con il secondo elemento dell’elenco e vice-versa Cambiamo Del Monte Francesco con il terzo elemento dell’elenco e vice-versa

Procedura risolutiva (seconda versione) Sia i l’indice della posizione attualmente considerata (inizialmente i = 0) Sia n la taglia dell’elenco da ordinare Ripeti per n-1 volte la seguente procedura: Scorri l’elenco di input nella porzione da i ad n ed individua il primo nominativo in ordine alfabetico Scambia l’elemento individuato con l’elemento nella posizione i (se necessario) Incrementa i di 1 (i = i +1) Ci piace perchè + compatta e perchè è generalizzabile

Algoritmo Procedura di calcolo consistente in un insieme di passi (istruzioni) e finalizzata alla risoluzione di un problema E’ tipicamente descritto utilizzando il linguaggio naturale: E.g. “Scorri l’elenco di input ed individua il primo nominativo in ordine alfabetico” Un algoritmo può essere implementato attraverso un linguaggio di programmazione … … tuttavia, esso non dipende da uno specifico linguaggio di programmazione Il vantaggio degli algoritmi è che essi ci consentono di risolvere un problema con carta e penna, l’effettiva implementazione viene demandata ad una fase successiva, l’implementazione rappresenta una sorta di punto di arrivo (zoom/unzoom). E’ fuori discussione che se io chiedessi a voi durante l’esame di scrivere un algoritmo che risolve un certo problema per voi sarebbe più facile che scrivere un programma C++ che risolve lo stesso problema. con questa lezione abbiamo intrapreso una sorta di viaggio che si concluderà proprio con la programmazione

Struttura dati Le informazioni elaborate da un algoritmo sono definite dati (e.g., elenco nominativi da ordinare) I dati si possono presentare: in una forma elementare (e.g., il numero di studenti che segue la lezione) in una forma strutturata (e.g, l’elenco degli studenti e delle loro generalità) Una struttura dati può godere di determinate proprietà utili a risolvere un certo problema (e.g., l’elenco telefonico è ordinato alfabeticamente, sono quindi in grado di cercare un nome velocemente) La scelta di una particolare struttura dati influisce sull’efficienza di un programma e sulla semplicità di realizzazione dello stesso

Implementazione di un algoritmo L’elaborazione dei dati presuppone una loro rappresentazione (e.g., numero telefonico rappresentato come numero intero, nome di un utente rappresentato come array di caratteri)

Rappresentazione dei dati Problema: Fornire una rappresentazione in C/C++ dei dati sotto elencati Zuzzurellone Zaira 24 Bamonte Giovanni 26 Romano Nadia 21 Medio Massimo 28 Del Monte Francesco 30 Rufolo Carmine 19 Donnaruma Giovanni 27 Santonastaso Maria 25 Abate Alfonso 27

Rappresentazione dei dati Giovanni Bamonte 26 Romano 24 Zaira Zuzzurellone 2 5 4 3 1 6 Ipotesi 1: Adoperiamo un array di taglia 3n 2 1 24 Zaira Zuzzurellone 21 Nadia Romano 26 Giovanni Bamonte Ipotesi 2: Adoperiamo una matrice di taglia nx3

Rappresentazione dei dati Ipotesi 3: Adoperiamo 3 array distinti 1 2 Zuzzurellone Bamonte Romano 1 2 Zaira Giovanni Nadia 1 2 24 26 21

Rappresentazione dei dati Ipotesi 4: Definiamo una classe studente Adoperiamo un array di taglia n di oggetti “studente” 1 2 Nome: Zaira Cognome: Zuzzurellone Voto: 24 Nome: Zaira Cognome: Zuzzurellone Voto: 24 Nome: Zaira Cognome: Zuzzurellone Voto: 24

Ordinamento di un elenco di voti (Selection Sort) Sia i l’indice della posizione attualmente considerata (inizialmente i = 0) Sia n la taglia dell’elenco da ordinare Ripeti per n-1 volte la seguente procedura: Scorri l’elenco di input nella porzione da i ad n ed individua il voto più alto Scambia l’elemento individuato con l’elemento nella posizione i (se necessario) Incrementa i di 1 (i = i +1) Ci piace perchè + compatta e perchè è generalizzabile

Ordinamento di un elenco di voti (Selection Sort) 1 2 3 4 5 6 7 8 24 26 21 28 30 19 27 25 24 26 21 28 30 19 27 25 30 26 21 28 24 19 27 25 30 24 21 26 28 19 27 25 Ci piace perchè + compatta e perchè è generalizzabile Il numero + alto è 30, lo scambiamo con l’elemento alla prima posizione Il numero + alto è 28, lo scambiamo con l’elemento alla seconda posizione Scorriamo l’array da 0 ad 8 per individuare il numero + alto Scorriamo l’array da 1 ad 8 per individuare il numero + alto

Ordinamento di un elenco di voti (Selection Sort) 1 2 3 4 5 6 7 8 24 26 21 28 30 19 27 25 30 26 21 28 24 19 27 25 30 26 21 28 24 19 27 25 30 28 21 26 24 19 27 25 30 28 21 26 24 19 27 25 30 28 27 26 24 19 21 25 30 28 27 26 24 19 21 25 30 28 27 24 19 21 25 26 30 28 27 24 19 21 25 26 30 28 27 26 25242119 …

Sia Voti l’elenco di input ed n la taglia dello stesso 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 Sia Voti l’elenco di input ed n la taglia dello stesso void SelectionSort(int Voti [], int n){ int i, i_max; for (i = 0; i < n-1; i++) { i_max = i; // ricerca il valore massimo in Voti[i..n] for (int j = i+1; j < n-1; j++) if (Voti[j] > Voti[i_max]) i_max = j; // j è il nuovo i_max // scambia (se necessario) Voti[i_max] e Voti[i] if (i != i_max) { int temp = Voti[i_max]; Voti[i_max] = Voti[i]; Voti[i] = temp; } i – Separa gli elementi ordinati da quelli da ordinare j – Viene utilizzata per scorrere gli elementi da ordinare temp – Serve come variabile temporanea per operare lo scambio di due valori i_max – Conserva l’indice del valore piu’ alto all’interno della porzione di elenco non ordinata Sia i l’indice dell’elemento attualmente considerato (i=0) e sia i_max l’indice dell’elemento massimo in Voti[i…n] Ripeti per n-1 volte la seguente procedura Assumi il valore nella posizione Voti[i] essere il massimo nel sottoelenco Voti[i…n], (i = i_max) Cerca nel sottoelenco Voti[i+1 … n] il valore più alto ed assegnane l’indice ad i_max Se i_max è diverso da i, scambia Voti[i] e Voti[i_max]