Precisazione sulla visibilità delle variabili durante l esecuzione delle funzioni
|
|
- Violetta Fabbri
- 6 anni fa
- Visualizzazioni
Transcript
1 Precisazione sulla visibilità delle variabili durante l esecuzione delle funzioni var a = new Array (4); var y= 7; function foo(vet,x) { var i=0;... } //fine foo foo(a,y); print(y); Stato {(a, ),(y,7) (foo, function (vet,x) {...}), (vet, ), (x,7) (i,0)} undefined a e vet sono 2 nomi diversi per lo stesso 2 undefined array, mentre y e x sono due variabili diverse 3 undefined che per un accidente hanno lo stesso valore E. Occhiuto Fondamenti Teorici e Programmazione- 437AA pag. 1
2 Precisazione sulla visibilità delle variabili durante l esecuzione delle funzioni var a = new Array (4); var y= 7 function foo(vet,x) { var i=0; x=34;... } //fine foo foo(a,y); print(y); Stato {(a, ),(y,7) (foo, function (vet,x) {...}), (vet, ), (x,34) (i,0)} undefined se modifico x, y rimane invariato. y è visibile 2 undefined e modificabile nella funzione ma è globale: da 3 undefined vietato usarle in questo corso E. Occhiuto Fondamenti Teorici e Programmazione- 437AA pag. 2
3 Non è necessario usare nomi diversi var a = new Array (4); var y= 7 function foo(a,y) { var i=0; y=34; } //fine foo foo(a,y); print(y); Stato {(a, ),(y,7) (foo, function (a,y) {...}), (a, ), (y,7) (i,0)} undefined le variabili locali alla funzione hanno gli stessi 2 undefined 3 undefined nomi delle variabili globali ma sono variabili diverse E. Occhiuto Fondamenti Teorici e Programmazione- 437AA pag. 3
4 Non è necessario usare nomi diversi var a = new Array (4); var y= 7 function foo(a,y) { var i=0; y=34; } //fine foo foo(a,y); print(y); Stato {(a, ),(y,7) (foo, function (a,y) {...}), (a, ), (y,34) (i,0)} undefined le variabili globali non sono in questo caso 2 undefined 3 undefined accessibili perchè sono coperte dalle variabili locali. E. Occhiuto Fondamenti Teorici e Programmazione- 437AA pag. 4
5 Non è necessario usare nomi diversi var a = new Array (4); var y= 7 function foo(a,y) { var i=0; y=34; } //fine foo foo(a,y); print(y); Stato {(a, ),(y,7) (foo, function (a,y) {...}), (a, ), (y,34) (i,0)} undefined 2 undefined 3 undefined Quando l esecuzione della funzione termina, il controllo torna al programma chiamante e le variabili ritornano accessibili. print(y) stampa 7. E. Occhiuto Fondamenti Teorici e Programmazione- 437AA pag. 5
6 Funzioni che restituiscono array In JavaScript le funzioni possono anche restituire array come risultato della computazione: Esempio: La funzione leggivet può essere scritta anche cosi : var k = asknum(), a; function leggivet(n) { var vet=new Array(n), i; for (i = 0; i < vet.length; i++) vet[i]=asknum(); return vet; //fine leggivet } a=leggivet(k);... Il chiamante passa alla funzione solo la dimensione (k) dell array da creare e inizializzare e dichiara la variabile a senza inizializzarla. E. Occhiuto Fondamenti Teorici e Programmazione- 437AA pag. 6
7 Evoluzione dello stato var k=asknum(), a; function leggivet(n) { var i, vet=new Array(n), i;; for (i=0; i<vet.length; i++) vet[i]=asknum(); return vet;//fine leggivet } a=leggivet(k); Stato {(k,4), (a,undefined ), (leggivet, function (n) {...})} Stato in cui viene invocata leggivet nel caso in cui il valore in input sia 4. L esecuzione del programma principale viene sospesa e passa ad eseguire la funzione. E. Occhiuto Fondamenti Teorici e Programmazione- 437AA pag. 7
8 Evoluzione dello stato var k=asknum(), a; function leggivet(n) { var vet=new Array(n), i; for (i=0; i<vet.length; i++) vet[i]=asknum(); return vet;//fine leggivet } a=leggivet(k); Stato {(k,4), (a,undefined ), (leggivet, function (n) {...}),(n,4), (vet, ), (i,undefined),} 0 undefined 1 undefined 2 undefined 3 undefined Stato durante l invocazione di leggivet, dopo la dichiarazione delle variabili E. Occhiuto Fondamenti Teorici e Programmazione- 437AA pag. 8
9 Evoluzione dello stato var k=asknum(), a; function leggivet(n) { var vet=new Array(n), i; for (i=0; i<vet.length; i++) vet[i]=asknum(); return vet;//fine leggivet } a=leggivet(k); Stato {(k,4), (a,undefined ), (leggivet, function (n) {...}),(n,4), (vet, ), (i,4),} Stato durante l invocazione di leggivet, dopo l esecuzione del for nel caso in input siano stati immessi i valori 8,-2,0, E. Occhiuto Fondamenti Teorici e Programmazione- 437AA pag. 9
10 Evoluzione dello stato var k=asknum(), a; function leggivet(n) { var vet=new Array(n), i; for (i=0; i<vet.length; i++) vet[i]=asknum(); return vet;//fine leggivet } a=leggivet(k); Stato {(k,4), (a, ), (leggivet, function (n) {...})} Stato dopo la terminazione dell asecuzione di 0 8 leggivet e dell assegnamento del reference, 1-2 risultato della invocazione alla variabile a del chiamante. E. Occhiuto Fondamenti Teorici e Programmazione- 437AA pag. 10
11 Ordinamento Data una sequenza di elementi in ordine qualsiasi, ordinarla. Questo è un problema fondamentale, che si presenta in moltissimi contesti, ed in diverse forme. Nel nostro caso formuliamo il problema in termini di ordinamento di vettori: Dato un array A di n elementi, ordinarlo in modo crescente Per semplicità faremo sempre riferimento a vettori di interi. = E. Occhiuto Fondamenti Teorici e Programmazione- 437AA pag. 11
12 Ordinamento per selezione del minimo (selection sort) Esempio: Ordinamento di un mazzo di carte Ho 2 gruppi di carte: N carte non ordinate, O carte ordinate si seleziona la carta più piccola di N e la si inserisce in prima posizione in O delle rimanenti di N si seleziona la più piccola e la si inserisce in seconda posizione in O ecc. rimane una sola carta in N e la si inserisce in ultima posizione in O si termina quando non ci sono più carte Ordinamento di un array, abbiamo 2 cicli : per inserire l elemento corretto in ogni posizione dell array (scansione di tutto l array) per ogni posizione è neccessario selezionare l elemento più piccolo tra i rimanenti. Per non perdere elementi e per lavorare sui rimanenti dobbiamo scambiare l elemento più piccolo selezionato con l elemento che si trova nella posizione corrente. In questo modo abbiamo una porzione di array non ordinata (N) e una porzione di array ordinata (O). E. Occhiuto Fondamenti Teorici e Programmazione- 437AA pag. 12
13 in nero la parte che rimane da analizzare (N) in blu l elemento minimo selezionato in verde lo scambio effettuato in rosso la parte ordinata (O) in marrone gli indici E. Occhiuto Fondamenti Teorici e Programmazione- 437AA pag. 13
14 Implementazione dell ordinamento per ricerca dei minimi in JavaScript Definiamo la funzione principale selsort function selsort(vet){ var i, temp,k; for (i=0; i<vet.length-1; i++) {k=minpos(vet,i,vet.length); temp=vet[i]; vet[i]=vet[k]; vet[k]=temp; } Resta da definire minpos E. Occhiuto Fondamenti Teorici e Programmazione- 437AA pag. 14
15 Implementazione della ricerca della posizione dell elemento minimo in una porzione di array Definizione della funzione minpos che calcola la posizione dell elemento dell array che contiene il valore minimo relativamente all porzione di array contenuta tra i valori dei 2 indici passati come parametri (i, vet.length-1) function minpos(vet,from, to){ var min=from; for (from++; from<=to; from++) if (vet[from]<vet[min]) min=from; return min; } Sono tutti necessari i 3 parametri di minpos? E. Occhiuto Fondamenti Teorici e Programmazione- 437AA pag. 15
16 Programma principale per testare la procedura di ordinamento definita Usiamo la procedura leggivet definita precedentemente e la print predefinita. var a=new Array(8); leggivet(a); //inizializzazione di a print(a); //stampa di a selsort(a); //ordinamento di a print(a); //nuova stampa di a E. Occhiuto Fondamenti Teorici e Programmazione- 437AA pag. 16
17 Ordinamento a bolle (bubble sort) Èsimilealprecedente,cambiailmododiportarel elementominimo della porzione di array ancora non ordinata nella posizione corretta. l idea è che si fanno galleggiare gli elementi più piccoli ( più leggeri ) verso l inizio dell array ( verso l alto ), scambiandoli con quelli adiacenti. L ordinamento è suddiviso in n-1 fasi: fase 0: 0 o elemento (il più piccolo) in posizione 0 fase 1: 1 o elemento in posizione 1 fase n-2: (n-2) o elemento in posizione n-2, equindi (n-1) o elemento in posizione n-1 Nella fase i: cominciamo a confrontare dal basso e portiamo l elemento più piccolo (più leggero) in posizione i E. Occhiuto Fondamenti Teorici e Programmazione- 437AA pag. 17
18 E. Occhiuto Fondamenti Teorici e Programmazione- 437AA pag. 18
19 Si usano due for annidati: il più esterno itera sulle i posizioni dell array. il più interno per portare l elemento più piccolo (della porzione non ordinata) in posizione i-esima function bubblesort(vet) { var temp,i,j; for (i = 0; i < vet.length-1; i++) for (j = vet.length-1; j > i; j--) if (vet[j] < vet[j-1]){ temp=vet[j]; vet[j]= vet[j-1]; vet[j-1]=temp;} } E. Occhiuto Fondamenti Teorici e Programmazione- 437AA pag. 19
20 Operazioni che sfruttano la dinamicità degli array L operazione primitiva che permette di modificare il numero degli elementi di un array è l aggiunta di uno o più elementi in fondo all array: Esempio: vet[vet.length]=asknum(); Aggiunge un elemento all array vet di indice vet.length e valore letto dall input. Esempio: vet[vet.length+2]=asknum(); Aggiunge 3 elementi all array vet due di indice vet.length e vet.length+1 e valore undefined eunodiindicevet.length+2 e valore letto dall input. esistono alcune operazioni (metodi) predefinite che permettono anche di eliminare elementi da un array. Li vedremo più avanti. tutti gli esempi visti considerano array il cui numero di elementi resta costante durante tutta l esecuzione. Vediamo ora degli esempi di programmi che aggiungono elementi ad un array. E. Occhiuto Fondamenti Teorici e Programmazione- 437AA pag. 20
21 Inserzione di un elemento in un array ordinato Se una struttura dati (array) è statica ovvero il numero dei suoi elementi non cambia, ha senso avviare una procedura di ordinamento al momento dell inizializzazione. Se viceversa una struttura dati (array) è dinamica la cosa più sensata è di mantenerla ordinata, inserendo i nuovi elementi in modo che rispettino l ordinamento. notare che un array vuoto, dimensione 0 è ordinato per definizione e lo stesso vale per un array di un unico elemento. per inserire un nuovo elemento al posto giusto dobbiamo scorrere gli elementi che lo precedono per decidere la posizione che gli compete spostare di un posto verso destra gli elementi maggiori per fargli spazio. E. Occhiuto Fondamenti Teorici e Programmazione- 437AA pag. 21
22 Un esempio In nero l elemento da inserire, in rosso gli elementi già inseriti nell array [] in blu gli elementi già inseriti che è stato necessario spostare al passo precedente se l elemento da inserire andrà ad occupare una posizione già occupata, l elemento corrispondente è sottolineato. 5 [ ] [5] 2 [5] [2, 5] 4 [2, 5] [2, 4, 5] 1 [2, 4, 5] [1, 2, 4, 5] 3 [1, 2, 4, 5] [1, 2, 3, 4, 5] E. Occhiuto Fondamenti Teorici e Programmazione- 437AA pag. 22
23 Una volta individuata la posizione i in cui inserire il nuovo elemento dobbiamo farle spazio, ovvero spostare verso destra di una posizione tutti gli elementi da i in poi. Inserzione di 3, da inserire in posizione È necessario spostare 5 in posizione 4 e 4 in posizione 3 A questo punto la posizione 2 è libera e possiamo inserire l elemento in modo ordinato Se l elemento da inserire è maggiore di tutti gli elementi dell array non dobbiamo spostare nulla, ma inserire in fondo. E. Occhiuto Fondamenti Teorici e Programmazione- 437AA pag. 23
24 Shift a destra per array dinamici Dobbiamo perciò definire una procedura che sposta tutti gli elementi di un array (vet verso destra di una posizione a partire da una data posizione from<vet.length). dobbiamo aggiungere un nuovo elemento all array che ha come valore il valore dell elemento che si trova in ultima posizione, che quindi non viene perso Bisogna procedere da destra verso sinistra per non perdere gli elementi function shiftrd(vet, from) { var j; for (j=vet.length; j>from; j--) vet[j]=vet[j-1]; } E. Occhiuto Fondamenti Teorici e Programmazione- 437AA pag. 24
25 Possiamo ora definire la procedura di ordinamento per inserzione come segue function insord(vet, x){ var i=0, trovato=false; while (i<vet.length &&!trovato) { if (a[i]<x) i++; else trovato=true;} if (!trovato) a[vet.length]=x; else { shiftrd(vet, i); vet[i]=x; } } i è la posizione in cui dobbiamo inserire il nuovo elemento, è cioè in caso di ordinamento crescente la posizione del primo elemento che risulta > del valore che stiamo inserendo. se sono ammessi elementi ripetuti cambia qualcosa? E. Occhiuto Fondamenti Teorici e Programmazione- 437AA pag. 25
26 Un altra soluzione più compatta Questa soluzione utilizza una funzione insertinpos con 3 parametri: l array vet, la posizione p in cui inserire l elemento l elemento da inserire x La funzione si preoccupa di spostare a destra tutti gli elementi, aumentando la dimensione dell array per poter memorizzare un elemento in più. function insertinpos(vet,p,x) { var j; for (j=vet.length; j>p; j--) vet[j]=vet[j-1]; vet[i]=x; } E. Occhiuto Fondamenti Teorici e Programmazione- 437AA pag. 26
27 La nuova definizione della funzione insord Notare la guardia del while (i<vet.length && a[i]<x). Questa condizione è corretta per la regola di valutazione stretta dell &&. Se la prima condizione i<vet.length è falsa, la seconda condizione a[i]<x non viene valutata. function insord(vet, x){ var i=0, while (i<vet.length && a[i]<x) i++; insertinpos(vet, i, x); } E. Occhiuto Fondamenti Teorici e Programmazione- 437AA pag. 27
28 Ancora un altra soluzione per insord Questa soluzione usa un metodo predefinito su oggetti array, invece della funzione insertinpos definita sopra: il metodo splice viene invocato con nomearray.splice(p,0,x), quindi abbiamo: function insord(vet, x){ var i=0, while (i<vet.length && a[i]<x) i++; vet.splice(i,0, x); } E. Occhiuto Fondamenti Teorici e Programmazione- 437AA pag. 28
29 Eliminazione di elementi da un array La rimozione di un elemento da un array non è un operazione primitiva e può essere effettuata solo attraverso i metodi: uno di questi è ancora il metodo splice, indicando la posizione del primo elemento da rimuovere e il numero di elementi da rimuovere, ad esempio con nomearray.splice(p,1), viene rimosso l elemento in posizione p : function EliminaElem(vet, x){ var i=0, while (i<vet.length && a[i]<=x) i++; if (i!=vet.length) vet.splice(i,1); } E. Occhiuto Fondamenti Teorici e Programmazione- 437AA pag. 29
30 Merge di due array ordinati a b c 0 Si scandiscono a e b insieme finchè entrambi contengono elementi e si seleziona l elemento più piccolo tra i due esaminati, che viene aggiunto a c dinamicamente. Abbiamo 3 indici uno per ogni array. E. Occhiuto Fondamenti Teorici e Programmazione- 437AA pag. 30
31 Merge di due array ordinati a b c Situazione finale E. Occhiuto Fondamenti Teorici e Programmazione- 437AA pag. 31
32 Merge di due array ordinati function merge (a,b){ var c=new Array(), i=0,j=0,k=0; while (i<a.length && j<b.length) {if (a[i] < b[j]) {c[k]=a[i]; i++;} else {c[k]=b[j]; j++;} k++;} while (i<a.length) {c[k]=a[i]; i++;k++;} while (j<b.length) {c[k]=b[j]; j++;k++;} return c; } E. Occhiuto Fondamenti Teorici e Programmazione- 437AA pag. 32
Tipi di dato strutturati: Array
Tipi di dato strutturati: Array I dati visti finora sono: numeri (interi o razionali), booleani le stringhe (sequenze di caratteri) ma i dati manipolati nelle applicazioni reali sono spesso complessi (o
DettagliFondamenti di Informatica. Algoritmi di Ricerca e di Ordinamento
Fondamenti di Informatica Algoritmi di Ricerca e di Ordinamento 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare se un elemento fa parte della sequenza oppure l elemento
Dettagliprint((math.floor(1345/10)%10); print (Math.floor(1345/100)%10); Le funzioni in JavaScript
Funzioni Funzioni predefinite della libreria matematica Funzioni disponibili: Math.sqrt(x) radice quadrata Math.log(x) logaritmo naturale in base e di x Math.abs(x) valore assoluto di x Math.ceil(x) arrotonda
Dettagli6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
6 - Blocchi e cicli Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it
DettagliAlgoritmi e Strutture Dati. Capitolo 4 Ordinamento: Selection e Insertion Sort
Algoritmi e Strutture Dati Capitolo 4 Ordinamento: Selection e Insertion Sort Ordinamento Dato un insieme S di n elementi presi da un dominio totalmente ordinato, ordinare S in ordine non crescente o non
DettagliAlgoritmi di ordinamento e ricerca. Classe SelSort.java
Classe SelSort.java public class SelSort Trova l elemento più piccolo nella porzione finale di un array. @param a l array da esplorare @param from la posizione iniziale dell intervallo @return la posizione
Dettagliosservazione: 1 MCD(m,n) min(m,n) = si provano i numeri compresi tra 1 e min(m,n) conviene iniziare da min(m,n) e scendere verso 1
Esempio: Leggere due interi positivi e calcolarne il massimo comun divisore. MCD(12, 8) = 4 MCD(12, 6) = 6 MCD(12, 7) = 1 Sfruttando direttamente la definizione di MCD osservazione: 1 MCD(m,n) min(m,n)
DettagliAppunti di informatica. Lezione 10 anno accademico Mario Verdicchio
Appunti di informatica Lezione 10 anno accademico 2016-2017 Mario Verdicchio Esercizio Scrivere un programma che, data una sequenza di 10 interi (scelta dall utente), la ordini in ordine crescente Soluzione
DettagliLe funzioni in JavaScript. Modularizzazione
Modularizzazione Quando abbiamo a che fare con un problema complesso spesso lo suddividiamo in problemi più semplici che risolviamo separatamente, per poi combinare insieme le soluzioni dei sottoproblemi
DettagliAlgoritmi di Ricerca. Esempi di programmi Java
Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare
Dettagli18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
18 - Vettori Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://pages.di.unipi.it/milazzo milazzo di.unipi.it Corso di
DettagliFondamenti di informatica T-1 (A K) Esercitazione 2: Linguaggio Java, basi e controllo del flusso
Fondamenti di informatica T-1 (A K) Esercitazione 2: Linguaggio Java, basi e controllo del flusso AA 2015/2016 Tutor: Vincenzo Lomonaco vincenzo.lomonaco@unibo.it Programma Introduzione al calcolatore
DettagliAlgoritmi di Ricerca. Esempi di programmi Java
Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare
DettagliProgrammazione I - corso B a.a prof. Viviana Bono
Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 2009-10 prof. Viviana Bono Blocco 15 Algoritmi su array: selection sort, insertion sort, fusione
DettagliEsercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni
Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni Esercizio 1 Dire quale è la complessità temporale del seguente metodo, espressa con notazione asintotica O(.) (con la migliore
DettagliAlgoritmi di ordinamento: Array e ricorsione
Laboratorio di Algoritmi e Strutture Dati Aniello Murano http://people.na.infn.it people.na.infn.it/~murano/ 1 Algoritmi di ordinamento: Array e ricorsione 2 1 Indice Algoritmi di ordinamento: Insertion
Dettagli7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari
7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa
DettagliIl linguaggio C. Puntatori e dintorni
Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;
DettagliProblema: calcolare il massimo tra K numeri
Problema: calcolare il massimo tra K numeri Scrivere un algoritmo che fornisca in input ad un programma un numero K e K interi positivi. L algoritmo deve restituire il valore massimo tra quelli introdotti
DettagliCompletiamo le istruzioni condizionali: Istruzione switch Può essere usata per realizzare una selezione a più vie. Sintassi:
Completiamo le istruzioni condizionali: Istruzione switch Può essere usata per realizzare una selezione a più vie. Sintassi: switch (espressione) { case espressione-1: istruzioni-1... case espressione-n:
DettagliDefinizione di classi. Walter Didimo
Definizione di classi Walter Didimo Definizione di classi Fino ad ora abbiamo imparato a: creare oggetti da classi già pronte usare gli oggetti creati, invocando metodi la creazione e l uso di oggetti
DettagliFinestre di dialogo. Corso di Laboratorio di Programmazione Web. Controllo dell input e window.alert. prompt di stringhe!
Corso di Funzioni ed Oggetti Finestre di dialogo prompt( Inserisci il valore, 1000 ); restituisce la stringa inserita nel campo alarm( Stai per uscire! ); Dipartimento di Informatica Università degli Studi
DettagliC: panoramica. Violetta Lonati
C: panoramica Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010 Violetta Lonati
DettagliProf. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1
Operazioni sulle liste Definiamo una serie di procedure e funzioni per operare sulle liste. Usiamo liste di interi per semplicità, ma tutte le operazioni sono realizzabili in modo del tutto analogo su
DettagliLaboratorio di Programmazione Appunti sulla lezione 4: Divide et impera e algoritmi di ordinamento
Laboratorio di Programmazione Appunti sulla lezione 4: Divide et impera e algoritmi di ordinamento Alessandra Raffaetà Università Ca Foscari Venezia Corso di Laurea in Informatica Ricerca binaria Assunzione:
DettagliArray e Oggetti. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 12. A. Miola Dicembre 2006
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 12 Array e Oggetti A. Miola Dicembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Array e Oggetti 1 Contenuti Array paralleli
DettagliStrutture dati. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05
Strutture dati Il che cosa e il come Il che cosa ed il come Struttura dati: descrive come sono organizzati i dati e come sono realizzate le operazioni su di essi (cioe come si accede ai dati) Specifica
DettagliJavaScript Core Language. Prof. Francesco Accarino IIS Atiero Spinelli Sesto San Giovanni via leopardi 132
JavaScript Core Language Prof. Francesco Accarino IIS Atiero Spinelli Sesto San Giovanni via leopardi 132 Condizioni L utilizzo di operatori relazionali e logici consente di formulare delle condizioni
DettagliAlgoritmi di ordinamento
Algoritmi di ordinamento! Selection Sort! Quick Sort! Lower bound alla complessità degli algoritmi di ordinamento Ordinamento 1 Selection Sort SelectionSort(dati[]) { for (i=0; idati.length-1; i++) { min
DettagliEsercitazione 7. Tutor: Ing. Diego Rughetti. Anno Accademico 2007/2008
Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Esercitazione 7 Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica (Canale di Ingegneria delle Reti
DettagliProblema: conteggio occorrenze
Problema: conteggio occorrenze start read N,X i := 0 occorrenze := 0 vero vero i < N vettore[i]=x falso write occorrenze end occorrenze := occorrenze + 1 falso i := i + 1 Codice Javascript: prima parte
Dettagli9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
9 - Array Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di Laurea
DettagliUniversità di Roma Tor Vergata L12-1
Università di Roma Tor Vergata L12-1 soluzione di un problema fl 1) definizione di una rappresentazione 2) specificazione di un algoritmo (dipendente dalla rappresentazione) 3) traduzione in un linguaggio
DettagliRappresentazione degli algoritmi
Rappresentazione degli algoritmi Universitá di Ferrara Ultima Modifica: 21 ottobre 2014 1 1 Diagramma di flusso Utilizzare il diagramma di flusso per rappresentare gli algoritmi che risolvono i seguenti
DettagliErrori frequenti Cicli iterativi Array. Cicli e array. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.
Cicli e array Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7 Lez. 8 - Introduzione all ambiente
DettagliLe strutture di controllo
INFORMATICA B Ingegneria Elettrica Le strutture di controllo Selezione un esempio introduttivo Si disegni il diagramma di flusso di un algoritmo che chiede all utente un valore intero e visualizza il suo
DettagliCalcolare x n = x x x (n volte)
Calcolare x n = x x x (n volte) Abbiamo bisogno di: una variabile ris in cui ad ogni iterazione del ciclo si ha un risultato parziale, e che dopo l ultima iterazione contiene il risultato finale; una variabile
DettagliUn esempio di calcolo di complessità: insertion sort
Un esempio di calcolo di complessità: insertion sort Vediamo su un esempio come si può calcolare la complessità di un algoritmo... L esempio è un metodo semplice per ordinare arrays: insertion sort, o
DettagliProgrammazione, 5 a lezione
Programmazione, 5 a lezione Eugenio Omodeo Dipartimento di Matematica e Informatica, Università degli Studi di Trieste. Trieste, 12.10.2010 Esecuzione sequenziale I All avvio di un programma, il processo
Dettagli1) definizione di una rappresentazione 2) specificazione di un algoritmo (dipendente dalla rappresentazione) 3) traduzione in un linguaggio
soluzione di un problema 1) definizione di una rappresentazione 2) specificazione di un algoritmo (dipendente dalla rappresentazione) 3) traduzione in un linguaggio rappresentazioni disponibili in C++:
DettagliLinguaggio C: le funzioni. Introduzione e sintassi
ISIS "Guido Tassinari" di Pozzuoli Indirizzo Informatico - Articolazione Informatica Informatica Prof. A.S. 2012/2013 Linguaggio C: le funzioni. Introduzione e sintassi 21/10/2012 Introduzione Spesso alcuni
DettagliProgrammazione I - Laboratorio
Programmazione I - Laboratorio Esercitazione 3 - Array Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ mezzetti mezzetti di.unipi.it 2. Dipartimento
DettagliIl tipo astratto coda con priorità: specifiche sintattiche e semantiche. Realizzazioni.
Il tipo astratto coda con priorità: specifiche sintattiche e semantiche. Realizzazioni. Algoritmi e Strutture Dati + Lab A.A. 14/15 Informatica Università degli Studi di Bari Aldo Moro Nicola Di Mauro
DettagliLinguaggio C - le strutture di controllo: sequenza, selezione, iterazione
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione
DettagliFondamenti di Informatica
Fondamenti di Informatica AlgoBuild: Strutture selettive, iterative ed array Prof. Arcangelo Castiglione A.A. 2016/17 AlgoBuild : Strutture iterative e selettive OUTLINE Struttura selettiva Esempi Struttura
DettagliSemplici Algoritmi di Ordinamento
Fondamenti di Informatica Semplici Algoritmi di Ordinamento Fondamenti di Informatica - D. Talia - UNICAL 1 Ordinamento di una sequenza di elementi Esistono molti algoritmi di ordinamento. Tutti ricevono
DettagliEsercizi di Algoritmi e Strutture Dati
Esercizi di Algoritmi e Strutture Dati Moreno Marzolla marzolla@cs.unibo.it Ultimo aggiornamento: 10 novembre 2010 1 La bandiera nazionale (problema 4.7 del libro di testo). Il problema della bandiera
DettagliConcetto di Funzione e Procedura METODI in Java
Fondamenti di Informatica Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile
DettagliEsercitazione 11. Liste semplici
Esercitazione 11 Liste semplici Liste semplici (o lineari) Una lista semplice (o lineare) è una successione di elementi omogenei che occupano in memoria una posizione qualsiasi. Ciascun elemento contiene
DettagliLaboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007
Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2006/2007 Dott.Davide Di Ruscio Dipartimento di Informatica Università degli Studi di L Aquila Lezione del 07/02/07 Nota Questi lucidi sono tratti
DettagliEsercizi C su array e matrici
Politecnico di Milano Esercizi C su array e matrici Massimo, media e varianza,, ordinamento, ricerca e merge, matrice simmetrica, puntatori Array Array o vettore Composto da una serie di celle int vett[4]
Dettaglin n 1 n = > Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita
Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita n! = 1 n( n 1)! se se n n = > 0 0 dove n è un numero intero non negativo Il calcolo del fattoriale
DettagliIntroduzione al MATLAB c Parte 3 Script e function
Introduzione al MATLAB c Parte 3 Script e function Lucia Gastaldi DICATAM - Sezione di Matematica, http://lucia-gastaldi.unibs.it Indice 1 M-file di tipo Script e Function Script Function 2 Gestione dell
DettagliELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli
ELEMENTI DI INFORMATICA L-B Ing. Claudia Chiusoli Materiale Lucidi delle lezioni Date degli appelli Testi di esami precedenti Informazioni e contatti http://www.lia.deis.unibo.it/courses/ Programma del
DettagliAlgoritmi greedy. Gli algoritmi che risolvono problemi di ottimizzazione devono in genere operare una sequenza di scelte per arrivare alla soluzione
Algoritmi greedy Gli algoritmi che risolvono problemi di ottimizzazione devono in genere operare una sequenza di scelte per arrivare alla soluzione Gli algoritmi greedy sono algoritmi basati sull idea
DettagliLaboratorio di Programmazione Appunti sulla lezione 4: Divide et impera e algoritmi di ordinamento
Laboratorio di Programmazione Appunti sulla lezione 4: Divide et impera e algoritmi di ordinamento Alessandra Raffaetà Università Ca Foscari Venezia Corso di Laurea in Informatica Ricerca binaria Assunzione:
DettagliFunzioni, Stack e Visibilità delle Variabili in C
Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7
DettagliFondamenti di Informatica
Algoritmi di ordinamento Gli ordinamenti interni sono fatti su sequenze in memoria centrale Fondamenti di Informatica 18. Algoritmi di ordinamento in C++ Gli ordinamenti esterni sono fatti su sequenze
DettagliSommario. Ordinamento. Selection Sort Bubble Sort/ Shaker Sort Shell Sort
Ordinamento Sommario Ordinamento Selection Sort Bubble Sort/ Shaker Sort Shell Sort Cosa e' l'ordinamento Il problema consiste nell elaborare insiemi di dati costituiti da record I record hanno sono costituiti
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Prova Intermedia Marzo 2011 http://www.dia.uniroma3.it/~java/fondinf/ Prova Intermedia 1 Modalità della Prova Intermedia La Prova Intermedia
DettagliEsercitazione 6. Array
Esercitazione 6 Array Arrays Array (o tabella o vettore): è una variabile strutturata in cui è possibile memorizzare un numero fissato di valori tutti dello stesso tipo. Esempio int a[6]; /* dichiarazione
DettagliFondamenti di Informatica T-1 Modulo 2
Fondamenti di Informatica T-1 Modulo 2 1 Obiettivi di questa esercitazione 1. Array e funzioni 2. Array e funzioni ricorsive 3. Array e confronto di array 2 Esercizio 1 Creare un programma che legga da
DettagliFunzioni in C. Funzioni. Strategie di programmazione. Funzioni in C. Come riusare il codice? (2/3) Come riusare il codice? (1/3)
Funzioni Il concetto di funzione Parametri formali e attuali Il valore di ritorno Definizione e chiamata di funzioni Passaggio dei parametri Corpo della funzione 2 Strategie di programmazione Riuso di
DettagliI Tipi di Dato Astratto
I Tipi di Dato Astratto Sommario Cosa sono le Strutture Dati Astratte? Le strutture dati Le operazioni Come scegliere fra varie implementazioni? Quale è la questione? Come organizzare (strutturare) i dati
DettagliIndividuazione di sottoproblemi
Individuazione di sottoproblemi Quando il problema è complesso conviene partire con una individuazione di sottoproblemi Scriviamo un algoritmo contenente azioni o condizioni complesse per l esecutore che
DettagliUniversità degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso
Obiettivi Di seguito vengono riportate una serie di domande che possono essere poste durante la prova formale del corso. Le seguenti domande non sono da ritenersi esaustive ma esemplificative. 1. Architettura
DettagliProgrammazione con Java
Programmazione con Java Classi e istanze in Java Definizione di classe in Java A meno che non si usino classi già scritte da altri, prima di poter creare un qualsiasi oggetto devo creare la sua rappresentazione:
DettagliRichiami di Fondamenti di Informatica - 1
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 2 Richiami di Fondamenti di Informatica - 1 A. Miola Febbraio 2008 http://www.dia.uniroma3.it/~java/fondinf1/ Richiami di FdI-1
DettagliLinguaggio C. tipi di dati definiti dall utente. Università degli Studi di Brescia. Docente: Massimiliano Giacomin
Linguaggio C tipi di dati definiti dall utente Università degli Studi di Brescia Docente: Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 Tipi di dati in C Predefiniti
DettagliA. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas
Classi e oggetti A. Lorenzi, A. Rizzi Java. Programmazione ad oggetti e applicazioni Android Istituto Italiano Edizioni Atlas Oggetti La programmazione orientata agli oggetti, OOP (Object-Oriented Programming),
Dettaglin n 1 n = > Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita
Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita n! = 1 n( n 1)! se se n n = > 0 0 dove n è un numero intero non negativo Il calcolo del fattoriale
DettagliFondamenti di Informatica 6. Algoritmi e pseudocodifica
Vettori e matrici #1 Fondamenti di Informatica 6. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile A.A. 2010-2011 1 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie
DettagliFondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011
Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario Istruzione condizionale switch Istruzioni di salto break e continue Uso di variabili di tipo boolean Variabili di tipo array (monodimensionali)
DettagliStrategie di programmazione
Funzioni Funzioni in C Il concetto di funzione Parametri formali e attuali Il valore di ritorno Definizione e chiamata di funzioni Passaggio dei parametri Corpo della funzione 2 Funzioni in C Strategie
DettagliI puntatori sono tipi di variabili il cui valore rappresenta un indirizzo della memoria.
Puntatori I puntatori sono tipi di variabili il cui valore rappresenta un indirizzo della memoria. NOTA: quando un programma viene mandato in esecuzione, ad esso viene assegnata un area di memoria di lavoro
DettagliArray ( vettore/matrice Un dato strutturato. indice Accesso diretto
Array (vettore/matrice) Un dato strutturato. Un insieme di variabili tutte dello stesso tipo identificate con un nome comune. Uno specifico elemento è referenziato tramite un indice (funzione di accesso)
DettagliEsercizi d esame. Elena Tundo
Esercizi d esame Elena Tundo Esercizi su Linux Tenendo presente di partire dalla home directory, la sequenza di comandi Linux per creare una sottocartella dir2 ed una dir3 e spostare dentro dir2 il file
DettagliJavascript. - Corso Web Design - Media Dream Academy. Stefano Gaborin
Javascript - Corso Web Design - Media Dream Academy Stefano Gaborin stefano.gaborin@above.company www.above.company Cos è Javascript? JavaScript è un linguaggio di programmazione interpretato. Utilizzato
DettagliDefinizione di metodi in Java
Definizione di metodi in Java Un metodo in Java definisce un operazione ad alto livello (sottoprogramma) che consente di manipolare dati e oggetti. Durante la computazione effettuata da un programma, un
DettagliProgrammazione I - Laboratorio
Programmazione I - Laboratorio Esercitazione 4 - Puntatori, vettori e stringhe Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ mezzetti mezzetti
DettagliArray in Fortran 90. Ing. Luca De Santis. Anno accademico 2006/2007. DIS - Dipartimento di informatica e sistemistica
Array in Fortran 90 Ing. Luca De Santis DIS - Dipartimento di informatica e sistemistica Anno accademico 2006/2007 Fortran 90: array DIS - Dipartimento di informatica e sistemistica 1 / 25 Cosa vedremo
DettagliCorso di Laurea Ingegneria Informatica Fondamenti di Informatica 2
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa E04 Esercizi sui problemi di ordinamento C. Limongelli Marzo 2008 http://www.dia.uniroma3.it/~java/fondinf2/ Algoritmi di Ordinamento
DettagliLe basi del linguaggio Java
Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una
DettagliProgetto e analisi di algoritmi
Progetto e analisi di algoritmi Roberto Cordone DTI - Università degli Studi di Milano Polo Didattico e di Ricerca di Crema Tel. 0373 / 898089 E-mail: cordone@dti.unimi.it Ricevimento: su appuntamento
DettagliValutazione di espressioni
Valutazione di espressioni Stefano Ferrari Università degli Studi di Milano stefano.ferrari@unimi.it Programmazione anno accademico 2016 2017 Blocco Blocco è un insieme di istruzioni consecutive, con un
DettagliInformatica 3. LEZIONE 2: Sintassi e semantica
Informatica 3 LEZIONE 2: Sintassi e semantica Modulo 1: Introduzione ai concetti di sintassi e semantica Modulo 2: Il concetto di binding Modulo 3: Variabili Modulo 4: Routine Convenzioni dei nomi Informatica
DettagliArray multidimensionali e stringhe
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Array uni-dimensionali (richiami) Dichiarazione: int vet[100]; float x[50]; Gli elementi
DettagliLaboratorio di Algoritmi e Strutture Dati. Code con Priorità
Laboratorio di Algoritmi e Strutture Dati Code con Priorità Teresa M.A. Basile basile@di.uniba.it Dipartimento di Informatica Università degli Studi di Bari Aldo Moro Materiale di base gentilmente concesso
Dettagli14 - Metodi e Costruttori
14 - Metodi e Costruttori Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it
DettagliLinguaggio C: le funzioni. Introduzione e sintassi
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: le funzioni. Introduzione e sintassi La presente dispensa
DettagliInformatica 3. Informatica 3. LEZIONE 2: Sintassi e semantica. Lezione 2- Modulo 1. Le componenti di un linguaggio di programmazione
Informatica 3 Informatica 3 LEZIONE 2: Sintassi e semantica Lezione 2- Modulo 1 Modulo 1: Introduzione ai concetti di sintassi e semantica Modulo 2: Il concetto di binding Modulo 3: Variabili Modulo 4:
DettagliStrutture di controllo iterative
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Introduzione Problema Scrivere un programma che acquisisca da standard input un intero
DettagliAlmerico Murli - Le variabili strutturate (array) VARIABILI STRUTTURATE (ARRAY)
VARIABILI STRUTTURATE (ARRAY) 1 successione (di numeri reali): i ℵ a R i vettore (di numeri reali): i I a i R con I ℵ sottoinsieme finito ogni componente del vettore e univocamente determinata dall indice
DettagliProgrammazione orientata agli oggetti. Ivan Lanese
Programmazione orientata agli oggetti Ivan Lanese Argomenti Programmazione orientata agli oggetti Classi Oggetti Costruttori Scrivere grosse applicazioni La gran parte delle applicazioni sono GROSSE Windows
DettagliEsercizi Strutture dati di tipo astratto
Salvatore Cuomo Esercizi Strutture dati di tipo astratto Lezione n. 20 Parole chiave: Strutture dati, pile code, liste Corso di Laurea: Informatica Insegnamento: Programmazione II, modulo di Laboratorio
DettagliMATLAB I/O. Informatica B - A.A. 2012/2013 ACQUISIZIONE DI INPUT DA TASTIERA
MATLAB I/O Informatica B - A.A. 2012/2013 ACQUISIZIONE DI INPUT DA TASTIERA Funzione input valore = input( inserisci un valore ); Matlab stampa a video la stringa inserisci un valore ed aspetta di ricevere
DettagliLa ricorsione. Ver Claudio Fornaro - Corso di programmazione in C
La ricorsione Ver. 2.4 2010 - Claudio Fornaro - Corso di programmazione in C 2 Divide et impera Metodo di approccio ai problemi che consiste nel dividere il problema dato in problemi più semplici I risultati
DettagliCorso di Fondamenti di Informatica
Corso di Fondamenti di Informatica Gli algoritmi di base sul tipo array: ordinamento e ricerca Claudio De Stefano - Corso di Fondamenti di Informatica 1 Algoritmi di ordinamento gli algoritmi si differenziano
DettagliMatlab. Istruzioni condizionali, cicli for e cicli while.
Matlab. Istruzioni condizionali, cicli for e cicli while. Alvise Sommariva Università degli Studi di Padova Dipartimento di Matematica 17 marzo 2016 Alvise Sommariva Introduzione 1/ 18 Introduzione Il
Dettagli