1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

Slides:



Advertisements
Presentazioni simili
C++ Di Marco Cozzani.
Advertisements

INFORMATICA Algoritmi fondamentali
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità A2 Java: le basi del linguaggio.
Algoritmi notevoli.
Algoritmi notevoli In linguaggio C.
Universita di Camerino
Informatica Generale Marzia Buscemi
1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore presso Dipartimento di Informatica, Via Buonarroti,
Anno accademico Array e puntatori in C.
INFORMATICA Strutture iterative
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.
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Capitolo 4 Ordinamento 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.
PROGRAMMI DI RICERCA E ORDINAMENTO
Fondamenti di Informatica II Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
Process synchronization
Algoritmo di Ford-Fulkerson
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Variabili e tipi primitivi Anno Accademico 2009/2010.
1 Corso di Informatica (Programmazione) Lezione 12 (19 novembre 2008) Programmazione in Java: i metodi statici.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Array Anno Accademico 2009/2010.
1 Corso di Informatica (Programmazione) Esercitazione 1 (26 novembre 2008)
Corso di Informatica (Programmazione)
1 Corso di Informatica (Programmazione) Lezione 10 (12 novembre 2008) Programmazione in Java: espressioni booleane e controllo del flusso (selezione)
1 Corso di Informatica (Programmazione) Lezione 13 (21 novembre 2008) Programmazione in Java: stringhe e array.
1 Corso di Informatica (Programmazione) Esercitazione 2 (3 dicembre 2008)
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Le stringhe di caratteri in Java Anno Accademico 2009/2010.
1 Corso di Informatica (Programmazione) Raffaella Rizzi DISCO Dipartimento di Informatica Sistemistica e Comunicazione Edificio U14 - primo piano - stanza.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Array Un array è una collezione in sequenza di variabili del medesimo tipo Riferimento con un nome comune Nome_studente1 Nome_studente2. Nome_studenteN.
Il linguaggio Fortran 90: 4. Array: Vettori e Matrici
Array Struttura numerate di dati. Memorizzare molti dati In informatica cè spesso bisogno di memorizzare ed elaborare un insieme costituito da molti dati.
Corso di Informatica A.A Corso di Informatica Laurea Triennale - Comunicazione&Dams Dott.ssa Adriana Pietramala Dott.ssa.
Selezione (=scelta) con “if-else”
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.
Politecnico di Milano Esercizi Preparazione alla prima prova intermedia.
Esercizi C su array e matrici
Le funzioni.
TIPI DI DATO Un tipo di dato T è definito come: un dominio di valori, D un insieme di funzioni F 1,..,F n sul dominio D un insieme di predicati P 1,..,P.
Programmazione in Java Claudia Raibulet
Le operazioni con i numeri
Elementi di Informatica di base
Esercizio 10.* Un cassiere vuole dare un resto di n centesimi di euro usando il minimo numero di monete. a) Descrivere un algoritmo goloso per fare ciò.
Problema dell’ordinamento di un array: Il metodo Bubble Sort.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
Massimo Comun Divisore
Unità Didattica 3 Linguaggio C
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e stringhe Marco D. Santambrogio – Ver. aggiornata al 9 Agosto 2013.
14 marzo 2002 Avvisi:.
BIOINFO3 - Lezione 17 VARIABILI
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
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.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
Corso di Programmazione in Java – Esercizio n° 001
Pippo.
Esercitazione su Vector. Permette di definire collezioni di dati generiche, che sono in grado di memorizzare elementi di ogni sottotipo di Object Definito.
Università di Torino – Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a prof. Viviana Bono Blocco 7 – Array.
1 Informatica Generale Alessandra Di Pierro Ricevimento: Giovedì ore presso Dipartimento di Informatica, Via Buonarroti,
Sommario Oggetti immutabili e non Tipi Primitivi: String, Arrays.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
“ Pseudocodice ” Un programma per computer lavorerà su in insieme di “ variabili ” contenenti i dati del problema, soluzioni intermedie, soluzioni finali.
30/10/01Array 1  Un array e’ una struttura dati che contiene piu’ valori del medesimo tipo.  La lunghezza di un array e’ stabilita quando l’array viene.
6/11/01Ordinamento 1 Un esempio di algoritmi: ordinamento.
Cicli e Array. 2 Costrutto while while(espressione) { … } Il codice dentro le parentesi graffe viene eseguito finché la condizione è vera Potrebbe non.
Transcript della presentazione:

1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)

2 Esercizi sugli array Esercizio 1 dato un array A di N interi calcolare la media e contare gli elementi > della media Esempio (N=10) Risultato 58 (in realtà 58.8) e ci sono 5 elementi superiori a 58 A

3 Esercizi sugli array Algoritmo: eseguo la somma S di tutti gli elementi di A scandendo gli elementi di A dal primo (in posizione 0) allultimo (in posizione N-1). Divido poi S per la dimensione N ottenendo la media M dei valori. Esamino di nuovo uno alla volta gli elementi di A dal primo allultimo e incremento di 1 un contatore (variabile conta) ogni volta che la posizione i...

4 Esercizi sugli array … contiene un valore A[i] > M.

5 Esercizi sugli array A Esecuzione dellalgoritmo per larray A di 10 interi dellesempio precedente: - allinizio ho somma=0 - step 1 i=0 (i è lindice che scandisce gli elementi di A) somma = somma+A[0] = =

6 Esercizi sugli array A - step 2 i=1 - step 3 i= somma = somma+A[1] = = 190 A somma = somma+A[2] = = 210

7 Esercizi sugli array A - step 4 i=3 - step 5 i= somma = somma+A[3] = = 250 A somma = somma+A[4] = = 296

8 Esercizi sugli array A - step 6 i=5 - step 7 i= somma = somma+A[5] = = 356 A somma = somma+A[6] = = 360

9 Esercizi sugli array A - step 8 i=7 - step 9 i= somma = somma+A[7] = = 452 A somma = somma+A[8] = = 467

10 Esercizi sugli array A - step 10 i= somma = somma+A[9] = = step 11 calcolo la media: M=somma / 10 = 588 /10 = 58 (arrotondo perché uso variabili intere)

11 Esercizi sugli array A - step 12 conta = 0 - step 13 i=0 (nuova inizializzazione di i) - step 14 i= A[0] è > 58? Sì! Quindi conta = conta + 1 = = 1 A A[1] è > 58? Sì! Quindi conta = conta + 1 = = 2

12 Esercizi sugli array A - step 15 i=2 - step 16 i= A[2] è > 58? NO! Quindi conta rimane a 2 A A[3] è > 58? NO! Quindi conta rimane a 2

13 Esercizi sugli array A - step 17 i=4 - step 18 i= A[4] è > 58? NO! Quindi conta rimane a 2 A A[5] è > 58? SI! Quindi conta = conta + 1 = 2 +1 = 3

14 Esercizi sugli array A - step 19 i=6 - step 20 i= A[6] è > 58? NO! Quindi conta rimane a 3 A A[7] è > 58? SI! Quindi conta = conta + 1 = 3 +1 = 4

15 Esercizi sugli array A - step 21 i=8 - step 22 i= A[8] è > 58? NO! Quindi conta rimane a 4 A A[9] è > 58? SI! Quindi conta = conta + 1 = 4 +1 = 5

16 Esercizi sugli array public class CalcoloMedia { public static void main(String arg[]) { int[] A={4,15,20,21,40,6,7,9,10,1}; int i; int length; int somma=0, media=0, conta=0; length=10; i=0; while(i <= lentgth-1){ somma=somma+A[i]; i=i+1; } media=somma/length; i=0; while(i <= lentgth-1){ if(A[I] > media){ conta=conta+1; } i=i+1; } System.out.println(conta+ elementi sono > di +media); }

17 Esercizi sugli array Esercizio 2 dato un array A di N interi verificare se A contiene almeno 3 elementi consecutivi Esempio (N=10) Risultato il vettore contiene almeno 3 elementi consecutivi A

18 Esercizi sugli array Algoritmo: dichiaro la variabile booleana threeElements che allinizio ha valore false (cioè parto dallipotesi che larray non abbia almeno 3 elementi consecutivi). Poi scandisco larray dal primo elemento (in posizione 0) a quello in posizione N-3 (ovvero lultimo elemento dellarray che è seguito da almeno 2 elementi), dove N è la lunghezza dellarray.

19 Esercizi sugli array …Se trovo che, per la posizione generica i, A[i] è uguale a A[i+1] e A[i+1] è uguale a A[i+2], allora posso dire che nellarray ci sono almeno 3 elementi consecutivi. In tale caso assegno true alla variabile threeElements e interrompo la scansione dellarray.

20 Esercizi sugli array A Esecuzione dellalgoritmo per larray A di 10 interi dellesempio precedente: - allinizio threeElements è false - step 1 i=0 (i è lindice che scandisce gli elementi di A) A[0] è uguale a A[1] e A[1] è uguale a A[2]? NO! Allora proseguo

21 Esercizi sugli array A - step 2 i=1 - step 3 i=2 A[1] è uguale a A[2] e A[2] è uguale a A[3]? NO! Allora proseguo A A[2] è uguale a A[3] e A[3] è uguale a A[4]? SI! Allora assegno true a threeElements e interrompo la scansione

22 Esercizi sugli array public class ThreeElements { public static void main(String arg[]) { int[] A={4,15,20,21,40,6,7,9,10,1}; int i; int length; boolean trhreeElements=false; length=10; i=0; while(i <= lentgth-1 && threeElements == false){ if(A[i]==A[i+1] && A[i+1]==A[i+2]){ threeElements=true; } i=i+1; } System.out.print(Ci sono 3 elementi consecutivi: ); System.out.println(trhreeElements); }

23 Esercizi sugli array Esercizio 3 dato un array A di N interi e un intero k verificare se A contiene k Esempio (N=10, k=40) Risultato il vettore contiene A

24 Esercizi sugli array Algoritmo: dichiaro la variabile booleana found che allinizio ha valore false (cioè parto dallipotesi che larray non contenga lintero k). Poi scandisco larray dal primo elemento (in posizione 0) allultimo (in posizione N-1). Se trovo una posizione i tale che A[i] è uguale a k, allora assegno alla variabile found il valore true e interrompo la scansione

25 Esercizi sugli array A Esecuzione dellalgoritmo per larray A di 10 interi dellesempio precedente: - allinizio found è false - step 1 i=0 (i è lindice che scandisce gli elementi di A) A[0] è uguale a 40? NO! Allora proseguo

26 Esercizi sugli array A - step 2 i=1 - step 3 i=2 A[1] è uguale a 40? NO! Allora proseguo A A[2] è uguale a 40? NO! Allora proseguo

27 Esercizi sugli array A - step 4 i=3 - step 5 i=4 A[3] è uguale a 40? NO! Allora proseguo A A[2] è uguale a 40? SI! Allora assegno true a found e interrompo la scansione

28 Esercizi sugli array public class SearchK { public static void main(String arg[]) { int[] A={4,15,20,21,40,6,7,9,10,1}; int i, k; int length; boolean found=false; length=10; i=0; k=40; while(i <= lentgth-1 && found == false){ if(A[i]==k){ found=true; } i=i+1; } System.out.print(Trovato: +found); }

29 Esercizi sugli array NOTA BENE: il programma precedente vale anche nel caso in cui A sia un array di caratteri e al posto dellintero k ci sia un carattere c. La modifica del codice è contenuta nella slide successiva.

30 Esercizi sugli array public class SearchChar { public static void main(String arg[]) { char[] A={a,b,c,d,e,f,g,h,i,l}; int i; char c; int length; boolean found=false; length=10; i=0; c=b; while(i <= lentgth-1 && found == false){ if(A[i]==c){ found=true; } i=i+1; } System.out.print(Trovato: +found); }

31 Esercizi sugli array Esercizio 4 dato un array A di N interi e un intero k contare le occorrenze di k in A Esempio (N=10, k=40) Risultato 40 compare 3 volte A

32 Esercizi sugli array Algoritmo: dichiaro la variabile intera count che alla fine conterrà il numero di occorrenze di k in A. Poi scandisco larray dal primo elemento (in posizione 0) allultimo (in posizione N-1) e incremento di 1 la variabile count ogni volta che incontro una posizione i in cui A[i] è uguale a k.

33 Esercizi sugli array A Esecuzione dellalgoritmo per larray A di 10 interi dellesempio precedente: - allinizio count è 0 - step 1 i=0 (i è lindice che scandisce gli elementi di A) A[0] è uguale a 40? NO! Allora proseguo

34 Esercizi sugli array A - step 2 i=1 - step 3 i=2 A[1] è uguale a 40? SI! Allora count = count +1 = = 1 A A[2] è uguale a 40? NO! Allora count rimane a

35 Esercizi sugli array A - step 4 i=3 - step 5 i=4 A[3] è uguale a 40? NO! Allora count rimane a 1 A A[4] è uguale a 40? SI! Allora count = count + 1 = =

36 Esercizi sugli array A - step 6 i=5 - step 7 i=6 A[5] è uguale a 40? NO! Allora count rimane a 2 A A[6] è uguale a 40? NO! Allora count rimane a

37 Esercizi sugli array A - step 8 i=7 - step 9 i=8 A[7] è uguale a 40? NO! Allora count rimane a 2 A A[8] è uguale a 40? SI! Allora count = count + 1 = =

38 Esercizi sugli array A - step 10 i=9 A[9] è uguale a 40? NO! Allora count rimane a

39 Esercizi sugli array public class CountK { public static void main(String arg[]) { int[] A={4,15,20,21,40,6,7,9,10,1}; int i, k; int length, count; length=10; i=0; k=40; count=0; while(i <= lentgth-1){ if(A[i]==k){ count=count+1; } i=i+1; } System.out.print(Occorrenze=+count); }

40 Esercizi sugli array NOTA BENE: il programma precedente vale anche nel caso in cui A sia un array di caratteri e al posto dellintero k ci sia un carattere c. La modifica del codice è contenuta nella slide successiva.

41 Esercizi sugli array public class CountChar { public static void main(String arg[]) { char[] A={a,b,c,a,e,f,a,h,i,l}; int i; char c; int length, count; length=10; i=0; c=a; count=0; while(i <= lentgth-1){ if(A[i]==c){ count=count+1; } i=i+1; } System.out.print(Occorrenze=+count); }

42 Esercizi sugli array Esercizio 5 dato un array A di N interi e un intero k verificare che tutti gli elementi sono < k Esempio (N=10, k=40) Risultato non tutti gli elementi sono < A

43 Esercizi sugli array Algoritmo: dichiaro la variabile booleana ok che inizializzo a true in quanto faccio lipotesi che tutti gli elementi di A siano < k. Poi scandisco larray dal primo elemento (in posizione 0) allultimo (in posizione N-1) e se trovo una posizione i in cui A[i] >= k, allora la mia ipotesi di partenza è falsa, quindi assegno alla variabile ok il valore false e interrompo la scansione.

44 Esercizi sugli array A Esecuzione dellalgoritmo per larray A di 10 interi dellesempio precedente: - allinizio ok è true - step 1 i=0 (i è lindice che scandisce gli elementi di A) A[0] è < 40? SI! Allora proseguo

45 Esercizi sugli array A - step 2 i=1 - step 3 i=2 A[1] è < 40? SI! Allora proseguo A A[3] è < 40? SI! Allora proseguo

46 Esercizi sugli array A - step 4 i=3 - step 5 i=4 A[3] è < 40? SI! Allora proseguo A A[4] è < 40? NO! Allora false a ok e interrompo

47 Esercizi sugli array public class CheckLessThanK { public static void main(String arg[]) { int[] A={4,15,20,21,40,6,7,9,10,1}; int i, k; int length; boolean ok=true; length=10; i=0; k=40; while(i <= lentgth-1 && ok == true){ if(A[i]>=k){ ok=false; } i=i+1; } System.out.print(Sono tutti < k: +ok); }

48 Esercizi sugli array NOTA BENE: il programma precedente può essere esteso agli altri tipi di confronto: - Verifica che tutti gli elementi sono uguali a k il test dellif diventa: A[i] != k - Verifica che tutti gli elementi sono diversi da k il test dellif diventa: A[i] == k - Verifica che tutti gli elementi sono > k il test dellif diventa: A[i] <= k

49 Esercizi sugli array... - Verifica che tutti gli elementi sono <= k il test dellif diventa: A[i] > k - Verifica che tutti gli elementi sono >= k il test dellif diventa: A[i] < k

50 Esercizi sugli array Esercizio 6 dato un array A di N interi scambiare il lelemento in posizione I (compresa tra 0 e N-1) con lelemento in posizione j (compresa tra 0 e N-1) diversa da i

51 Esercizi sugli array Esempio (N=10, i=0, j=9) A

52 Esercizi sugli array Algoritmo: dichiaro la variabile intera help che mi serve per conservare il valore di A[i] prima di sovrascriverlo con A[j]. Poi assegno a A[i] il valore di A[j] e a A[j] il valore di help a cui era stato assegnato il valore originale di A[i].

53 Esercizi sugli array A Esecuzione dellalgoritmo per larray A di 10 interi dellesempio precedente: - step 1 help = A[0] - step 2 A[0] = A[9] step 3 A[9] = help A

54 Esercizi sugli array public class Scambia { public static void main(String arg[]) { int[] A={4,15,20,21,40,6,7,9,10,1}; int i, j; int length, help; length=10; i=0; j=9; help=A[i]; A[i]=A[j]; A[j]=help; }

55 Esercizi sugli array Esercizio 6 dato un array A di N invertire gli elementi di A Esempio (N=10) A A

56 Esercizi sugli array Algoritmo: eseguo uno scambio dellelemento in posizione i e del suo simmetrico in posizione N-i-1. Questo scambio lo faccio per tutte le posizioni i che vanno da 0 a N/2-1

57 Esercizi sugli array A Esecuzione dellalgoritmo per larray A di 10 interi dellesempio precedente: - step 1 i=0 (i è lindice che scandisce gli elementi di A) scambio A[0] con A[9]

58 Esercizi sugli array A - step 2 i=1 scambio A[1] con A[8]

59 Esercizi sugli array A - step 3 i=2 scambio A[2] con A[7]

60 Esercizi sugli array A - step 4 i=3 scambio A[3] con A[6]

61 Esercizi sugli array A - step 5 i=4 (N/2-1=10/2-1=4) scambio A[4] con A[5] Risultato finale

62 Esercizi sugli array public class InvertArray { public static void main(String arg[]) { int[] A={4,15,20,21,40,6,7,9,10,1}; int i; int length; int help; length=10; i=0; while(i <= lentgth/2-1){ help=A[i]; A[i]=A[j]; A[j]=help; i=i+1; }

63 Esercizi sugli array NOTA BENE: il programma precedente vale anche nel caso in cui N sia dispari. Le posizioni da scambiare sono sempre I e N-I-1 con I che va da 0 a N/2-1, in quanto esiste un elemento centrale in posizione N/2 che rimane fisso nella stessa posizione.

64 Esercizi sugli array Esercizio 7 dato un array A di N calcolare per ogni A[i] la somma dei primi A[i] interi (da 1 a A[i]) Esempio (N=10) A per i=0, calcolo …+30 per i=1, calcolo …+25...

65 Esercizi sugli array Algoritmo: eseguo una scansione di A per i che va da 0 a N-1 e per ogni A[i] eseguo un ciclo più interno che calcola la somma …A[i].

66 Esercizi sugli array public class InvertArray { public static void main(String arg[]) { int[] A={4,15,20,21,40,6,7,9,10,1}; int i, j; int length; int somma; length=10; i=0; while(i <= lentgth-1){ j=1; somma=0; while(j<=A[i]){ somma=somma+j; j=j+1 } System.out.println(Somma=+somma); i=i+1; }