Corso di Informatica



Documenti analoghi
Corso di Informatica

Funzioni in C. Violetta Lonati

Algoritmi di Ricerca. Esempi di programmi Java

void funzioneprova() { int x=2; cout<<"dentro la funzione x="<<x<<endl; }

Esempi di algoritmi. Lezione III

Informatica 3. LEZIONE 21: Ricerca su liste e tecniche di hashing. Modulo 1: Algoritmi sequenziali e basati su liste Modulo 2: Hashing

Algoritmi e diagrammi di flusso

Corso di Tecniche di Programmazione

Ricerche, ordinamenti e fusioni. 5.1 Introduzione. 5.2 Ricerca completa

Lezione 8. La macchina universale

Corso di Informatica

SISTEMI DI NUMERAZIONE E CODICI

LA TRASMISSIONE DELLE INFORMAZIONI QUARTA PARTE 1

[MANUALE VISUAL BASIC SCUOLA24ORE PROF.SSA PATRIZIA TARANTINO] 14 dicembre 2008

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

Esercizi Capitolo 6 - Alberi binari di ricerca

Algoritmi di ordinamento

Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};

Informatica. appunti dalle lezioni del 20/09/2011 e del 27/09/2011

Plate Locator Riconoscimento Automatico di Targhe

Corso di Informatica

Introduzione all analisi dei segnali digitali.

Informatica 3. Informatica 3. LEZIONE 10: Introduzione agli algoritmi e alle strutture dati. Lezione 10 - Modulo 1. Importanza delle strutture dati

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

Corso sul linguaggio Java

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Primo scritto 11 Gennaio 2008

Allocazione dinamica della memoria - riepilogo

Identificare le diverse parti di una finestra: barra del titolo, barra dei menu, barra degli strumenti, barra di stato, barra di scorrimento.

Dimensione di uno Spazio vettoriale

Sistemi Operativi mod. B. Sistemi Operativi mod. B A B C A B C P P P P P P < P 1, >

Esempio: dest = parolagigante, lettere = PROVA dest (dopo l'invocazione di tipo pari ) = pprrlogvgante

L amministratore di dominio

GESTIONE INFORMATICA DEI DATI AZIENDALI

PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

Algoritmi su array / 2

Introduzione. Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD... 6

Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012

Processo di risoluzione di un problema ingegneristico. Processo di risoluzione di un problema ingegneristico

Inizializzazione, Assegnamento e Distruzione di Classi

La struttura dati ad albero binario

Appunti sulla Macchina di Turing. Macchina di Turing

Rappresentazione dell informazione Codifica Binaria

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

EMISSIONE FATTURE: LA STAMPA AVANZATA

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.

LABORATORIO DI PROGRAMMAZIONE EDIZIONE 1, TURNO B

Corso di Fondamenti di Informatica Algoritmi su array / 2

3 GRAFICI DI FUNZIONI

Appunti di informatica. Lezione 2 anno accademico Mario Verdicchio

Guida all uso di Java Diagrammi ER

Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C

Database 1 biblioteca universitaria. Testo del quesito

FIRESHOP.NET. Gestione del taglia e colore.

Gestione del processore e dei processi

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

4 3 4 = 4 x x x 10 0 aaa

10 - Programmare con gli Array

la scienza della rappresentazione e della elaborazione dell informazione

Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux

Il controllo della visualizzazione

Appunti di Sistemi Elettronici

10. Insiemi non misurabili secondo Lebesgue.

FONDAMENTI DI INTELLIGENZA ARTIFICIALE 1 parte (6 CFU) 12 Luglio 2012 Tempo a disposizione: 2 h Risultato: 32/32 punti

Per studio di funzione intendiamo un insieme di procedure che hanno lo scopo di analizzare le proprietà di una funzione f ( x) R R

Dispense di Informatica per l ITG Valadier

Introduzione all Information Retrieval

Alessandro Pellegrini

Metodi statistici per le ricerche di mercato

Concetto di Funzione e Procedura METODI in Java

4. Operazioni aritmetiche con i numeri binari

LINGUAGGI DI PROGRAMMAZIONE

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

Calcolare il massimo di una lista

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

EasyPrint v4.15. Gadget e calendari. Manuale Utente

Testo alla base del Pitgame redatto dal prof. Yvan Lengwiler, Università di Basilea

- Sistemi di numerazione 1 - Sistemi di Numerazione

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

SISTEMI OPERATIVI. Deadlock (blocco critico) Domande di verifica. Luca Orrù Centro Multimediale Montiferru 04/06/2007

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a settembre 2011

Introduzione agli Algoritmi Genetici Prof. Beatrice Lazzerini

SISTEMI INFORMATIVI AVANZATI -2010/ Introduzione

Per lo svolgimento del corso risulta particolarmente utile considerare l insieme

Un ripasso di aritmetica: Conversione dalla base 10 alla base 16

MODELLISTICA DI IMPIANTI E SISTEMI 2

Introduzione alla programmazione in C

e-dva - eni-depth Velocity Analysis

SISTEMA di GESTIONE QUALITÀ Non Conformità ed Efficacia delle Azioni Correttive Preventive

Strutturazione logica dei dati: i file

Economia Politica. Il monopolio. Cap 15. Appunti delle lezioni Fabiano Schivardi

Informatica grafica e Multimedialità. 4 Immagini grafiche

Computational Game Theory

Regione Toscana. ARPA Fonte Dati. Manuale Amministratore. L. Folchi (TAI) Redatto da

Macchine sequenziali

Corso sul linguaggio Java

RICERCA DI UN ELEMENTO

Corso sul linguaggio SQL

Operazioni di Comunicazione di base. Cap.4

Transcript:

Corso di Informatica Modulo T Scorrimento-Rotazione-Ricerca Prerequisiti Programmazione elementare Conoscenza ed uso di vettori

Introduzione Lo scopo di questa Unità è approfondire il concetto di vettore esaminando alcune applicazioni notevoli che hanno rilevante importanza sia didattica che pratica. In particolare: soltanto per semplicità, supponiamo di trattare con vettori di interi; esaminiamo le operazioni di scorrimento, rotazione e ricerca. Il tipo di dato array L array rientra nella definizione di tipo di dato illustrata in precedenza Il dominio D è l insieme di tutte le sequenze ordinate caratterizzate da un nome collettivo ed un indice di posizione Le costanti di tipo array si ottengono inizializzando da programma i valori delle componenti con valori costanti Le operazioni base sul tipo array sono lettura di una componente stampa di una componente assegnazione di un valore ad una componente inizializzazione con valori costanti

Il tipo di dato array Per implementare gli algoritmi notevoli ci serviamo di: operazioni base (lettura, stampa, assegnazione e inizializzazione di una componente, viste prima) operazioni globali: LeggiV (Intero V[ ], Intero n) StampaV (Intero V[ ], Intero n) strutture di controllo Quando si realizza un applicazione sfruttando strumenti di livello più basso (o più semplice) si dice che si sviluppa una implementazione. Algoritmi notevoli Date le seguenti dichiarazioni: Intero v[max]; Intero x, pos, n; con MAX costante intera, le operazioni eseguibili sul vettore sono le seguenti (ciascuna elabora n elementi del vettore): ScorriDestra (v, n); scorrimento unitario a destra dei valori di v ScorriSinistra (v, n); scorrimento unitario a sinistra dei valori di v RuotaDestra (v, n); scorrimento unitario a destra con rientro RuotaSinistra (v, n); scorrimento a sinistra con rientro pos=ricerca (x, v, n); dà posizione pos dell elemento x in v[]

Scorrimento Le operazioni di scorrimento consistono nello spostamento di un posto (a destra o sinistra) di tutte le componenti del vettore. Ad esempio l operazione ScorriDestra (v, ) sul vettore v[ ] produce il seguente effetto (si noti la perdita del valore in ultima posizione e la duplicazione del valore in prima posizione. v[ ] - v[ ] - Algoritmi di scorrimento void ScorriDestra (Intero v[], Intero n) Intero i; Per i = n- a fai v[i] = v[i-]; Fine; void ScorriSinistra (Intero v[], Intero n) Intero i; Per i = a n- fai v[i-] = v[i]; Fine; l algoritmo che produce lo scorrimento a destra degli n elementi di un vettore v[]. l algoritmo che produce lo scorrimento a sinistra degli n elementi di un vettore v[].

Rotazione Le operazioni di Rotazione consistono nello spostamento di un posto (a destra o sinistra) di tutte le componenti del vettore con il conseguente rientro dell elemento perduto. Ad esempio l operazione RuotaDestra (v, ) sul vettore v[ ] produce il seguente effetto (si noti il rientro del valore in prima posizione) v[ ] - v[ ] - 9 Algoritmi di rotazione void RuotaDestra (Intero v[], Intero n) Intero i, x; x = v[n-]; Per i = n- a fai v[i] = v[i-]; v[] = x; Fine; void RuotaSinistra (Intero v[], Intero n) Intero i, x; x = v[]; Per i = a n- fai v[i-] = v[i]; v[n-] = x; Fine; l algoritmo che produce la rotazione a destra degli n elementi di un vettore v[]. l algoritmo che produce lo rotazione a sinistra degli n elementi di un vettore v[].

Ricerca L operazione di Ricerca all interno di un vettore di dimensione n, consiste nel trovare, se esiste, la posizione di un elemento avente valore x. Se l elemento non esiste, viene restituito -. Ci sono molte tecniche per effettuare la ricerca. Fra le più importanti abbiamo: ricerca sequenziale ricerca con il metodo della sentinella ricerca binaria Ricerca sequenziale - Tecnica L operazione di Ricerca sequenziale, detta anche ricerca ingenua, consiste nello scorrere il vettore fino al punto in cui esso termina oppure fino al punto in cui venga trovato il valore x. Ad esempio, la ricerca del valore nel vettore v[ ] avente dimensione, istanziata come Ricerca (,v,) nell esempio, darebbe in uscita il valore v[ ] - 9

Ricerca sequenziale - Algoritmo l algoritmo che effettua la ricerca sequenziale di un valore x in un vettore v[] di n Costante MAX elementi interi. Intero Ricerca (Intero x, Intero v[], Intero n) Intero i = ; Fintantochè (i < n) AND (x!= v[i]) Fai i++; Se (i = = n) Ritorna -; Altrimenti Ritorna i; Fine. Ricerca sequenziale - Utilizzo l applicazione che legge un vettore Algoritmo RicercaSequenziale vett[] di MAX elementi interi e un valore num da cercare e, tramite la funzione Ricerca (x, v, n) stabilisca Costante MAX ; se num è presente in vett[]. Intero vett[max], num, n, pos; LeggiV (vett, n); /* lettura n valori del vettore */ Leggi (num); /* numero da cercare */ pos = Ricerca (num, vett, n); Se (pos = = -) Stampa ( Non trovato ); Altrimenti Stampa ( Trovato al posto + pos); Fine.

Ricerca con sentinella - Tecnica L algoritmo: usa il vettore con un elemento in più (sentinella) in cui si pone il valore x procede come nella ricerca sequenziale, ma termina sempre con x==v[i] perché o trova il valore x (successo) oppure trova la sentinella (insuccesso). non richiede il controllo di fine vettore. Ad es. se x=, si avrebbe (v. figura superiore) che Ricerca(,v,)=, mentre sempre con lo stesso vettore (v. figura inferiore), Ricerca(,v,)=, valore non accettabile perché al di fuori delo spazio di ricerca - - 9 Sentinella Ricerca con sentinella - Algoritmo Costante MAX. Intero Ricerca (Intero x, Intero v[], Intero n) Intero i = ; v[n]=x; Fintantochè (x!= v[i]) Fai i++; Se (i = = n) Ritorna -; Altrimenti Ritorna i; Fine. l algoritmo che effettua la ricerca con sentinella di un valore x in un vettore v[] di n elementi interi Si noti che poiché questa funzione ha la stessa interfaccia della funzione di ricerca sequenziale, l applicazione che ne fa uso è identica a quella vista nell ATTIVITA precedente.

Ricerca binaria - Tecnica L operazione di Ricerca binaria, si può applicare soltanto quando gli elementi del vettore sono stati preventivamente ordinati (per es. in senso crescente). L algoritmo procede nel seguente modo. Si accede alla metà del vettore: se l elemento è trovato, la ricerca termina con successo, altrimenti, si seleziona la prima metà o la seconda metà del vettore, in base al confronto tra il valore x da cercare e il valore dell elemento centrale. Sulla metà del vettore individuata, si ripete il procedimento, fino a quando il vettore è diventato un solo elemento, che può essere quello cercato (successo) o no (insuccesso). Ricerca binaria - Tecnica In pratica: sono necessari tre indici (diciamo Inf, Sup e Centro) che consentono di selezionare, di volta in volta, la porzione di vettore (sempre minore) in cui cercare l elemento. Ad ogni passo, o aumenta Inf o diminuisce Sup e Centro individua la posizione centrale; l algoritmo suddivide ripetutamente il vettore a metà, fintantochè Inf non supera Sup e l elemento non viene trovato. Quando, continuando a dividere, lo spazio di ricerca diventa un singolo elemento del vettore (Inf > Sup), se esso corrisponde al valore cercato la ricerca termina con successo, altrimenti termina con insuccesso. 9

Ricerca binaria - Tecnica Ad esempio, se il valore cercato è si ha: Inf Inf Sup 9 Sup 9 9 Inf Sup 9 Ricerca binaria - Algoritmo elementi interi Costante MAX. int Ricerca (Intero x, Intero v[], Intero n) Intero Inf =, Sup = n-; Centro = (Inf+Sup) / ; /* posizione centrale */ Fintantochè (Inf <= Sup && x!= v[centro]) Fai Se (x < v[centro]) Sup = Centro-; Altrimenti Inf = Centro+; Centro = (Inf+Sup) / ; Fine; Se (Inf > Sup) Ritorna -; Altrimenti Fine. Ritorna centro; l algoritmo che effettua la ricerca binaria di un valore x in un vettore v[] di n Anche in questo caso questa funzione ha la stessa interfaccia delle precedenti, per cui l applicazione che ne fa uso è identica a quella vista in una ATTIVITA precedente

Argomenti Il tipo di dato array Algoritmi notevoli Scorrimento Algoritmi di scorrimento Rotazione Algoritmi di rotazione Ricerca Ricerca sequenziale Tecnica Algoritmo Utilizzo Ricerca con sentinella Tecnica Algoritmo Ricerca binaria Tecnica Algoritmo Altre fonti di informazione P.Gallo, F.Salerno Informatica Generale, ed. Minerva Italica G.Callegarin Corso di Informatica, ed. CEDAM