Algoritmo per l ordinamento di un array

Documenti analoghi
Applicazioni grafiche

Preparati per il compito in classe Modulo 5

DAL DIAGRAMMA AL CODICE

Le L z e ione n e d i d V isu s a u l B asi s c Prof.ssa Paola Goi 1

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

Per realizzare un programma in VB

Gestione degli archivi e stampe

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

IL LINGUAGGIO Visual Basic

Corso di Visual Basic (Parte 8)

Visual Basic FROM C TO DEDICATO AGLI UTENTI CON BASI DI C CHE SI AFFACCIANO AL MONDO DEL VISUAL BASIC. Contiene solo basi di linguaggio

Il blog di Emanuele Mattei in ambito Database

Programmazione in Excel con il linguaggio Visual Basic

Elementi di Informatica

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

Struttura logica di un programma

Introduzione a Visual Basic Lezione 1 Concetti base e istruzioni condizionali


STRUTTURE (O COSTRUTTI) DI CONTROLLO

CAPITOLO 10 - TECNOLOGIA ASP.NET - WEB FORM

Corso basi di dati Introduzione al VBScript

TOP DOWN. Preparati per il compito in classe Modulo 5

Le variabili di Visual Basic consentono di memorizzare temporaneamente valori durante

Descrizione di un algoritmo

Utilizzo del linguaggio Basic utilizzando l interfaccia di Excel Silvia Patacchini

Algoritmo per l individuazione dei punti di svolta basato su previsioni effettuate con un modello di lisciamento esponenziale.

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

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

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Plus srl :: :: :: Via Morgagni, 4/A Verona :: Tel :: Fax

6. Applicazione: gestione del centro sportivo Olympic

A. Carullo Introduzione a Visual Basic. Introduzione a

Realizzare semplici applicazioni windows

Gli XML Web Service. Prof. Mauro Giacomini. Complementi di Informatica Medica 2008/2009 1

Come ragiona il computer. Problemi e algoritmi

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

DESCRIZIONE CREAZIONE APP Si suddivide in 4 fasi di lavoro: 1. PIANIFICAZIONE; 2. PROGETTAZIONE; 3. SVILUPPO; 4. DISTRIBUZIONE.

M.U.T. Modulo Unico Telematico. Specifiche tecniche interfaccia automatica per i Software Gestionali

Matematica in laboratorio

Dispense del corso di Introduzione all Informatica della Facoltà Di Scienze Matematiche, Fisiche e Naturali dell Università della Calabria

Il Web-Service SDMX dell ISTAT

ITIS E. BARSANTI POMIGLIANO D ARCO CORSO DI SISTEMI ELETTRONICI AUTOMATICI Prof. Paolo Bisconti

PIANO DI LAVORO DEI DOCENTI

ISTITUTO DI ISTRUZIONE SUPERIORE Cigna Baruffi Garelli

Laboratorio di Elementi di Bioinformatica

3. La sintassi di Java

Due algoritmi di ordinamento. basati sulla tecnica Divide et Impera: Mergesort e Quicksort

Istruzioni condizionali. Istruzioni condizionali IF-THEN- ELSE IF-THEN-ELSE. Statistica computazionale Carla Rampichini a.a.

Fratini Service di G. Fratini

Introduzione al MATLAB c Parte 2

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

OBIETTIVI SPECIFICI DI APPRENDIMENTO

ISI s.r.l. Corso di Access 05 CREARE UN ELENCO MAILING ED INVIARE MESSAGGI DI POSTA ELETTRONICA Pag. 1/6

Dipartimento di informatica CONTENUTI MINIMI DI INFORMATICA E TECNOLOGIE DELLA COMUNICAZIONE

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

1 Programmazione orientata agli oggetti

Appunti di Sistemi Elettronici

Probabilmente molti di voi conoscono o hanno già sentito parlare di Visual Basic 2008 e del Framework.NET, quindi non andremo ad approfondire molto

Corso di Visual Basic (Parte 9)

Dispensa di programmazione Visual basic

L ambiente di sviluppo Android Studio

10. Dialoghi, menu e altre meraviglie

Appendice I. Principali procedure ed istruzioni per la gestione di files, l'analisi statistica di tipo descrittivo e la correlazione semplice

AREA RETTANGOLO LIRE IN EURO

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

Introduzione alle macchine a stati (non definitivo)

PROGRAMMA DI INFORMATICA CLASSE TERZA SEZ. A. CORSO Amministrazione Finanza e Marketing. DOCENTE: Noto Giancarlo

Istruzioni per il controllo di ciclo - ciclo a condizione generica

Applicazione ASP di esempio

Corso di Informatica

PG5 Starter Training Applicazione Daniel Ernst EN Stefano Peracchi IT

CORSO DI LAUREA IN SCIENZE ERBORISTICHE E DEI PRODOTTI NUTRACEUTICI

ALGORITMI 2 FINALITÁ

UD4 - MATLAB. M-file. Efficienza degli algoritmi. Formati d uscita

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

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

I controlli di Visual Basic.NET e la programmazione pratica

APPUNTI SUL LINGUAGGIO DI PROGRAMMAZIONE PASCAL

Studente: SANTORO MC. Matricola : 528

PROGRAMMA DI SCIENZE E TECNOLOGIE APPLICATE 2015/2016 Classe 2ª Sez. C Tecnologico

Introduzione agli algoritmi e alla programmazione in VisualBasic.Net

3.5.1 PREPARAZ1ONE I documenti che si possono creare con la stampa unione sono: lettere, messaggi di posta elettronica, o etichette.

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

Al termine del capitolo, si sarà in grado di: Importante 209

Sistemi Web per il turismo - lezione 3 -

Laboratorio di architettura degli elaboratori Progetto finale AA 2005/2006

PROGRAMMA DI INFORMATICA ARTICOLAZIONE AFM/RIM CLASSE TERZA SEZ. A. DOCENTE: Noto Giancarlo

Ruggero Cerino. Strumenti informatici per indici dei nomi. Come creare un indice analitico con MS-WORD

Fondamenti dell Informatica Ricorsione e Iterazione Simona Ronchi Della Rocca (dal testo: Kfoury, Moll and Arbib, cap.5.2)

Proff. Fabio Ciao e Raffaele Bortone

Scuola Specializzazione Istruzione Superiore. Object Oriented Programming (OOP) Introduzione alla programmazione orientata agli oggetti

DAL PROBLEMA AL PROGRAMMA

PROGRAMMAZIONE con. Microsoft Visual Basic Express Edition Prof.ssa Maria Teresa Tattoli Prof.ssa Lucia Tattoli

Guida rapida. Versione 9.0. Moving expertise - not people

Transcript:

Algoritmo per l ordinamento di un array Spesso si ha la necessità di lavorare con vettori ordinati, cioè si devono mettere gli elementi in ordine alfabetico se sono stringhe o in in ordine di grandezza se sono valori numerici. Ordinare gli elementi (in inglese sort) non è un operazione semplice, soprattutto nel caso in cui la dimensione del vettore sia grande. In Visual Basic l ordinamento di un array si può realizzare con il metodo Sort della classe Array: Array.Sort (vettore) Esistono molti algoritmi di sort. Qui viene presentato uno dei più semplici: il metodo di sostituzione che è efficace per un numero piccolo di elementi da ordinare. Poiché il tipo di dati su cui si opera è ininfluente, viene descritto il procedimento operando su un array di numeri interi. Questo metodo consiste nel confronto di ciascun elemento, a cominciare dal primo fino all ultimo, con tutti gli altri elementi che sono disposti nelle posizioni successive a quella in esame. Quando tra gli elementi successivi all elemento in esame si incontra un elemento più piccolo, si procede allo scambio tra i due elementi, in modo che, alla del confronto di ciascun elemento con i successivi, si ottenga nella posizione in esame il valore minimo rispetto ai successivi. Alla gli elementi, dal più piccolo al più grande, compaiono ordinati all interno dell array a partire dal primo. Per capire meglio l algoritmo si veda il seguente esempio. Si deve ordinare il vettore: Valore 3 2 6 4 5 L algoritmo inizia prendendo in considerazione il primo elemento (3) e confrontandolo con tutti i successivi. Subito trova che 2 < 3 per cui si procede allo scambio: Valore 2 3 6 4 5 Istituto Italiano Edizioni Atlas 1

Si continua il confronto tra il primo elemento (diventato ora 2) e gli altri (6, 4 e 5), ma non si trovano elementi minori di 2. L algoritmo passa ora a confrontare il secondo (il numero 3) con tutti i successivi (6, 4, e 5) che sono tutti maggiori di 3, per cui non si opera alcuno scambio. Si passa al terzo (il 6) e si vede che il quarto (4) è minore, per cui si effettua lo scambio: Valore 2 3 4 6 5 Si continua il confronto tra l elemento di posto 2 (che ora è diventato il 4) e il restante (il 5) ma non si trovano elementi minori. Si passa al quarto (6) che è maggiore del quinto (5) per cui si effettua lo scambio: Valore 2 3 4 5 6 Tutti i confronti sono stati effettuati, per cui l algoritmo termina. Il vettore risulta ordinato. Riassumendo l esempio, i confronti da fare sono stati (vengono indicati gli indici): (0 con 1), (0 con 2), (0 con 3), (0 con 4) (1 con 2), (1 con 3), (1 con 4) (2 con 3), (2 con 4) (3 con 4) Quindi 4+3+2+1=10 scambi. Nel caso di un vettore con n elementi gli scambi saranno (n-1)+(n-2)+(n-3)+ +3+2+1=n*(n-1)/2 I confronti da fare risultano numerosi: per un vettore di 100 componenti ne occorrono quasi 5000. L algoritmo è molto semplice, ma è utilizzabile solamente per vettori di piccole dimensioni. Progetto Ordinare un array di numeri con il metodo di sostituzione. Si deve creare il programma che permette di caricare e di ordinare le componenti di un vettore utilizzando il metodo di sostituzione. Vengono riutilizzati gli algoritmi Carica e Mostra del progetto precedente. Dati di input: dimensione del vettore componenti del vettore Dati di output: vettore ordinato. Nome del progetto Sostituzione di tipo Applicazione Windows Form Istituto Italiano Edizioni Atlas 2

Disegno dell interfaccia grafica Sono presenti i controlli del progetto precedente che permettono di caricare e di visualizzare il vettore. In aggiunta è presente il pulsante di comando Ordina per eseguire l ordinamento del vettore. Classe Proprietà dell oggetto Form Name frmordina Text Ordina ListBox Name lstcomponenti Button Name btnordina Text Ordina Button Name btnmostra Text Mostra Button Name btncarica Text Carica Button Name btnesci Text Esci frmordina btnordina btncarica btnmostra lstcomponenti btnesci Gestione degli eventi Per lo sviluppo completo del programma occorre distinguere tre sottoproblemi e un ulteriore sottoproblema per lo scambio, secondo lo schema gerarchico: SORT Carica vettore Ordina Mostra vettore Scambia Occorre organizzare due iterazioni enumerative nidificate l una rispetto all altra. Nell iterazione più esterna viene percorso tutto il vettore fino al penultimo elemento, mentre la più interna prende in considerazione tutti gli elementi a destra di quello individuato dall iterazione esterna. Se il primo elemento risulta minore del secondo si procede allo scambio. Il problema in esame contiene, quindi, al suo interno il sottoproblema dello scambio del contenuto di due variabili. Algoritmo in pseudocodifica per i da 0 a dimensione - 2 per j da i+1 a dimensione - 1 se vettore(i) > vettore(j) allora scambia(i,j) se ripeti ripeti Istituto Italiano Edizioni Atlas 3

Diagramma a blocchi i = 0 j = 1 i<=d 2 F V j<=d 1 F F V V(i)>V(j) V scambia(i,j) incrementa j incrementa i Algoritmo in pseudocodifica scambia(x, y) assegna temp = vettore(x) assegna vettore(x) = vettore(y) assegna vettore(y) = temp Diagramma a blocchi temp = vettore(x) vettore(x) = vettore(y) vettore(y) = temp Istituto Italiano Edizioni Atlas 4

Codice Visual Basic Const Max As Integer = 10 Dim dimensione As Integer = 0 Dim vettore() As Integer Private Sub btncarica_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles btncarica.click Do dimensione = InputBox("Inserisci la dimensione", "Chiedi dimensione") Loop Until dimensione >= 1 And dimensione <= Max ReDim vettore(dimensione - 1) For i = 0 To dimensione - 1 vettore(i) = InputBox("Inserisci il " & i + 1 & " elemento", "Inserisci") Private Sub btnmostra_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles btnmostra.click lstcomponenti.items.clear() For Each valore In vettore lstcomponenti.items.add(valore) Private Sub scambia(byval x As Integer, ByVal y As Integer) Dim temp As Integer temp = vettore(x) vettore(x) = vettore(y) vettore(y) = temp Private Sub btnordina_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles btnordina.click For i = 0 To dimensione - 2 For j = i + 1 To dimensione - 1 If vettore(i) > vettore(j) Then scambia(i, j) End If Private Sub btnesci_click(byval sender As System.Object, ByVal e As System.EventArgs) Handles btnesci.click End End Class Istituto Italiano Edizioni Atlas 5

Il codice associato ai pulsanti di comando Carica, Mostra e Fine è identico a quello del Progetto 1. Prova di esecuzione Si inseriscono i dati come nel Progetto 1. Facendo clic sul pulsante Mostra, si visualizzano i dati per verificare che non siano già ordinati. Facendo clic sul pulsante Ordina i dati vengono ordinati. Per verificare il corretto ordinamento è necessario fare clic di nuovo sul pulsante Mostra. Istituto Italiano Edizioni Atlas 6