Massimo Tistarelli DAP - Università di Sassari Laboratorio di Computer Vision Graphics and Image Processing

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Massimo Tistarelli DAP - Università di Sassari Laboratorio di Computer Vision Graphics and Image Processing"

Transcript

1 Corso di Laurea in DESIGN Elementi di programmazione Massimo Tistarelli DAP - Università di Sassari Laboratorio di Computer Vision Graphics and Image Processing

2 I linguaggi di programmazione Programma Insieme ordinato di istruzioni elementari impartite ad un calcolatore per svolgere un compito Risponde a requisiti di completezza Elabora dati provenienti dai dispositivi di ingresso Produce risultati che possono essere memorizzati temporaneamente, per ulteriori elaborazioni, oppure trasmessi ai dispositivi di uscita L esecuzione delle istruzioni è effettuata dal processore e coordinata dal sistema operativo Programmazione attività che permette di affrontare in modo sistematico l ideazione e la realizzazione di un programma Massimo Tistarelli 2

3 I linguaggi di programmazione Algoritmo Insieme ordinato di passi non ambigui ed eseguibili che portano alla soluzione di un problema Proprietà che un algoritmo deve soddisfare: Essere comprensibile Non presentare ambiguità Essere attuabile Garantire una terminazione Massimo Tistarelli 3

4 I linguaggi di programmazione Formalizzazione generica di un algoritmo Tramite pseudocodice Tramite diagrammi di flusso Implementazione stesura definitiva di un algoritmo che utilizza un linguaggio di programmazione Il risultato di tale fase è comunemente chiamato programma Massimo Tistarelli 4

5 I linguaggi di programmazione Pseudocodifica Linguaggio il più possibile vicino a quello dell uomo Utilizza l indentazione Esempio: leggere un numero; se e positivo stamparlo e terminare l esecuzione, altrimenti leggerne un altro Ripeti Leggi A Se A > 0 stampa A Esci dal programma Fine se Fine ripeti Massimo Tistarelli 5

6 I linguaggi di programmazione Diagrammi di flusso (flow chart): Visualizzazione grafica del programma: Uso di simboli grafici per indicare le singole operazioni elementari I simboli sono connessi da archi orientati Evidenziano in modo grafico il flusso delle istruzioni Componenti: Istruzioni di Input/Output selezione Istruzioni sequenziali Inizio / fine algoritmo Massimo Tistarelli 6

7 I linguaggi di programmazione Inizio ESEMPIO: leggere un numero; se e positivo stamparlo e terminare l esecuzione, altrimenti leggerne un altro no int A Leggi A A>0? si Stampa A Fine Massimo Tistarelli 7

8 I linguaggi di programmazione Per procedere all implementazione di un programma occorre scegliere un LINGUAGGIO di programmazione Quali opzioni sono possibili? Codice macchina Codice assembler Metacodice Linguaggi di programmazione evoluti Linguaggi naturali PIU DIFFICILE PER L UOMO PIU SEMPLICE PER L UOMO Massimo Tistarelli 8

9 I linguaggi di programmazione Codice macchina È direttamente eseguibile dal processore È una sequenza di cifre binarie che rappresentano i codici operativi delle istruzioni e gli operandi Codice assembler Sostitituisce ai codici operativi e agli operandi codici mnemonici che richiamano alla memoria la funzione dell istruzione LD A 05H - carica il registro A con il valore esadecimale 5 SLA A - scala a sinistra il registro A Massimo Tistarelli 9

10 I linguaggi di programmazione Metacodice Codice non direttamente eseguibile dal processore, ne comprensibile da parte dell utente È una sequenza di byte che, come il codice macchina, rappresenta istruzioni e operandi È indipendente dalla piattaforma hardware Necessita comunemente di un interprete atto a tradurre il metacodice in linguaggio macchina Linguaggi evoluti Sono linguaggi caratterizzati da costrutti sintattici che facilitano la scrittura del codice e la definizione dei dati Possiedono strutture di controllo di alto livello (cicli, blocchi decisionali) Necessitano di compilatori o interpreti atti a tradurre i programmi in linguaggio macchina Massimo Tistarelli 10

11 I linguaggi di programmazione Compilatori programmi che agiscono su un programma sorgente, scritto in linguaggio evoluto, producendo il corrispondente codice macchina sono caratterizzati da una serie di passi, che convertono il programma sorgente in altrettanti oggetti intermedi Librerie, oggetti rilocabili Programma sorgente compilatore Programma assembler assemblatore Codice macchina rilocabile Loader/linker Codice macchina assoluto Massimo Tistarelli 11

12 I linguaggi di programmazione Interpreti programmi che effettuano la conversione in codice macchina passo dopo passo il BASIC e` uno dei più noti linguaggi interpretati un problema comune dei linguaggi interpretati è la lentezza di esecuzione Librerie, oggetti rilocabili Programma sorgente Interprete (generazione di codice macchina assoluto immediatamente eseguito) Massimo Tistarelli 12

13 I linguaggi di programmazione Compilatori JIT (Just in Time) Moderno compromesso tra i compilatori e gli interpreti Traducono il codice come gli interpreti ma ne memorizzano una parte in modo da velocizzare il processo Aumento notevole delle prestazioni (quasi come un linguaggio compilato) Aumento della quantità di memoria necessaria (poco preoccupante in relazione alla grande disponibilità) Massimo Tistarelli 13

14 Introduzione al JAVA Cos è JAVA? JAVA e` un linguaggio interpretato di recente introduzione (1991!) Il successo di JAVA e` legato quasi esclusivamente alla realizzazione del browser HotJava (1995) ed alla successiva integrazione della tecnologia JAVA nel browser Netscape Quali sono le caratteristiche principali? Apprezzare le caratteristiche di JAVA richiede un buon bagaglio di conoscenza Semplicità (deriva da C e C++) Programmazione orientata agli oggetti Elaborazione distribuita Robustezza (non esistono puntatori) Sicurezza Portabilità Massimo Tistarelli 14

15 Introduzione al JAVA Alcuni equivoci comuni JAVA non ha relazioni con il linguaggio HTML; è possibile tuttavia richiamare un programma JAVA da una pagina HTML (applet) Come tutti i programmi evoluti, JAVA non è di facile apprendimento. Ha però caratteristiche che lo rendono di uso abbastanza immediato JAVA non è un ambiente di programmazione. Ambienti di programmazione sono disponibili per JAVA come per altri linguaggi JAVA diventerà un linguaggio universale di programmazione?. È difficile affermarlo con certezza. Massimo Tistarelli 15

16 Introduzione al JAVA JAVA è un linguaggio lento? JAVA è un linguaggio sia compilato che interpretato L interpretazione del metacodice è certamente un punto debole; il problema è tuttavia superato dall utilizzo di compilatori just in time Librerie, oggetti rilocabili Programma sorgente JAVA Compilatore (javac) metacodice (bytecode) Interprete Java Virtual Machine (java) Massimo Tistarelli 16

17 Fondamenti del linguaggio Tipi fondamentali Numeri in virgola mobile Interi float range approx. ± E+38 (7 cifre decimali significative) double range approx ± E+308 (15 cifre decimali significative) int -> da a long -> da L a L short -> da a byte -> da -128 a 127 Massimo Tistarelli 17

18 Fondamenti del linguaggio Tipi fondamentali Caratteri char codice a due byte (unicode) per simboli NB: Il codice si esprime normalmente come \uxxxx dove XXXX sono cifre esadecimali Booleani Boolean -> true oppure false Utilizzati per test logici e per operazioni di confronto Massimo Tistarelli 18

19 Fondamenti del linguaggio Dichiarazione e assegnazione di variabili byte b; int aninteger; long along; char ch; char yesch, capitala; yesch = Y ; capitala = \u0041 ; //corrisponde al carattere A boolean k=true; int i; // DICHIARAZIONE i = 37; // ASSEGNAZIONE Massimo Tistarelli 19

20 Fondamenti del linguaggio Operatori int n = 5; // dichiarazione e inizializzazione int a = 2+n; // a vale 7 int b = a-3; // b vale 4 int c = a*b; // c vale 28 int d = a/b; // d vale 1!!!! int m = 7; // dichiarazione e inizializzazione int n = 7; // dichiarazione e inizializzazione int k; // k non è inizializzata n++; // n vale 8 m--; // m vale 6 k = m*n; // k vale 48 Massimo Tistarelli 20

21 Fondamenti del linguaggio Operatori relazionali Operatori per effettuare confronti: Uguale Diverso Maggiore Minore Maggiore o uguale Minore o uguale (a==b) (a!=b) (a>b) (a<b) (a>=b) (a<=b) Massimo Tistarelli 21

22 Fondamenti del linguaggio Operatori booleani Il risultato di un confronto è una variabile di tipo boolean (5>7) è false Posso combinare i valori delle espressioni booleane con gli operatori AND OR NOT AND (a && b) OR (a b) NOT (~b) XOR (a^b) Esempio: ((5==7) && (5>7)) è false Massimo Tistarelli 22

23 Fondamenti del linguaggio Stringhe: sequenze di caratteri, racchiuse tra virgolette String e = Hello World ; String e = ; Operazioni sulle stringhe: // stringa vuota Sottostringhe: tramite la funzione (metodo) substring String e = Hello World ; String s = e.substring(0,5) // sottostringa // che inizia in posizione 0 e finisce in 5 Concatenazione: si usa il simbolo + String e = Hello ; String s = World ; Stringe t = e+s; // t vale Hello World Massimo Tistarelli 23

24 Fondamenti del linguaggio Lunghezza ed estrazione di caratteri String e = Hello World ; char c = e.charat(4) // carattere in posizione 4 ( o ) int l = e.length() // lunghezza (11) Confronto String e = Hello ; String s = Hi ; if (e.equals(s)) // vale false if (e.compareto(s)) // vale 1 Ricerca String e = Hello ; int k = e.indexof( e ); // prima posizione del carattere // e (1) - vale 1 se non trovo corrispondenza Massimo Tistarelli 24

25 Fondamenti del linguaggio La struttura di un semplice programma JAVA public class Hello { public static void main(string[] args) { Istruzione 1 Istruzione 2 Istruzione 3 Nome classe Programma vero e proprio Massimo Tistarelli 25

26 Fondamenti del linguaggio Esempio 1: somma tra due numeri interi e un numero con la virgola int a,b float c float tot START Stampa messaggio chiedendo all utente l inserimento di un intero leggi b Stampa messaggio chiedendo all utente l inserimento di un numero con la virgola leggi c leggi a Stampa messaggio chiedendo all utente l inserimento di un intero tot = a+b+c Stampa tot END Massimo Tistarelli 26

27 Fondamenti del linguaggio // legge due numeri interi e un numero con la virgola da tastiera // ed effettua la somma import java.util.*; // libreria utilità di sistema! public class esempio1{ public static void main(string[] args) { int a,b; float c, tot; Scanner sc = new Scanner(System.in); System.out.println("Inserire un numero intero"); a= sc.nextint(); System.out.println("Inserire un numero intero"); b= sc.nextint(); System.out.println("Inserire un numero in virgola mobile"); c= sc.nextfloat(); tot = a+b+c; System.out.print("La somma vale: "+tot); Massimo Tistarelli 27

28 Fondamenti del linguaggio Strutture di controllo: if - else if (a>b) { System.out.print(a); else { System.out.print(b); Stampa a a>b Stampa b if (K>10) { K = K+1; K=K+1 K>10 Massimo Tistarelli 28

29 Fondamenti del linguaggio Strutture di controllo: while int x=0; int y = 2; while(x<4) { x ++; y = y*y; System.out.print(y); x<4 x++ y=y*y Stampa y Massimo Tistarelli 29

30 Fondamenti del linguaggio Strutture di controllo: do while int x=0; int y=2; do { x ++; y = y*y; while(x<4); System.out.print(y); x++ y=y*y x<4 Stampa y Massimo Tistarelli 30

31 Fondamenti del linguaggio Strutture di controllo: cicli definiti I=0 for(int I=0; I<=10; I++) { System.out.println(I); I<10 NB: non è diverso dal while Stampa I I++ Massimo Tistarelli 31

32 Fondamenti del linguaggio Strutture di controllo: selezione multipla int choice = sc.nextint(); switch (choice) { case 1: break; case 2: break;... default: break; choice ==1 choice ==2 caso default.. Massimo Tistarelli 32

33 Fondamenti del linguaggio Esempio 2: confronto tra due numeri interi int a,b START Stampa messaggio chiedendo all utente l inserimento di un intero Stampa a si a>b? no Stampa b leggi a END Stampa messaggio chiedendo all utente l inserimento di un intero leggi b Massimo Tistarelli 33

34 Fondamenti del linguaggio // legge due numeri interi e stampa il numero più grande import java.util.*; // libreria utilità di sistema! public class esempio2{ public static void main(string[] args) { int a,b; Scanner sc = new Scanner(System.in); System.out.println("Inserire un numero intero"); a = sc.nextint(); System.out.println("Inserire un numero intero"); b = sc.nextint(); if (a>b) { System.out.print( Il numero più grande è: + a); else { System.out.print( Il numero più grande è: + b); Massimo Tistarelli 34

35 Fondamenti del linguaggio Esempio 3: conteggio ed eliminazione delle vocali di una stringa int contatore String sin, sout, vocali START vocali = aeiouaeiou sout = vuota contatore = 0 Stampa messaggio chiedendo all utente l inserimento di una stringa leggi sin si incolla in coda a sout carattere i-mo sin i=0 i<lung sin si carattere i-mo sin!= vocale? no no contatore ++ stampa sout e contatore END i=i+1 Massimo Tistarelli 35

36 Fondamenti del linguaggio // conta ed elimina le vocali di una stringa import java.util.*; public class esempio3{ public static void main(string[] args) { String vocali, sin, sout; int contatore=0; vocali = "aeiouaeiou"; sout=""; Scanner sc = new Scanner(System.in); System.out.println("Inserire una stringa arbitraria"); sin = sc.nextline(); for (int i=0; i<sin.length();i++) { if (vocali.indexof(sin.charat(i))== -1) { sout = sout+sin.charat(i); else {contatore++; System.out.println("contate ed eliminate "+ contatore + " vocali"); System.out.print(sout); Massimo Tistarelli 36

37 Fondamenti del linguaggio Esempio 4: inversione di una stringa String sin, sout START i=0 sout = vuota Stampa messaggio chiedendo all utente l inserimento di una stringa i<lung sin incolla in testa a sout carattere i-mo sin stampa sout END leggi sin i=i+1 Massimo Tistarelli 37

38 Fondamenti del linguaggio // inverte una stringa import java.util.*; public class esempio4{ public static void main(string[] args) { String sin, sout; sout=""; Scanner sc = new Scanner(System.in); System.out.println("Inserire una stringa arbitraria"); sin= sc.nextline(); for (int i=0; i<sin.length();i++) { sout = sin.charat(i)+sout; System.out.print(sout); Massimo Tistarelli 38

39 Fondamenti del linguaggio Esempio 5: Lettura e scrittura su disco di un file di testo preparare un file di testo di nome ingresso.txt che contenga righe come queste: Amedeo 22 Giovanni 20 Marco 25 Si vuole leggere il file ingresso.txt e creare un file uscita.txt dove i voti siano incrementati di uno, ad esempio: Amedeo 23 Giovanni 21 Marco 26 Massimo Tistarelli 39

40 Fondamenti del linguaggio Esempio 5: Lettura e scrittura su disco di un file di testo String nome int voto ci sono elementi START apri file di ingresso apri file di uscita leggi nome e voto stampa nome e voto voto = voto+1 chiudi file END scrivi nome e voto Massimo Tistarelli 40

41 Fondamenti del linguaggio import java.io.*; import java.util.*; public class LeggiFile{ public static void main(string[] args) throws IOException { FileReader inputf; // stream di ingresso PrintWriter outputf; // stream di uscita String nome; int val; // Apertura stream di ingresso inputf = new FileReader("ingresso.txt"); Scanner sf = new Scanner(inputf); // Apertura stream di uscita outputf = new PrintWriter("uscita.txt"); //(continua) Massimo Tistarelli 41

42 Fondamenti del linguaggio while (sf.hasnext()) { nome = sf.next(); val= sf.nextint(); System.out.println("sto leggendo: " + nome + " " + val); val=val+1; outputf.println(nome+ " " + val); // chiusura stream inputf.close(); outputf.close();...e se volessi usare un file con struttura nome, cognome, voto? Massimo Tistarelli 42

43 Fondamenti del linguaggio Array: sono oggetti di sistema! int[] k = new int[100]; int [][] matrice = new int[10][10]; Notare bene: Il programmatore deve CREARE esplicitamente questi oggetti le celle sono indicizzate a partire dal valore 0 fino a 99 per inizializzare un array occorre utilizzare un ciclo iterativo: Esempio: for (int i=0; i<100; i++){ K[i] = 0; Massimo Tistarelli 43

44 Fondamenti del linguaggio Esempio 6: massimo tra quattro numeri interi int i int [] N int max START max=n[0] i=1 Stampa max Stampa messaggio i=0 no max<n[i] si END max=n[i] i<4 SI Leggi N[i] i=i+1 i=i+1 i<4 Massimo Tistarelli 44

45 Fondamenti del linguaggio // massimo tra quattro numeri import java.util.*; // libreria utilità di sistema! public class esempio6{ public static void main(string[] args) { // dichiarazione delle variabili necessarie int[] N = new int[4]; int max,i; // lettura da tastiera dei valori Scanner sc = new Scanner(System.in); System.out.println("Inserire 4 numeri interi"); for (i=0;i<4;i++) { N[i]= sc.nextint(); // (continua) Massimo Tistarelli 45

46 Fondamenti del linguaggio // inizializzazione variabili max = N[0]; i = 1; // ciclo di controllo do { if(max<n[i]) { max = N[i]; i=i+1; while(i<4); // stampa massimo System.out.println("Massimo:" + max); // fine del main // fine della classe esempio6 Massimo Tistarelli 46

47 Fondamenti del linguaggio Esempio 7 : calcolo di media per una popolazione di 10 numeri in virgola mobile int i float [] val float media float somma START somma=0 i=0 media=somma/i Stampa media i=0 i<10 SI END i<10 SI somma=somma+val[i] leggi val[i] i=i+1 i=i+1 Massimo Tistarelli 47

48 Fondamenti del linguaggio import java.util.*; // libreria utilità di sistema! public class esempio7{ public static void main(string[] args) { // dichiarazione delle variabili float[] val= new float[10]; int i; float media, somma; // lettura da tastiera dei valori Scanner sc = new Scanner(System.in); for (i=0;i<10;i++) { System.out.println("Inserire il numero del vettore in posizione " + i); val[i]=sc.nextfloat(); Massimo Tistarelli 48

49 Fondamenti del linguaggio // ciclo di calcolo somma=0; for (i=0;i<10;i++) { somma = somma + val[i]; media = somma / i; // stampa media System.out.println("Media:" + media); // fine del main // fine esempio 6 Massimo Tistarelli 49

50 Fondamenti del linguaggio // cosa aggiungere per calcolare la varianza? float var; var=0; for (i=0;i<10;i++) { var += (val[i]-media) * (val[i]-media); var /= i; // stampa var System.out.println( Varianza:" + var); Massimo Tistarelli 50

51 Fondamenti del linguaggio Esempio 8 : calcolo del fattoriale int i, num long fat fat=num i=num START Stampa messaggio i>1 SI Stampa fat END leggi num i=i-1 fat = fat * i Massimo Tistarelli 51

52 Fondamenti del linguaggio import java.util.*; // libreria utilità di sistema! public class esempio8{ public static void main(string[] args) { // dichiarazione delle variabili int num, i; long fat; // uso long per codificare numeri grandi System.out.println("Inserire un numero intero"); // lettura da tastiera del valore Scanner sc = new Scanner(System.in); num = sc.nextint(); Massimo Tistarelli 52

53 Fondamenti del linguaggio fat = num; i=num; while(i > 1){ i = i-1; fat = fat * i; // stampo il risultato System.out.print("Il fattoriale di " + num + " vale: "+ fat); //fine main // fine classe di programma Massimo Tistarelli 53

54 Funzioni e procedure Tradizionalmente si indica con il nome di PROCEDURA un insieme di istruzioni associato ad un nome. La procedura, ovvero l insieme di istruzioni associato, può essere richiamato più volte nel corso del programma. Stampa() { System.out.println("Stampo questa frase"); Una procedura viene chiamata FUNZIONE se restituisce un valore int Somma( int a, int b) { int ris; ris = a+b; return ris; Massimo Tistarelli 54

55 Funzioni e procedure In JAVA non c è differenza tra procedure e funzioni. Si utilizza per entrambe il nome metodo. Un metodo deve sempre dichiarare il risultato di ritorno, che ovviamente può essere vuoto: void Stampa() { System.out.println("Stampo questa frase"); I parametri di un metodo devono sempre avere tipo definito. Di norma essi vengono COPIATI (passaggio per valore) e quindi LE VARIABILI ORIGINALI NON POSSONO ESSERE ALTERATE Se viene passato un OGGETTO esso non viene copiato. Le alterazioni all interno del metodo si rifletteranno quindi sull oggetto originale. Massimo Tistarelli 55

56 Funzioni e procedure Esempio 9 : calcolo del fattoriale ripetuto int num long fat START num>1 SI Stampa messaggio Calcola fattoriale di num e salva in fat END leggi num Stampa fat Stampa messaggio leggi num Massimo Tistarelli 56

57 Funzioni e procedure import java.util.*; // libreria utilità di sistema! public class esempio9{ public static void main(string[] args) { // dichiarazione delle variabili int num; long fat; // uso long per codificare numeri grandi System.out.println("Inserire un numero intero"); // lettura da tastiera del valore Scanner sc = new Scanner(System.in); num = sc.nextint(); while(num > 1){ fat = calcola_fattoriale(num); Massimo Tistarelli 57

58 Funzioni e procedure System.out.println( Fatt. di " + num +" = "+ fat); System.out.println("Inserire un numero intero"); num = sc.nextint(); //fine while // fine main static long calcola_fattoriale(int n){ long f; int i; f = n; i = n; while(i > 1){ i = i -1; f = f * i; return (f); // fine metodo calcola_fattoriale // fine classe di programma Massimo Tistarelli 58

59 Cicli nidificati: ordinamento di un array Esempio 10: ordinamento int i, indmin, n i=0 stampa array START Leggi lunghezza array e memorizza in n SI n < 2 i<(n-1) SI trova il min tra gli elementi che vanno dalla posizione i alla fine e memorizza la posizione del minimo in indmin Stampa errore crea array e carica array Scambio elementi in posizione i e indmin i=i+1 END Massimo Tistarelli 59

60 Cicli nidificati: ordinamento di un array Esempio 10: ordinamento int i,j, indmin, n float [] vl float temp START Leggi n (lunghezza vl) i=0 i<(n-1) SI indmin = i j < n SI vl[j]<vl[indmin] SI Stampa vl n < 2 SI i=0 j = i+1 indmin = j Stampa errore i<n j=j+1 SI leggi vl[i] Scambio elementi i e indmin i=i+1 i=i+1 END Massimo Tistarelli 60

61 Cicli nidificati: ordinamento di un array import java.util.*; // libreria utilità di sistema! public class esempio10{ public static void main(string[] args) { // dichiarazione delle variabili float[] vl; int n,indmin,i,j; float temp; // leggo la lunghezza del vettore System.out.println("Inserire il numero totale di valori da caricare nell'array"); Scanner sc = new Scanner(System.in); n = sc.nextint(); Massimo Tistarelli 61

62 Cicli nidificati: ordinamento di un array if (n < 2) { System.out.println("Il numero deve essere superiore a due - termine del programma"); else{ // creo il vettore vl = new float[n]; // carico l'array for (i=0; i<n ; i++) { System.out.println ("Inserire il numero in posizione "+ i); vl[i] = sc.nextfloat(); Massimo Tistarelli 62

63 Cicli nidificati: ordinamento di un array // ordino for (i=0; i<(n-1) ; i++) { indmin=i; for (j=i+1; j<n ; j++) { if (vl[j]<vl[indmin]) {indmin=j; // scambio elementi in posiz i e indmin temp = vl[i]; vl[i]=vl[indmin]; vl[indmin]=temp; //stampo il risultati for (i=0; i<n ; i++) System.out.println( vl[i]); // else // main // classe di programma Massimo Tistarelli 63

64 Esercizi di riepilogo Leggere da tastiera dieci valori che rappresentano la rilevazione relativa al numero di clienti di un albergo nel corso di dieci giorni consecutivi stampare l istogramma orizzontale di tale dato giorno 1 xxxx 2 xxxxxxxxxx 3 xxxxx 4... stampare l istogramma verticale di tale dato x x x x x x x x x x giorno Massimo Tistarelli 64

65 Esercizi di riepilogo // soluzione diagramma orizzontale import java.util.*; public class esempio11{ public static void main(string[] args) { int [] vb = new int[10]; int i,j; Scanner sc = new Scanner(System.in); // carico l'array for (i=0; i<vb.length ; i++) { System.out.print("Inserire il numero in posizione "+ i+ " : "); vb[i] = sc.nextint(); System.out.println ("giorno"); for (i=0; i<vb.length ; i++) { System.out.print(i + " "); for (j=0; j<vb[i] ; j++) { System.out.print("x"); System.out.println(); Massimo Tistarelli 65

66 Esercizi di riepilogo // soluzione diagramma verticale con array bidimensionale import java.util.*; public class esempio12{ public static void main(string[] args) { int [] vb = new int[10]; char [][] isto; int i,j; int max=1; Scanner sc = new Scanner(System.in); // carico l'array di valori memorizzando il massimo valore for (i=0; i<vb.length ; i++) { System.out.print("Inserire il numero in posizione "+ i+ " : "); vb[i] = sc.nextint(); if (vb[i] > max) {max = vb[i]; // creo l'array dell'istogramma a 2 dimensioni e carico i simboli isto = new char[max][vb.length]; for (i=0; i<vb.length ; i++) { for (j=0; j<vb[i] ; j++) { isto[max-1-j][i]= 'x'; Massimo Tistarelli 66

67 Esercizi di riepilogo // soluzione diagramma verticale con array bidimensionale // stampo for (j=0; j<max ; j++) { System.out.print(" "); //spazio ad inizio riga for (i=0; i<vb.length ; i++) { System.out.print(isto[j][i]); System.out.print(" "); // spazio tra i simboli System.out.println(); // nuova riga // stampo la didascalia System.out.print('\n'+"giorno "); for (i=0; i<vb.length ; i++) { System.out.print(i+" "); Massimo Tistarelli 67

68 Programmazione orientata agli oggetti Il Record: un nuovo oggetto di sistema definibile dall utente class Employee { Notare bene: String name; double salary; Il programmatore deve CREARE esplicitamente questi oggetti (come per gli array) esempio: Employee e1 = new Employee(); Massimo Tistarelli 68

69 Programmazione orientata agli oggetti import java.util.*; class Employee { String name; double salary; public class esempio13{ public static void main(string[] args) { Employee e1= new Employee(); e1.name = "Sechi Giovanni"; e1.salary = 12000; System.out.println("Reddito "+ e1.name + ": " + e1.salary); devo utilizzare una classe aggiuntiva entro il file di programma Massimo Tistarelli 69

70 Programmazione orientata agli oggetti Esempio 14 (testo d esame) Una sistema per la gestione telefonica archivia per ogni telefonata i seguenti dati: 1. numero chiamato 2. tipo chiamata (verso telefono fisso o cellulare) 3. durata chiamata in secondi Progettare un programma che consenta di caricare i dati sopra elencati relativi a 5000 interventi. Il programma deve quindi calcolare e stampare la durata media di una chiamata verso telefono fisso. Massimo Tistarelli 70

71 Programmazione orientata agli oggetti Esempio 14: uso record class Telefonata { String numero; boolean tipo; // false = fisso // true = mobile int durata; Telefonata[] elenco_tel int i, cont float dur_media START creazione elenco caricamento dati da tastiera dur_media=0 cont=0 i=0 i< 5000 SI elenco_tel[i].tipo == false i++ SI dur_media = dur_media + elenco_tel[i].durata cont=cont+1 stampa risultato END Massimo Tistarelli 71

72 Programmazione orientata agli oggetti import java.util.*; class Telefonata { String numero; boolean tipo; // false = verso fisso, true = verso mobile int durata; public class esempio14{ public static void main(string[] args) { Telefonata[] elenco_tel; int i; int cont; float dur_media; // creazione elenco telefonate elenco_tel = new Telefonata[10]; for (i=0; i<10 ; i++) {elenco_tel [i] = new Telefonata(); Massimo Tistarelli 72

73 Programmazione orientata agli oggetti // apertura tastiera Scanner kb = new Scanner(System.in); // lettura dati da tastiera for (i=0; i<10 ; i++) { System.out.println("Inserire numero chiamato "); elenco_tel[i].numero = kb.next(); System.out.println("Inserire 1 per chiamata verso mobile, 0 per chiamata verso fisso"); if (kb.nextint()==1) {elenco_tel[i].tipo = true; else {elenco_tel[i].tipo = false; System.out.println("Inserire durata della chiamata in secondi "); elenco_tel[i].durata = kb.nextint(); Massimo Tistarelli 73

74 Programmazione orientata agli oggetti // calcolo durata media telefonate verso fisso dur_media = 0; cont = 0; for (i=0; i<10 ; i++) { if (elenco_tel[i].tipo == false) { dur_media = dur_media + elenco_tel[i].durata; cont = cont+1; // stampa risultati if (cont!=0) { dur_media = dur_media/cont; System.out.println("Durata media verso tel fisso: "+ dur_media); else { System.out.println("Nessuna chiamata verso telefono fisso"); Massimo Tistarelli 74

75 Programmazione orientata agli oggetti La nozione di classe estende il concetto di record i campi diventano PRIVATI si aggiungono funzioni PUBBLICHE che lavorano sui dati funzione funzione funzione dati globali PROGRAMMAZIONE PROCEDURALE metodo metodo dati locali metodo metodo PROGRAMMAZIONE ORIENTATA metodo metodo AGLI OGGETTI dati locali Massimo Tistarelli 75

76 Programmazione orientata agli oggetti Classi definite dall utente: come si creano in modo appropriato class Employee { public Employee(String n, double s) { name = n; COSTRUTTORE salary = s; public void print() { System.out.println(name + " " + salary ); public void raisesalary(double bypercent) { salary *= 1 + bypercent / 100; private String name; private float salary; DATI PROTETTI Massimo Tistarelli 76

77 Programmazione orientata agli oggetti Classi definite dall utente: come si usano in modo appropriato class Employee { public Employee..... public class EmployeeTest { public static void main(string[] args) { Employee E1, E2; E1 = new Employee("Harry Hacker", 35000); E2 = new Employee("Carl Cracker", 35000); E1.print(); E2.print(); E1.raiseSalary(5); E2.raiseSalary(5); E1.print(); E2.print(); queste sono chiamate dei metodi di classe Massimo Tistarelli 77

78 Programmazione orientata agli oggetti Meccanismi di ereditarieta` class Manager extends Employee { public Manager(String n, float s) { super(n, s); secretaryname = ""; public void raisesalary(double bypercent) { // add 1/2% bonus for every year of service double bonus = 0.5 ; super.raisesalary(bypercent + bonus); //continua Massimo Tistarelli 78

79 Programmazione orientata agli oggetti Meccanismi di ereditarieta` // continua da pagina precedente public void setsecretaryname(string n) { secretaryname = n; public String getsecretaryname() { return secretaryname; private String secretaryname; // fine classe Manager Massimo Tistarelli 79

80 Programmazione orientata agli oggetti Meccanismi di ereditarieta` - Uso public class EmployeeTest { public static void main(string[] args) { Employee[] staff = new Employee[2]; staff[0] = new Employee("Harry Hacker", 35000); staff[1] = new Manager("Carl Cracker", 35000); int i; for (i = 0; i < 2; i++) staff[i].print(); for (i = 0; i < 2; i++) staff[i].raisesalary(5); for (i = 0; i < 2; i++) staff[i].print(); // qui di seguito il codice della classe Employee // qui il codice della classe Manager Massimo Tistarelli 80

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL 1 Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono

Dettagli

Le variabili. Olga Scotti

Le variabili. Olga Scotti Le variabili Olga Scotti Cos è una variabile Le variabili, in un linguaggio di programmazione, sono dei contenitori. Possono essere riempiti con un valore che poi può essere riletto oppure sostituito.

Dettagli

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof.

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof. Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record

Dettagli

Finestra.java. static String nomicolonne[] = {"ind.","cognome","nome","telefono","e-mail"}; //nomi delle colonne della tabella

Finestra.java. static String nomicolonne[] = {ind.,cognome,nome,telefono,e-mail}; //nomi delle colonne della tabella import java.awt.*; import java.awt.event.actionevent; import java.awt.event.actionlistener; import java.awt.event.windowevent; import java.awt.event.windowlistener; import java.io.*; import java.util.*;

Dettagli

Fondamenti di Informatica. Dichiarazione, creazione e gestione di array in Java

Fondamenti di Informatica. Dichiarazione, creazione e gestione di array in Java Fondamenti di Informatica Dichiarazione, creazione e gestione di array in Java Array in Java - creazione La creazione fa una inizializzazione implicita: num = new int[10]; con valore 0 per int e double,

Dettagli

/** * VETTORE DINAMICO elementi */ private Vector elementi; /** * METODO COSTRUTTORE */ public coda() { elementi=new Vector(); }

/** * VETTORE DINAMICO elementi */ private Vector elementi; /** * METODO COSTRUTTORE */ public coda() { elementi=new Vector(); } import java.util.*; class coda * Questa classe contiene tutti i metodi per la gestione della coda * @author D'Ambrosio Giovanni Classe 4D I.T.I.S. Grottaminarda * @version 26/02/2010 * VETTORE DINAMICO

Dettagli

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni

Le funzioni. Funzioni. Funzioni. Funzioni. Funzioni. Funzioni Funzioni Le funzioni Con il termine funzione si intende, in generale, un operatore che, applicato a un insieme di operandi, consente di calcolare un risultato, come avviene anche per una funzione matematica

Dettagli

! Programmazione strutturata ! TDA. ! Classi, incapsulamento, ! OO. ! Scambio messaggi, eredità, polimorfismo. ! OO in Java

! Programmazione strutturata ! TDA. ! Classi, incapsulamento, ! OO. ! Scambio messaggi, eredità, polimorfismo. ! OO in Java Riassunto Rassegna API - 1 Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro/ mizzaro@uniud.it Programmazione, lezione 17 3 maggio 2015! Programmazione

Dettagli

Introduzione agli algoritmi e alla programmazione in VisualBasic.Net

Introduzione agli algoritmi e alla programmazione in VisualBasic.Net Lezione 1 Introduzione agli algoritmi e alla programmazione in VisualBasic.Net Definizione di utente e di programmatore L utente è qualsiasi persona che usa il computer anche se non è in grado di programmarlo

Dettagli

Classi ed Oggetti in JAVA

Classi ed Oggetti in JAVA Classi ed Oggetti in JAVA Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dell Informazione Università di Siena Via Roma 56 53100 SIENA Uff. 0577233606 rigutini@dii.unisi.it www.dii.unisi.it/~rigutini/

Dettagli

Introduzione ad Access

Introduzione ad Access Introduzione ad Access Luca Bortolussi Dipartimento di Matematica e Informatica Università degli studi di Trieste Access E un programma di gestione di database (DBMS) Access offre: un supporto transazionale

Dettagli

Concetto di Funzione e Procedura METODI in Java

Concetto 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

Dettagli

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

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine

Dettagli

R.Focardi Laboratorio di Ingegneria del Software 6. 1

R.Focardi Laboratorio di Ingegneria del Software 6. 1 Networking Java permette comunicazioni in rete basate sul concetto di socket, che permette di vedere la comunicazione in termini di flusso (stream), in modo analogo all input-output di file, usando Stream

Dettagli

esercizi Esercizi / problemi

esercizi Esercizi / problemi Sistemi informativi applicati (reti di calcolatori): esercizi 1 Esercizi / problemi 1. Creare un applicazione che calcoli la media aritmetica dei seguenti valori interi: 35, 117, 23 e ne visualizzi il

Dettagli

Gestione dei File in C

Gestione dei File in C Gestione dei File in C Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario In questo documento saranno introdotte

Dettagli

Rapida Introduzione all uso del Matlab Ottobre 2002

Rapida Introduzione all uso del Matlab Ottobre 2002 Rapida Introduzione all uso del Matlab Ottobre 2002 Tutti i tipi di dato utilizzati dal Matlab sono in forma di array. I vettori sono array monodimensionali, e così possono essere viste le serie temporali,

Dettagli

Funzioni. Corso di Fondamenti di Informatica

Funzioni. Corso di Fondamenti di Informatica Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Funzioni Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica (Canale di Ingegneria delle Reti e dei

Dettagli

+ / operatori di confronto (espressioni logiche/predicati) / + 5 3 9 = > < Pseudo codice. Pseudo codice

+ / operatori di confronto (espressioni logiche/predicati) / + 5 3 9 = > < Pseudo codice. Pseudo codice Pseudo codice Pseudo codice Paolo Bison Fondamenti di Informatica A.A. 2006/07 Università di Padova linguaggio testuale mix di linguaggio naturale ed elementi linguistici con sintassi ben definita e semantica

Dettagli

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

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Algoritmi Algoritmi Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Il procedimento (chiamato algoritmo) è composto da passi elementari

Dettagli

Un oggetto per la lettura dalla tastiera

Un oggetto per la lettura dalla tastiera Fondamenti di informatica Oggetti e Java ottobre 2012 1 Un oggetto per la lettura dalla tastiera Le API di Java hanno un oggetto System.in che rappresenta la tastiera del calcolatore, ma che non è semplice

Dettagli

Informatica Applicata

Informatica Applicata Ing. Irina Trubitsyna Concetti Introduttivi Programma del corso Obiettivi: Il corso di illustra i principi fondamentali della programmazione con riferimento al linguaggio C. In particolare privilegia gli

Dettagli

IL LINGUAGGIO C++ Configurazione di Dev-C++

IL LINGUAGGIO C++ Configurazione di Dev-C++ IL LINGUAGGIO C++ Note sull'uso di DevC++ Requisiti di sistema per Dev-C++ - Sistema operativo Microsoft Windows 95, 98, Millenium Edition, NT 4, 2000 o XP - RAM: 8 Mb (consigliati almeno 32 Mb) - CPU:

Dettagli

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

PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI PROBLEMA DELLA RICERCA DI UN ELEMENTO IN UN ARRAY E ALGORITMI RISOLUTIVI PROBLEMA DELLA RICERCA in termini generali: Dati in input un insieme S di elementi (numeri, caratteri, stringhe, ) e un elemento

Dettagli

Introduzione al linguaggio C Gli array

Introduzione al linguaggio C Gli array Introduzione al linguaggio C Gli array Vettori nome del vettore (tutti gli elementi hanno lo stesso nome, c) Vettore (Array) Gruppo di posizioni (o locazioni di memoria) consecutive Hanno lo stesso nome

Dettagli

Introduzione alla Programmazione ad Oggetti in C++

Introduzione alla Programmazione ad Oggetti in C++ Introduzione alla Programmazione ad Oggetti in C++ Lezione 1 Cosa è la Programmazione Orientata agli Oggetti Metodologia per costruire prodotti software di grosse dimensioni che siano affidabili e facilmente

Dettagli

Abstract Data Type (ADT)

Abstract Data Type (ADT) Abstract Data Type Pag. 1/10 Abstract Data Type (ADT) Iniziamo la nostra trattazione presentando una nozione che ci accompagnerà lungo l intero corso di Laboratorio Algoritmi e Strutture Dati: il Tipo

Dettagli

Gli algoritmi. Gli algoritmi. Analisi e programmazione

Gli algoritmi. Gli algoritmi. Analisi e programmazione Gli algoritmi Analisi e programmazione Gli algoritmi Proprietà ed esempi Costanti e variabili, assegnazione, istruzioni, proposizioni e predicati Vettori e matrici I diagrammi a blocchi Analisi strutturata

Dettagli

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1) Strutture Strutture e Unioni DD cap.10 pp.379-391, 405-406 KP cap. 9 pp.361-379 Strutture Collezioni di variabili correlate (aggregati) sotto un unico nome Possono contenere variabili con diversi nomi

Dettagli

Arduino: Programmazione

Arduino: Programmazione Programmazione formalmente ispirata al linguaggio C da cui deriva. I programmi in ARDUINO sono chiamati Sketch. Un programma è una serie di istruzioni che vengono lette dall alto verso il basso e convertite

Dettagli

Linguaggio C++ Uso ambiente Dev C++ con creazione di progetto con scelta Basic --> Empty Project

Linguaggio C++ Uso ambiente Dev C++ con creazione di progetto con scelta Basic --> Empty Project Linguaggio C++ Uso ambiente Dev C++ con creazione di progetto con scelta Basic --> Empty Project NB: E necessario: adoperare la sintassi più evoluta per le direttive di precompilazione 1, usando come contenitore

Dettagli

Progetti reali con ARDUINO

Progetti reali con ARDUINO Progetti reali con ARDUINO Introduzione alla scheda Arduino (parte 2ª) ver. Classe 3BN (elettronica) marzo 22 Giorgio Carpignano I.I.S. Primo LEVI - TORINO Il menù per oggi Lettura dei pulsanti Comunicazione

Dettagli

Guida rapida all uso di ECM Titanium

Guida rapida all uso di ECM Titanium Guida rapida all uso di ECM Titanium Introduzione Questa guida contiene una spiegazione semplificata del funzionamento del software per Chiputilizzare al meglio il Tuning ECM Titanium ed include tutte

Dettagli

Cos è una stringa (1) Stringhe. Leggere e scrivere stringhe (1) Cos è una stringa (2) DD Cap. 8 pp. 305-341 KP Cap. 6 pp. 241-247

Cos è una stringa (1) Stringhe. Leggere e scrivere stringhe (1) Cos è una stringa (2) DD Cap. 8 pp. 305-341 KP Cap. 6 pp. 241-247 Cos è una stringa (1) Stringhe DD Cap. 8 pp. 305-341 KP Cap. 6 pp. 241-247 Una stringa è una serie di caratteri trattati come una singola unità. Essa potrà includere lettere, cifre, simboli e caratteri

Dettagli

I file di dati. Unità didattica D1 1

I file di dati. Unità didattica D1 1 I file di dati Unità didattica D1 1 1) I file sequenziali Utili per la memorizzazione di informazioni testuali Si tratta di strutture organizzate per righe e non per record Non sono adatte per grandi quantità

Dettagli

Oggetti Lezione 3. aspetti generali e definizione di classi I

Oggetti Lezione 3. aspetti generali e definizione di classi I Programmazione a Oggetti Lezione 3 Il linguaggio Java: aspetti generali e definizione di classi I Sommario Storia e Motivazioni Definizione di Classi Campi e Metodi Istanziazione di oggetti Introduzione

Dettagli

INFORMATIVA FINANZIARIA

INFORMATIVA FINANZIARIA Capitolo 10 INFORMATIVA FINANZIARIA In questa sezione sono riportate le quotazioni e le informazioni relative ai titoli inseriti nella SELEZIONE PERSONALE attiva.tramite la funzione RICERCA TITOLI è possibile

Dettagli

Corso di Informatica Medica Esercitazione 1I 2013-2014.! Alessandro A. Nacci nacci@elet.polimi.it - alessandronacci.com

Corso di Informatica Medica Esercitazione 1I 2013-2014.! Alessandro A. Nacci nacci@elet.polimi.it - alessandronacci.com Corso di Informatica Medica Esercitazione 1I 2013-2014! Alessandro A. Nacci nacci@elet.polimi.it - alessandronacci.com 1 2 Esercizio 1 Scrivere un programma che legga due array di interi da tastiera dica

Dettagli

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Condizione di sincronizzazione Qualora si voglia realizzare una determinata politica di gestione delle risorse,la decisione se ad

Dettagli

AA 2006-07 LA RICORSIONE

AA 2006-07 LA RICORSIONE PROGRAMMAZIONE AA 2006-07 LA RICORSIONE AA 2006-07 Prof.ssa A. Lanza - DIB 1/18 LA RICORSIONE Il concetto di ricorsione nasce dalla matematica Una funzione matematica è definita ricorsivamente quando nella

Dettagli

Programmazione di rete in Java

Programmazione di rete in Java Programmazione di rete in Java Reti di calcolatori Una rete di calcolatori è un sistema che permette la condivisione di dati informativi e risorse (sia hardware sia software) tra diversi calcolatori. Lo

Dettagli

Linguaggio C: introduzione

Linguaggio C: introduzione Linguaggio C: introduzione Il linguaggio C è un linguaggio general purpose sviluppato nel 1972 da Dennis Ritchie per scrivere il sistema operativo UNIX ed alcune applicazioni per un PDP-11. Il linguaggio

Dettagli

UML: Class Diagram. Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it

UML: Class Diagram. Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it UML: Class Diagram Ing. Orazio Tomarchio Orazio.Tomarchio@diit.unict.it Dipartimento di Ingegneria Informatica e delle Telecomunicazioni Università di Catania Class Diagram Forniscono una vista strutturale

Dettagli

Laboratorio 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 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 08/03/07 Nota Questi lucidi sono tratti

Dettagli

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1

DI D AGRA R MM M I M A BLOCC C H C I TEORI R A E D D E SERC R I C ZI 1 1 DIAGRAMMI A BLOCCHI TEORIA ED ESERCIZI 1 1 Il linguaggio dei diagrammi a blocchi è un possibile formalismo per la descrizione di algoritmi Il diagramma a blocchi, o flowchart, è una rappresentazione grafica

Dettagli

Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio. IDE = Integrated Development Environment

Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio. IDE = Integrated Development Environment Bloodshed Dev-C++ Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio IDE = Integrated Development Environment Gerardo Pelosi 01 Ottobre 2014 Pagina 1 di 8 Dev-C++ - Installazione Potete

Dettagli

Semplici Algoritmi di Ordinamento

Semplici 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

Dettagli

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity

CORSO DI ALGORITMI E PROGRAMMAZIONE. JDBC Java DataBase Connectivity CORSO DI ALGORITMI E PROGRAMMAZIONE JDBC Java DataBase Connectivity Anno Accademico 2002-2003 Accesso remoto al DB Istruzioni SQL Rete DataBase Utente Host client Server di DataBase Host server Accesso

Dettagli

Esercizi per il recupero del debito formativo:

Esercizi per il recupero del debito formativo: ANNO SCOLASTICO 2005/2006 CLASSE 3 ISC Esercizi per il recupero del debito formativo: Disegnare il diagramma e scrivere la matrice delle transizioni di stato degli automi a stati finiti che rappresentano

Dettagli

Le Stringhe. Un introduzione operativa. Luigi Palopoli

Le Stringhe. Un introduzione operativa. Luigi Palopoli Le Stringhe p.1/19 Le Stringhe Un introduzione operativa Luigi Palopoli ReTiS Lab - Scuola Superiore S. Anna Viale Rinaldo Piaggio 34 Pontedera - Pisa Tel. 050-883444 Email: palopoli@sssup.it URL: http://feanor.sssup.it/

Dettagli

RICORSIONE - schema ricorsivo (o induttivo) si esegue l'azione S, su un insieme di dati D, mediante eventuale esecuzione di

RICORSIONE - schema ricorsivo (o induttivo) si esegue l'azione S, su un insieme di dati D, mediante eventuale esecuzione di RICORSIONE - schema ricorsivo (o induttivo) si esegue l'azione S, su un insieme di dati D, mediante eventuale esecuzione di esempio CERCA 90 NEL SACCHETTO = estrai num Casi num 90 Effetti CERCA 90 NEL

Dettagli

MIPS Instruction Set 2

MIPS Instruction Set 2 Laboratorio di Architettura 15 aprile 2011 1 Architettura Mips 2 Chiamata a Funzione 3 Esercitazione Registri MIPS reference card: http://refcards.com/docs/waetzigj/mips/mipsref.pdf 32 registri general

Dettagli

INTRODUZIONE, LINGUAGGIO, HANDS ON. Giuseppe Cirillo g.cirillo@unina.it

INTRODUZIONE, LINGUAGGIO, HANDS ON. Giuseppe Cirillo g.cirillo@unina.it INTRODUZIONE, LINGUAGGIO, HANDS ON Giuseppe Cirillo g.cirillo@unina.it Il linguaggio C 1972-Dennis Ritchie 1978-Definizione 1990-ANSI C 1966 Martin Richars (MIT) Semplificando CPL usato per sviluppare

Dettagli

Corso di Fondamenti di Informatica

Corso di Fondamenti di Informatica Corso di Fondamenti di Informatica L uso delle funzioni in C++ Claudio De Stefano - Corso di Fondamenti di Informatica 1 Funzioni Nel C++ è possibile scomporre problemi complessi in moduli più semplici

Dettagli

Elementi di semantica denotazionale ed operazionale

Elementi di semantica denotazionale ed operazionale Elementi di semantica denotazionale ed operazionale 1 Contenuti! sintassi astratta e domini sintattici " un frammento di linguaggio imperativo! semantica denotazionale " domini semantici: valori e stato

Dettagli

Programmazione Java: Variabili membro, Metodi La parola chiave final

Programmazione Java: Variabili membro, Metodi La parola chiave final Programmazione Java: Variabili membro, Metodi La parola chiave final romina.eramo@univaq.it http://www.di.univaq.it/romina.eramo/tlp Roadmap Definire una classe» Variabili membro» Metodi La parola chiave

Dettagli

Esercitazione 7. Procedure e Funzioni

Esercitazione 7. Procedure e Funzioni Esercitazione 7 Procedure e Funzioni Esercizio Scrivere un programma che memorizza in un array di elementi di tipo double le temperature relative al mese corrente e ne determina la temperatura massima,

Dettagli

Le formule possono essere scritte utilizzando un insieme di funzioni predefinite che Excel mette a disposizione, raggruppate per argomento.

Le formule possono essere scritte utilizzando un insieme di funzioni predefinite che Excel mette a disposizione, raggruppate per argomento. Excel: le funzioni Le formule possono essere scritte utilizzando un insieme di funzioni predefinite che Excel mette a disposizione, raggruppate per argomento. DEFINIZIONE: Le funzioni sono dei procedimenti

Dettagli

Definizione. File di dati. Insieme di record omogenei memorizzati in memoria di massa. Record. Bianchi. Anna Roma 1980. Verdi. Luca Milano 1960.

Definizione. File di dati. Insieme di record omogenei memorizzati in memoria di massa. Record. Bianchi. Anna Roma 1980. Verdi. Luca Milano 1960. File di dati Definizione File di dati Insieme di record omogenei memorizzati in memoria di massa Bianchi Verdi Neri Verdi Anna Roma 1980 Luca Milano 1960 Andrea Torino 1976 Paola Bari 1954 Record Operazioni

Dettagli

Pila.h versione 6. class Pila { private: int marker; int * contenuto; public:

Pila.h versione 6. class Pila { private: int marker; int * contenuto; public: 1 Pila.h versione 6 struct Pila { private: int size; int defaultgrowthsize; int marker; int * contenuto; void cresci(int increment); public: Pila(int initialsize) ; Pila(); ~Pila() ; void copy(pila * to)

Dettagli

SOFTWARE GESTIONE SMS DA INTERFACCE CL MANUALE D INSTALLAZIONE ED USO

SOFTWARE GESTIONE SMS DA INTERFACCE CL MANUALE D INSTALLAZIONE ED USO CLSMS SOFTWARE GESTIONE SMS DA INTERFACCE CL MANUALE D INSTALLAZIONE ED USO Sommario e introduzione CLSMS SOMMARIO INSTALLAZIONE E CONFIGURAZIONE... 3 Parametri di configurazione... 4 Attivazione Software...

Dettagli

UNIVERSITA DEGLI STUDI DI TORINO WORD

UNIVERSITA DEGLI STUDI DI TORINO WORD WORD SOMMARIO 1. Muoversi nel testo... 1 2. Taglia, copia e incolla... 2 3. Aprire, salvare e chiudere... 3 4. Trovare e sostituire... 4 5. Visualizzare in modi diversi... 6 6. Formattare e incolonnare...

Dettagli

GUIDA ALLA PROGRAMMAZIONE GRAFICA IN C

GUIDA ALLA PROGRAMMAZIONE GRAFICA IN C GUIDA ALLA PROGRAMMAZIONE GRAFICA IN C.:luxx:. PREMESSE In questa guida non verranno trattati i costrutti di flusso, le funzioni, o comunque le caratteristiche del linguaggio, che si danno come presupposte.

Dettagli

PROGRAMMAZIONE ORIENTATA AGLI OGGETTI in C++

PROGRAMMAZIONE ORIENTATA AGLI OGGETTI in C++ PROGRAMMAZIONE ORIENTATA AGLI OGGETTI in C++ Classi ed oggetti. Classi derivate, ereditarietà e polimorfismo. Template Capitoli 12, 13, 14 Luis Joyannes Aguilar. Fondamenti di Programmazione in C++. Algoritmi,

Dettagli

Ambienti di sviluppo integrato

Ambienti di sviluppo integrato Ambienti di sviluppo integrato Un ambiente di sviluppo integrato (IDE - Integrated Development Environment) è un ambiente software che assiste i programmatori nello sviluppo di programmi Esso è normalmente

Dettagli

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto Università degli studi di Camerino Scuola di scienze e tecnologia - Sezione Informatica Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it www.cs.unicam.it/massimo.callisto LEZIONE

Dettagli

Struttura a record. File ad accesso diretto. Modalità di apertura. Modalità di apertura

Struttura a record. File ad accesso diretto. Modalità di apertura. Modalità di apertura Struttura a record 2 File ad accesso diretto Il file è organizzato in record aventi tutti la stessa struttura e quindi dimensione record 0 record 1 record 2 Ver. 2.4 2010 - Claudio Fornaro - Corso di programmazione

Dettagli

FUNZIONI. La libreria standard del C fornisce una ricca collezione di funzioni, come le funzioni:

FUNZIONI. La libreria standard del C fornisce una ricca collezione di funzioni, come le funzioni: FUNZIONI La libreria standard del C fornisce una ricca collezione di funzioni, come le funzioni: double sqrt(double) double pow (double, double) della libreria matematica, che abbiamo già usato anche senza

Dettagli

Quando A e B coincidono una coppia ordinata é determinata anche dalla loro posizione.

Quando A e B coincidono una coppia ordinata é determinata anche dalla loro posizione. Grafi ed Alberi Pag. /26 Grafi ed Alberi In questo capitolo richiameremo i principali concetti di due ADT che ricorreranno puntualmente nel corso della nostra trattazione: i grafi e gli alberi. Naturale

Dettagli

if t>=0 x=1; else x=0; end fornisce, nella variabile x, il valore della funzione gradino a tempi continui, calcolata in t.

if t>=0 x=1; else x=0; end fornisce, nella variabile x, il valore della funzione gradino a tempi continui, calcolata in t. Il programma MATLAB In queste pagine si introduce in maniera molto breve il programma di simulazione MAT- LAB (una abbreviazione di MATrix LABoratory). Introduzione MATLAB è un programma interattivo di

Dettagli

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

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni. Le funzioni in C I programmi C sono costituiti da definizioni di variabili e funzioni. Una definizione di funzione ha il seguente formato: tipo-ritornato nome-funzione(lista-parametri) { dichiarazioni

Dettagli

Universita' di Ferrara Dipartimento di Matematica e Informatica. Algoritmi e Strutture Dati. Rappresentazione concreta di insiemi e Hash table

Universita' di Ferrara Dipartimento di Matematica e Informatica. Algoritmi e Strutture Dati. Rappresentazione concreta di insiemi e Hash table Universita' di Ferrara Dipartimento di Matematica e Informatica Algoritmi e Strutture Dati Rappresentazione concreta di insiemi e Hash table Copyright 2006-2015 by Claudio Salati. Lez. 9a 1 Rappresentazione

Dettagli

FASE DEBUGGING: Compiler Linker. controllando che la voce Genera le informazioni per il debug cioè. "Generate debugging information"

FASE DEBUGGING: Compiler Linker. controllando che la voce Genera le informazioni per il debug cioè. Generate debugging information FASE DEBUGGING: Prima della compilazione, si devono inserire 1 nel progetto informazioni per il debug cioè si devono visualizzare le opzioni di progetto seguendo il percorso: controllando che la voce Genera

Dettagli

Lezione 9: Strutture e allocazione dinamica della memoria

Lezione 9: Strutture e allocazione dinamica della memoria Lezione 9: Strutture e allocazione dinamica della memoria Laboratorio di Elementi di Architettura e Sistemi Operativi 9 Maggio 2012 Allocazione dinamica della memoria Memoria dinamica È possibile creare

Dettagli

La fase di realizzazione. La fase di realizzazione (cont.) Traduzione in Java del diagramma degli use case

La fase di realizzazione. La fase di realizzazione (cont.) Traduzione in Java del diagramma degli use case Università degli Studi di Roma La Sapienza Corso di Laurea in Ingegneria dell Informazione Sede di Latina Corso di Laurea in Ingegneria dell Informazione Consorzio Nettuno La fase di realizzazione si occupa

Dettagli

STRUTTURE (O COSTRUTTI) DI CONTROLLO

STRUTTURE (O COSTRUTTI) DI CONTROLLO Le strutture di controllo Le strutture di controllo STRUTTURE (O COSTRUTTI) DI CONTROLLO determinano l ordine con cui devono essere eseguite le istruzioni sono indipendenti dalla natura delle istruzioni

Dettagli

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli

Dettagli

Generalizzazione di funzioni e di classi. Macro come funzioni generiche

Generalizzazione di funzioni e di classi. Macro come funzioni generiche Alessio Bechini - Corso di - Generalizzazione di funzioni e di classi Il meccanismo di template Macro come funzioni generiche long longmax(long x, long y) { Possibile soluzione int intmax(int x, int y)

Dettagli

Laboratorio di Sistemi Fattoriale di un numero Jsp [Java]

Laboratorio di Sistemi Fattoriale di un numero Jsp [Java] Desideriamo realizzare una applicazione web che ci consenta di calcolare il fattoriale di un numero. L'esercizio in sé non particolarmente difficile, tuttavia esso ci consentirà di affrontare il problema

Dettagli

Scrivere uno script php che, dato un array associativo PERSONE le cui chiavi sono i

Scrivere uno script php che, dato un array associativo PERSONE le cui chiavi sono i Esercizi PHP 1. Scrivere uno script PHP che produca in output: 1. La tabellina del 5 2. La tavola Pitagorica contenuta in una tabella 3. La tabellina di un numero ricevuto in input tramite un modulo. Lo

Dettagli

Fondamenti di Informatica T. Linguaggio C: File

Fondamenti di Informatica T. Linguaggio C: File Linguaggio C: File I File Il file e` l'unita` logica di memorizzazione dei dati su memoria di massa, che consente una memorizzazione persistente dei dati, non limitata dalle dimensioni della memoria centrale.

Dettagli

Il linguaggio Java. Concetti base. I packages

Il linguaggio Java. Concetti base. I packages Il linguaggio Java I packages Concetti base Un package è una collezione di classi ed interfacce correlate che fornisce uno spazio dei nomi ed un controllo sugli accessi Un package facilita il reperimento

Dettagli

Sottoprogrammi: astrazione procedurale

Sottoprogrammi: astrazione procedurale Sottoprogrammi: astrazione procedurale Incapsulamento di un segmento di programma presente = false; j = 0; while ( (j

Dettagli

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

Un ripasso di aritmetica: Conversione dalla base 10 alla base 16 Un ripasso di aritmetica: Conversione dalla base 1 alla base 16 Dato un numero N rappresentato in base dieci, la sua rappresentazione in base sedici sarà del tipo: c m c m-1... c 1 c (le c i sono cifre

Dettagli

Lab. 1 - Introduzione a Matlab

Lab. 1 - Introduzione a Matlab Lab. 1 - Introduzione a Matlab Alcune informazioni su Matlab Matlab è uno strumento per il calcolo scientifico utilizzabile a più livelli, dalla calcolatrice tascabile, alla simulazione ed analisi di sistemi

Dettagli

RICORSIVITA. Vediamo come si programma la soluzione ricorsiva al problema precedente: Poniamo S 1 =1 S 2 =1+2 S 3 =1+2+3

RICORSIVITA. Vediamo come si programma la soluzione ricorsiva al problema precedente: Poniamo S 1 =1 S 2 =1+2 S 3 =1+2+3 RICORSIVITA 1. Cos è la ricorsività? La ricorsività è un metodo di soluzione dei problemi che consiste nell esprimere la soluzione relativa al caso n in funzione della soluzione relativa al caso n-1. La

Dettagli

Import Dati Release 4.0

Import Dati Release 4.0 Piattaforma Applicativa Gestionale Import Dati Release 4.0 COPYRIGHT 2000-2005 by ZUCCHETTI S.p.A. Tutti i diritti sono riservati.questa pubblicazione contiene informazioni protette da copyright. Nessuna

Dettagli

Dichiarazioni di import: Introduzione

Dichiarazioni di import: Introduzione Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 2009-10 prof. Viviana Bono Blocco 10 Import di classi e di metodi statici Dichiarazioni di import:

Dettagli

Verifica che una grammatica sia Context Free nel GrammaReader

Verifica che una grammatica sia Context Free nel GrammaReader Verifica che una grammatica sia Context Free nel GrammaReader Sommario Dispensa di Linguaggi di Programmazione Corrado Mencar Pasquale Lops In questa dispensa si descrivono alcune soluzioni per verificare

Dettagli

Ricerca sequenziale di un elemento in un vettore

Ricerca sequenziale di un elemento in un vettore Ricerca sequenziale di un elemento in un vettore La ricerca sequenziale o lineare è utilizzata per ricercare i dati in un vettore NON ordinato. L algoritmo di ricerca sequenziale utilizza quan non ha alcuna

Dettagli

Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi

Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi TIPI DI DATO Tipicamente un elaboratore è capace di trattare domini di dati di tipi primitivi numeri naturali, interi, reali caratteri e stringhe di caratteri e quasi sempre anche collezioni di oggetti,

Dettagli

Ricorsione. Corso di Fondamenti di Informatica

Ricorsione. Corso di Fondamenti di Informatica Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Ricorsione Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica (Canale di Ingegneria delle Reti e

Dettagli

Funzioni matlab per la gestione dei file. Informatica B Prof. Morzenti

Funzioni matlab per la gestione dei file. Informatica B Prof. Morzenti Funzioni matlab per la gestione dei file Informatica B Prof. Morzenti File Contenitori di informazione permanenti Sono memorizzati su memoria di massa Possono continuare a esistere indipendentemente dalla

Dettagli

Introduzione a MySQL

Introduzione a MySQL Introduzione a MySQL Cinzia Cappiello Alessandro Raffio Politecnico di Milano Prima di iniziare qualche dettaglio su MySQL MySQL è un sistema di gestione di basi di dati relazionali (RDBMS) composto da

Dettagli

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO... Modulo A Programmiamo in Pascal Unità didattiche 1. Installiamo il Dev-Pascal 2. Il programma e le variabili 3. Input dei dati 4. Utilizziamo gli operatori matematici e commentiamo il codice COSA IMPAREREMO...

Dettagli

Energy Studio Manager Manuale Utente USO DEL SOFTWARE

Energy Studio Manager Manuale Utente USO DEL SOFTWARE Energy Studio Manager Manuale Utente USO DEL SOFTWARE 1 ANALYSIS.EXE IL PROGRAMMA: Una volta aperto il programma e visualizzato uno strumento il programma apparirà come nell esempio seguente: Il programma

Dettagli

Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi

Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi alternative: function nome { lista-comandi } oppure nome ( ) {

Dettagli

Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009. Lab 02 Tipi semplici in C

Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009. Lab 02 Tipi semplici in C Fondamenti di Informatica e Laboratorio T-AB Ingengeria dell Automazione a.a. 2008/2009 Lab 02 Tipi semplici in C Obiettivo dell esercitazione Acquistare familiarità con i tipi di dato semplici supportati

Dettagli

Calc è il programma per la gestione di fogli di calcolo della suite OpenOffice.org.

Calc è il programma per la gestione di fogli di calcolo della suite OpenOffice.org. Calc è il programma per la gestione di fogli di calcolo della suite OpenOffice.org. Nuovo documento Anteprima di stampa Annulla Galleria Apri Controllo ortografico Ripristina Sorgente dati Salva Controllo

Dettagli