Calcolo della moltiplicazione. Dagli Algoritmi ai Programmi. Esecuzione passo passo dell algoritmo

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Calcolo della moltiplicazione. Dagli Algoritmi ai Programmi. Esecuzione passo passo dell algoritmo"

Transcript

1 Dagli Algoritmi ai Programmi ondamenti di Informatica A Ingegneria Gestionale Università degli Studi di Brescia Docente: Prof. Alfonso Gerevini Calcolo della moltiplicazione Calcolo della moltiplicazione fra due numeri naturali x e y utilizzando solo operazioni di somma e sottrazione Scomposizione in sottoproblemi: 1. Leggi un valore dall esterno e inseriscilo nella variabile x 2. Leggi un valore dall esterno e inseriscilo nella variabile y 3. z 0 4. Se y > 0 allora vai al passo 5 altrimenti vai al passo 8 5. z z + x 6. y y 1 7. ai al passo 4 8. Stampa/visualizza la frase Prodotto = seguita dal valore in z 9. ine ondamenti di Informatica A Università di Brescia 2 Diagramma di flusso dell algoritmo della moltiplicazione no Prodotto =, z inizio x y z 0 y > 0 sì z z + x y y 1 ondamenti di Informatica A Università di Brescia 3 Esecuzione passo passo dell algoritmo 1 Lettura di un numero e memorizzazione nella variabile x (supponiamo x=8) Lettura di un numero e memorizzazione nella variabile y (supponiamo y=3) 2 Assegna 0 alla variabile z (che conterrà il risultato) 3 Controllo se y > 0 è vero 4 z = = 8 5 y = 3 1 = 2 6 Controllo se y > 0 è vero 7 z = = 16 8 y = 2 1 = 1 9 Controllo se y > 0 è vero 10 z = = y = 1 1 = 0 12 Controllo se y > 0 non è vero 13 Stampa/visualizza Prodotto = ine ondamenti di Informatica A Università di Brescia 4

2 Calcolo di x y Calcolo di x y (con x e y numeri naturali) utilizzando il sottoprogramma moltiplica(a,b) Scomposizione in sottoproblemi: 1. Leggi un valore dall esterno e inseriscilo nella variabile x 2. Leggi un valore dall esterno e inseriscilo nella variabile y 3. z 1 4. Se y > 0 allora vai al passo 5 altrimenti vai al passo 8 5. z moltiplica(z, x) 6. y y 1 7. ai al passo 4 8. Stampa/visualizza la frase x y = seguita dal valore in z 9. ine * il sottoprogramma moltiplica(a,b) riceve in ingresso due numeri naturali e ne restituisce il prodotto (può essere ad esempio definito attraverso l algoritmo precedente) Diagramma di flusso dell algoritmo per il calcolo di x y no x y =, z inizio x y z 1 y > 0 sì z moltiplica(z,x) y y 1 chiamata di un sottoprogramma ondamenti di Informatica A Università di Brescia 5 ondamenti di Informatica A Università di Brescia 6 Esecuzione passo passo dell algoritmo 1 Lettura di un numero e memorizzazione nella variabile x (supponiamo x=2) Lettura di un numero e memorizzazione nella variabile y (supponiamo y=4) 2 Assegna 1 alla variabile z (che conterrà il risultato) 3 Controllo se y > 0 è vero 4 z = moltiplica(1, 2) = 2 5 y = 4 1 = 3 6 Controllo se y > 0 è vero 7 z = moltiplica(2, 2) = 4 8 y = 3 1 = 2 9 Controllo se y > 0 è vero Esecuzione passo passo dell algoritmo (cont.) 10 z = moltiplica(4, 2) = 8 11 y = 2 1 = 1 12 Controllo se y > 0 è vero 13 z = moltiplica(8, 2) = y = 1 1 = 0 15 Controllo se y > 0 non è vero 16 Stampa/visualizza x y = ine ondamenti di Informatica A Università di Brescia 7 ondamenti di Informatica A Università di Brescia 8

3 Esercizio Scrivere l algoritmo e il diagramma di flusso per il seguente problema: dato in ingresso un numero intero N restituire in uscita il fattoriale di questo numero, cioè il valore ottenuto da N x (N-1) x (N- 2) x x 1 Scrivere l algoritmo controllando che il valore N in ingresso sia corretto (cioè maggiore di zero) Calcolo del fattoriale Calcolo del fattoriale del numero N N! = N x (N-1) x (N-2) x x 1 Esempio: 5! = 5 x 4 x 3 x 2 x 1 = 120 Scomposizione in sottoproblemi: 1. Leggi un valore dall esterno e inseriscilo nella variabile N 2. Se N <= 0 allora vai al passo 8 3. fattoriale 1 4. Se N > 1 allora vai al passo 5 altrimenti vai al passo 9 5. fattoriale fattoriale x N 6. N N 1 7. ai al passo 4 8. Stampa/visualizza la frase Errore nell inserimento del valore di N e vai al passo Stampa/visualizza la frase attoriale = seguita dal valore in fattoriale 10. ine ondamenti di Informatica A Università di Brescia 9 ondamenti di Informatica A Università di Brescia 10 Diagramma di flusso dell algoritmo del fattoriale sì Errore nell inserimento inizio N N<=0 no attoriale =, fattoriale no fattoriale 1 N > 1 sì fattoriale fattoriale * N N N 1 ondamenti di Informatica A Università di Brescia 11 Esecuzione passo passo dell algoritmo 1 Lettura di un numero e memorizzazione nella variabile N (supponiamo N=4) 2 Controllo se N <= 0 non èvero 3 Assegna 1 alla variabile fattoriale (che conterrà il risultato) 4 Controllo se N > 1 è vero 5 fattoriale = 1 * 4 = 4 6 N = 4 1 = 3 7 Controllo se N > 1 è vero 8 fattoriale = 4 * 3 = 12 9 N = 3 1 = 2 10 Controllo se N > 1 è vero 11 fattoriale = 12 * 2 = N = 2 1 = 1 13 Controllo se N > 1 non è vero 14 Stampa/visualizza attoriale = ine ondamenti di Informatica A Università di Brescia 12

4 Esercizio Scrivere l algoritmo e il diagramma di flusso per il seguente problema: l esecutore deve leggere in ingresso una sequenza di numeri naturali (i.e. interi positivi strettamente maggiori di zero) e calcolarne (per poi stamparli) il massimo, il minimo e la media La sequenza si interrompe non appena viene introdotto un numero negativo o uguale a zero Per esempio, data la sequenza 5, 1, 2, 3, 4, -5, il risultato dovrebbe essere: Il massimo è 5, il minimo è 1, la media è 3 Perché gli algoritmi non bastano Un algoritmo descritto con i linguaggi visti è spesso interpretabile in modo ambiguo n è utilizzabile da un esecutore automatico Ad esempio, in quegli algoritmi non si parlava di: come sono codificati i dati come avviene l interazione con operatori umani problemi legati alle caratteristiche fisiche: ad es. limiti nella dimensione dei numeri rappresentabili ondamenti di Informatica A Università di Brescia 13 ondamenti di Informatica A Università di Brescia 14 Dall analisi del problema all esecuzione problema analisi soluzione (informale) specifica algoritmo (sol. formale) programazione programma (alto livello) traduzione Hw programma (ling. macchina) esecuzione Programma Un programma è la descrizione formale di un algoritmo attraverso un linguaggio di programmazione Scrivere programmi è un compito complesso Esempio: il sistema operativo Windows NT è composto da 4,3 milioni di righe di istruzioni che, trascritte su fogli A4, riempirebbero più di 75 mila pagine Il calcolatore esegue i programmi passo per passo: se i passi non sono completi o non sono nell ordine corretto, oppure se ci sono dei conflitti tra i passi, il calcolatore non sarà in grado di portare a termine il suo compito ondamenti di Informatica A Università di Brescia 15 ondamenti di Informatica A Università di Brescia 16

5 Il lavoro dei programmatori I programmatori Scrivono i programmi erificano l esecuzione dei programmi (debugging) Correggono eventuali errori Preparano le istruzioni/documentazione per gli utenti finali (manuali) Modificano programmi esistenti per aumentarne l efficienza o per adattarli a nuove esigenze Ora anche utenti poco esperti di programmazione vengono messi in grado di scrivere programmi (linguaggi macro e di interrogazione sono presenti in molti ambienti applicativi) Linguaggi di programmazione I linguaggi di programmazione (di alto livello) sono nati per consentire uno sviluppo rapido e facile di applicazioni informatiche Permettono di descrivere l algoritmo e le componenti più operative (es. visualizzazione dei risultati) in un formalismo che fa uso di un insieme ridotto di termini linguistici (della lingua inglese) Con tali termini linguistici vengono formate le istruzioni che operano sui dati Le istruzioni hanno un significato preciso e univoco ondamenti di Informatica A Università di Brescia 17 ondamenti di Informatica A Università di Brescia 18 Cos è in pratica un programma? Un programma è dunque una sequenza di istruzioni di un linguaggio di programmazione di alto livello (ad es.: ortran, Cobol, Basic, C, Pascal, Ada, C++, Java, Prolog, Lisp) Un programma viene poi tradotto in linguaggio macchina per essere eseguito dal calcolatore Ogni linguaggio di programmazione ha Sintassi + semantica Confronteremo frammenti di programmi in C e in Basic (si vedranno analogie sintattiche e semantiche fra i due linguaggi) Esempio: moltiplicazione tra numeri interi positivi Sì z z+b w w-1 Inizio Dichiarazione: a,b,w,z sono numeri a b w a z 0 w>0 z ondamenti di Informatica A Università di Brescia 19 ondamenti di Informatica A Università di Brescia 20

6 Dallo pseudo-codice al programma in C identificazione programma Dati main() /* prodotto in C */ a, b interi positivi unsigned int a, b dichiarazione w, z interi int w, z; variabili Risoluzione leggi a e b scanf( %d %d, &a,&b); z 0 z = 0; w a w = a; finchè w > 0 ripeti while (w > 0) controllo z z + b z = z + b; w w 1 w = w 1; ciclo scrivi z printf( %d, z); corpo del programma Dati Dallo pseudo-codice al programma in Basic prodotto in Basic a, b interi positivi dim a as integer, b as integer w, z interi dim w as integer, z as integer Risoluzione leggi a e b input a, b z 0 z = 0 w a w = a finchè w > 0 ripeti while w > 0 z z + b z = z + b w w 1 w = w - 1 ciclo wend scrivi z print z controllo identificazione programma corpo del programma dichiarazione variabili ondamenti di Informatica A Università di Brescia 21 ondamenti di Informatica A Università di Brescia 22 ariabili e tipi Ogni variabile ha un tipo Il tipo identifica le proprietà della variabile e le operazioni che su di essa possono essere compiute Ogni variabile viene dichiarata prima del suo utilizzo Dichiarazione del tipo delle variabili Assegnamento dei valori alle variabili Dichiarazioni di variabili e assegnamento di valori La dichiarazione della variabile z di tipo intero crea un contenitore per memorizzare un valore intero positivo La dichiarazione associa il nome z a tale contenitore L assegnamento usa il contenitore per memorizzarvi il valore z z 0 ondamenti di Informatica A Università di Brescia 23 ondamenti di Informatica A Università di Brescia 24

7 Le istruzioni Il corpo del programma è composto da una sequenza di istruzioni Nei linguaggi di programmazione si distinguono solitamente 3 tipi di istruzioni: Istruzioni di ingresso/uscita Istruzioni aritmetico-logiche Istruzioni di controllo Istruzioni di ingresso/uscita e istruzioni aritmetico-logiche Le istruzioni di I/O consentono: l acquisizione (ingresso) di dati dall esterno la presentazione dei risultati in uscita in linguaggio C: scanf e printf in Basic: input e output Le istruzioni aritmetico-logiche consentono la manipolazione dei dati la generazione di nuovi risultati in quasi tutti i linguaggi sono assegnamenti ondamenti di Informatica A Università di Brescia 25 ondamenti di Informatica A Università di Brescia 26 Operazioni logiche Le operazioni di tipo logico fanno riferimento a variabili o costanti di tipo booleano Somma e prodotto logici sono indicati rispettivamente con i termini OR e AND In C: OR corrisponde a AND corrisponde a && main() int h, i, j, k; bool b1, b2, b3; b1 = h > j; /* b1 true se h è maggiore di j */ b2 = (h > j) (j ==k); /* b2 true se h è maggiore di j o se j e k hanno lo stesso valore */ b3 = b1 && b2; /* b3 true se sia b1 che b2 sono true */ Esempi di utilizzo delle operazioni logiche tare differenza fra = (per assegnamento) e == per confronto (valutazione di uguaglianza fra due valori) ondamenti di Informatica A Università di Brescia 27 ondamenti di Informatica A Università di Brescia 28

8 Proprietà Booleane NOT (a OR b) =(NOT a) AND (NOT b) De Morgan NOT (a AND b) = (NOT a) OR (NOT b) De Morgan a AND (b OR c) = (a AND b) OR (a AND c) Distributiva a OR (b AND c) = (a OR b) AND (a OR c) Distributiva NOT (NOT a) = a Doppia negazione a AND b = b AND a Commutativa a OR b = b OR a Commutativa a AND (b AND c) = (a AND b) AND c Associativa a OR (b OR c) = (a OR b) OR c Associativa Istruzioni di controllo Le istruzioni di controllo consentono di modificare il flusso di esecuzione delle istruzioni all interno di un programma L esecuzione sequenziale viene alterata attraverso le istruzioni di controllo che introducono dei salti Salto incondizionato: salto ad un certo punto del programma (identificatore) senza alcun controllo Salto condizionato: il salto è condizionato al verificarsi di una condizione valutata durante l esecuzione del programma ondamenti di Informatica A Università di Brescia 29 ondamenti di Informatica A Università di Brescia 30 Sì blocco istruzioni cond Selezione semplice /* selezione semplice */ if (cond) /*blocco istruzioni */ /* eseguito solo se */ /* cond è true */ Basic if cond then end if B C * D C C + 1 Esempio di selezione semplice A = 5 int A, B, C, D; if (A = = 5) B = C * D; C = C + 1; Basic dim A as integer, B as integer dim C as integer, D as integer if A = 5 then B = C * D C = C + 1 end if ondamenti di Informatica A Università di Brescia 31 ondamenti di Informatica A Università di Brescia 32

9 Selezione a due vie Esempio di selezione a 2 vie Sì cond blocco 1 blocco 2 /* selezione a 2 vie */ if (cond) /* blocco 1 */ else /* blocco 2 */ Basic if cond then else end if A A - B B B - 1 A > B B B - A A A - 1 int A, B; if (A > B) A = A - B; B = B - 1; else B = B - A; A = A - 1; Basic dim A as integer dim B as integer if A > B then A = A - B B = B - 1 else B = B - A A = A - 1 end if ondamenti di Informatica A Università di Brescia 33 ondamenti di Informatica A Università di Brescia 34 Selezione a più vie (in C) Selezione a più vie (in Basic) Si blocco 1 test 1 Si blocco 2 test 2 Si blocco n test n blocco n+1 /* selezione a più vie */ if (test1) /* blocco 1 */ else if (test2) /* blocco 2 */ else if (testn) /* blocco n */ else /* blocco n + 1*/ Si blocco 1 test 1 Si blocco 2 test 2 Si blocco n test n blocco n+1 Basic selezione a più vie if test1 then blocco 1 elseif test2 then blocco 2 elseif testn then blocco n else blocco n + 1 end if ondamenti di Informatica A Università di Brescia 35 ondamenti di Informatica A Università di Brescia 36

10 cond Ciclo a condizione iniziale Blocco istruzioni /* ciclo a condizione iniziale */ while (cond) /* blocco istruzioni eseguito quando cond è vero */ /* eseguito quando cond è falso */ Basic while cond blocco istruzioni eseguito quando cond è vero wend eseguito quando condè falso Esempio di ciclo a condizione iniziale Inizio J 0 I 0 I <= 10 I I + 1 J J + I int I, J; J = 0; I = 0; while (I <= 10) I = I + 1; J = J + I; Basic Esercizio: cosa fa il programma? Quali sono i valori finali di I e J? dim I as integer, J as integer J = 0 I = 0 while I <= 10 I = I + 1 J = J + I wend ondamenti di Informatica A Università di Brescia 37 ondamenti di Informatica A Università di Brescia 38 Sì Ciclo a condizione finale blocco istruzioni cond /* ciclo a condizione */ /* finale */ do /* blocco istruzioni eseguito almeno una volta e finchè cond rimane vera */ while (cond) /* eseguito quando cond è falsa */ Basic do blocco istruzioni eseguito almeno una volta e finchè cond rimane vera loop while cond eseguito quando cond è falsa Esempio di ciclo a condizione finale Inizio j 1 i 10 j j * i i i - 1 i > 0 j int i, j; j = 1; i = 10; do j = j * i; i = i 1; while (i > 0) printf( %d, j); Basic dim I as integer, J as integer j = 1 i = 10 do j = j * i i = i - 1 loop while i > 0 print j Esercizio: cosa calcola questo programma? ondamenti di Informatica A Università di Brescia 39 ondamenti di Informatica A Università di Brescia 40

11 Ciclo or Si utilizza quando è noto a priori il numero di iterazioni da compiere Ad esempio: Algoritmo che, preso in ingresso un numero n, calcola la somma dei quadrati dei numeri compresi fra 1 e n Nell algoritmo avrò un ciclo di n iterazioni (con n noto a priori, cioè prima di entrare nel ciclo) In tutti i linguaggi è previsto un costrutto del tipo for i=1 to n do sequenza istruzioni la sintassi precisa ovviamente cambia da linguaggio a linguaggio Esempio di uso del ciclo or Dati i, n, s interi Risoluzione leggi n s 0 for i=1 to i = n s = s + i*i for scrivi s E se n è minore di 1? È un ciclo a condizione iniziale Inizio s 0 i 1 i <= n n s s + i * i i i + 1 s ondamenti di Informatica A Università di Brescia 41 ondamenti di Informatica A Università di Brescia 42 Ciclo or in C e in Basic Algoritmo di Euclide per il MCD (in C) inizio Dati i, n, s interi Risoluzione leggi n s 0 for i=1 to i = n s = s + i*i for scrivi s int i, n, s; scanf( %d, &n); s = 0; for ( i=1; i<=n; i++ ) s = s + i*i; printf( %d, s); Basic dim i as integer, n as integer dim s as integer input n s = 0 for i=1 to n s = s + i*i next i print s no sì x x y MCD =, y x y x y sì x > y no y y x main() /* MCD in C */ int x, y; scanf( %d, &x); scanf( %d, &y); while (x!= y) if (x > y) x = x y; else y = y - x printf( %d, y) ondamenti di Informatica A Università di Brescia 43 ondamenti di Informatica A Università di Brescia 44

12 Algoritmo di Euclide per il MCD (in Basic) inizio I dati: tipi no sì x x y x y x y sì x > y no y y x MCD in Basic dim x as integer, y as integer input x input y while x <> y if x > y then x = x y else y = y x end if wend print y Ogni variabile è caratterizzata da un tipo (oltre che dal nome e dal valore) Il tipo specifica le operazioni di cui le variabili possono essere oggetto Tipi predefiniti: numeri (interi, reali, ), caratteri, booleani normalmente previsti in tutti i linguaggi di programmazione Esempi: tipo int (intero) in C permette di dichiarare variabili di tipo intero Su variabili di tipo intero saranno applicabili operatori aritmetici (+, *, -, /, ) Il tipo booleano permette di dichiarare variabili che possono assumere solo i valori vero e falso (true e false) MCD =, y Su variabili di tipo booleano possono essere applicate operazioni logiche, ad esempio AND (&& in C) e OR ( in C) ondamenti di Informatica A Università di Brescia 45 ondamenti di Informatica A Università di Brescia 46 Altri tipi Previsti solo in alcuni linguaggi Tipo stringa per la memorizzazione di successioni di caratteri alfanumerici: esempio ciao a tutti Tipo data per la memorizzazione di date: esempio 15/10/1002 L "overloading" degli operatori Uno stesso operatore (ad esempio + ) può assumere significati diversi a seconda del tipo delle variabili a cui viene applicato Si dice che l operatore viene sovraccaricato di significato (operator overloading) L operatore + applicato a variabili numeriche ne somma i valori a variabili di tipo stringa ne giustappone i valori: se x contiene ciao e y contiene a tutti allora x + y conterrà la stringa ciao a tutti Applicato a una variabile di tipo data e a una numerica aggiorna la data ondamenti di Informatica A Università di Brescia 47 ondamenti di Informatica A Università di Brescia 48

13 ariabili strutturate: i vettori Esempio: somma dei guadagni di 1 anno Le variabili dichiarate di un tipo predefinito diventano contenitori di singoli valori int x significa che la variabile x è un contenitore di un valore intero Dati n=12 intero g[ ] vettore di interi w, z interi positivi Risoluzione int g[12]; int w, z; Basic dim g(12) as integer dim w as integer dim z as integer E se volessimo memorizzare i guadagni di 12 mesi in 12 variabili? Possiamo a) dichiarare dodici variabili di tipo intero: g1, g2,, g12 b) oppure dichiarare un ETTORE (ARRAY) g di 12 posizioni Ogni vettore ha un nome e un tipo e può contenere un numero stabilito n di elementi, ogni elemento è identificato da un indice che varia fra 1 e n w 1 z 0 finchè (w <= n ) ripeti z z + g[w] w w + 1 ciclo scrivi z w = 0; z = 0; while (w < 12) z = z + g[w]; w = w + 1; printf ( %d, z); w = 1 z = 0 while w <= 12 z = z + g(w) w = w + 1 wend print z ondamenti di Informatica A Università di Brescia 49 ondamenti di Informatica A Università di Brescia 50 ariabili strutturate: matrici Le matrici sono array multidimensionali, cioè i cui elementi sono identificati di più indici contemporaneamente Ogni indice identifica una dimensione della matrice Esempio: nella gestione del magazzino di un azienda si vuole tenere traccia, per ognuno dei suoi 50 prodotti, della disponibilità mensile Usiamo una matrice d[i,j] dove i è l indice che identifica l iesimo prodotto (1..50) e j è l indice che identifica il mese a cui si riferisce la disponibilità (1..12) Matrice bidimensionale Dati relativi al mese j-esimo Dati relativi al prodotto i-esimo (n=50) d[1,1] d[1,2] d[2,1] d[2,2] d[i,1] d[i,2] d[1,j] d[2,j] d[i,j] d[1,12] d[2,12] d[i,12] d[n,1] d[n,2] d[n,j] d[n,12] ondamenti di Informatica A Università di Brescia 51 ondamenti di Informatica A Università di Brescia 52

14 Esempio: inizializzazione della matrice d Inizio i 1 j 1 i <= 50 j <= 12 d[i,j] 0 j j + 1 i i + 1 j 1 int i, j; int d[50][12]; i = 0; j = 0; while (i < 50) while (j < 12) d[i,j] = 0; j = j + 1; i = i + 1; j = 0; Ordine di inizializzazione d[0,0] = 0 d[0,1] = 0 d[0,2] = 0 d[0,11] = 0 d[1,0] = 0 d[1,1] = 0 d[1,11] = 0 d[48,11] = 0 d[49,0] = 0 d[49,1] = 0 d[49,11] = 0 ondamenti di Informatica A Università di Brescia 53 or anziché While (in C) int i, j; int d[50][12]; i = 0; j = 0; while (i < 50) while (j < 12) d[i,j] = 0; j = j + 1; i = i + 1; j = 0; int i, j; int d[50][12]; for (i=0; i < 50; i++) for (j=0; j < 12; j++) d[i,j] = 0; ondamenti di Informatica A Università di Brescia 54 ariabili strutturate: record Nei vettori e nelle matrici gli elementi devono essere tutti dello stesso tipo Si supponga che per ogni elemento si vogliano però memorizzare diversi dati Ad esempio: per ogni studente si vuole memorizzare numero di matricola, nome, cognome, numero degli esami sostenuti Tipi definiti dall utente: a partire dai tipi di dati disponibili nel linguaggio l utente può definire altri tipi Il programmatore può definire delle strutture Una variabile avente una certa struttura definita comprende più componenti di diverso tipo Le strutture sono dette record e i componenti campi definizione del tipo studente Esempio: il record studente struct studente /* in C */ int matricola; char nome[30]; char cognome[30]; int num_esami; studente matricola = nome = Mario cognome = Rossi num_esami = 0 definizione del tipo studente type studente in Basic matricola as integer nome as string * 30 cognome as string * 30 num_esami as integer end type ondamenti di Informatica A Università di Brescia 55 ondamenti di Informatica A Università di Brescia 56

15 Dichiarazione e uso di record ettori di record e accesso diretto C Dichiarazione Basic struct studente stud; dim stud as studente Assegnamento stud.matricola = 25891; stud.matricola = Modifica stud.num_esami = stud.num_esami + 1; stud.num_esami = stud.num_esami + 1 struct studente /* in C */ int matricola; char nome[30]; char cognome[30]; int num_esami; ; Main() struct studente s[100]; s[3].num_esami = 0; type studente in Basic matricola as integer nome as string * 30 cognome as string * 30 num_esami as integer end type dim s(100) as studente s(3).num_esami = 0 Assegna il valore 0 al numero di esami dello studente di indice 3 ondamenti di Informatica A Università di Brescia 57 ondamenti di Informatica A Università di Brescia 58 I sottoprogrammi Soluzione di problemi complessi Lavoro di più persone in modo coordinato La struttura dei programmi deve essere il più possibile comprensibile e modulare Ricordate il concetto di strutturazione in sottoproblemi e di problemi elementari I sottoprogrammi corrispondono alla soluzione di sottoproblemi acilitati comprensione, controllo correttezza, manutenzione Strutturazione in sottoprogrammi Ogni sottoproblema sufficientemente limitato può essere assunto come problema terminale Per ogni problema terminale esiste un istruzione del linguaggio che lo risolve Per ogni sottoproblema si scrive un sottoprogramma A questo punto è come se il linguaggio si arricchisse di nuove istruzioni ogni nuova istruzione è la chiamata di un sottoprogramma e quindi corrisponde all esecuzione di un sottoprogramma (una certa sequenza di istruzioni del linguaggio di programmazione) ondamenti di Informatica A Università di Brescia 59 ondamenti di Informatica A Università di Brescia 60

16 Esempio di uso di sottoprogrammi Supponiamo di disporre di una matrice p contenente i valori dei fatturati relativi ai 100 prodotti di un azienda per ogni mese dell anno (p ha cioè 100 righe e 12 colonne) p[i,j] contiene il fatturato del prodotto i nel mese j Si vuole visualizzare il fatturato mensile medio di ogni prodotto specificato dall utente attraverso l inserimento dell indice relativo al prodotto Scriviamo il programma supponendo di disporre di un sottoprogramma che calcola la media Dati nintero z razionale booleano Risoluzione false finchè (non ) ripeti leggi w se (w > 0) z media(w) scrivi z altrimenti true condizione ciclo Programmi in C e Basic int w; float z; bool ; Basic dim w as integer dim z as single dim as integer = 0 while not input w if w > 0 then z = media(w) print z else = -1 = 0; while (!) scanf( %d,&w); if (w > -1) z = media(w); printf( %d,z); else = 1; end if? wend? ondamenti di Informatica A Università di Brescia 61 ondamenti di Informatica A Università di Brescia 62 te sui programmi precedenti Nello pseudo-codice e nel codice Basic, se l utente inserisce un indice di prodotto <=0 allora l esecuzione termina, altrimenti viene calcolata la media dei valori della riga individuata dall indice inserito Nel caso del C la locazione p[0,0] contiene il fatturato del primo prodotto nel mese di gennaio la numerazione degli indici di vettori e matrici inizia dallo zero Se l utente inserisce un indice (del prodotto) >-1 (cioè 0 o un numero positivo) allora viene fatto il calcolo della media e viene visualizzato il fatturato medio relativo al prodotto altrimenti l esecuzione termina In Basic, se il valore di una variabile o di una espressione è diverso da zero, allora il suo valore booleano corrispondente è vero (uso diffuso del valore -1 per indicare il valore vero ) unzione media(w) Dati i,j interi z razionale p[] matrice di interi Risoluzione i 1 e j 0 finchè (i < 13) ripeti j j + (p[w, i]) i i + 1 ciclo z = j / 12 restituisci z funzione La funzione media float media(int w) int i, j; float z; int p[100][12]; i = 0; j = 0; while (i < 12) j = j + p[w][i]; i = i + 1; z = j / 12; return (z); function media (was integer) dim i as integer dim j as integer dim z as single dim p(100, 12) as integer i = 1: j = 0 while i <= 12 j = j + p(w, i) i = i + 1 wend z = j /12 media = z end function ondamenti di Informatica A Università di Brescia 63 ondamenti di Informatica A Università di Brescia 64

17 Domanda Che controllo manca nei programmi? cosa succede se l utente, come indice di prodotto, inserisse 120? Nella funzione media si va ad accedere alle locazioni p[120,i] con i che varia fra 1 e 12 (o fra 0 e 11 nel caso del C) In ogni caso tutte queste locazioni sono al di fuori della nostra matrice! Un altro esempio di uso di sottoprogrammi Uno stesso sottoproblema si può presentare più volte in momenti diversi Con i sottoprogrammi si riduce il numero delle istruzioni del programma Invece di ripetere la stessa sequenza di istruzioni più volte si scrive un sottoprogramma e lo si richiama tutte le volte che serve Esempio: calcolo di z = x 2 + y 2 Le stesse funzioni scanf e printf del C che abbiamo visto sono sottoprogrammi disponibili in (una libreria del) C ondamenti di Informatica A Università di Brescia 65 ondamenti di Informatica A Università di Brescia 66 z z+x w w -1 Inizio leggi x e y w x z 0 w> 0 z z+y w w -1 Calcolo di x 2 + y 2 x2 z w y z 0 w> 0 I prodotti x*x e y*y sono ottenuti con somme successive y2 z q x2+y2 scrivi x 2 + y 2 =q main() /* q = x 2 + y 2 */ int x,y,x2,y2,q,w,z; scanf( %d %d,&x,&y); w = x; z = 0; while (w > 0) z = z + x; w = w 1; x2 = z; w = y; z = 0; while (w > 0) z = z + y; w = w - 1; y2 = z; q = x2+y2; printf( %d,q); unzione quad(a) Calcolo di x 2 + y 2 z z + a w w -1 unzione quad (a) w a z 0 w> 0 ritorna z Esercizio Scrivere la funzione quad in C e in Basic Inizio leggi x e y x2 quad(x) y2 quad(y) q x2 + y2 scrivi x 2 + y 2 =q ondamenti di Informatica A Università di Brescia 67 ondamenti di Informatica A Università di Brescia 68

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

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore Programma del corso Introduzione agli algoritmi Rappresentazione delle Informazioni Architettura del calcolatore Reti di Calcolatori Elementi di Programmazione Algoritmi e programmi Algoritmo Sequenza

Dettagli

RAPPRESENTAZIONE GLI ALGORITMI NOTAZIONE PER LA RAPPRESENTAZIONE DI UN ALGORITMO

RAPPRESENTAZIONE GLI ALGORITMI NOTAZIONE PER LA RAPPRESENTAZIONE DI UN ALGORITMO RAPPRESENTAZIONE GLI ALGORITMI NOTAZIONE PER LA RAPPRESENTAZIONE DI UN ALGORITMO Rappresentazione degli algoritmi Problema Algoritmo Algoritmo descritto con una qualche notazione Programma Defne del procedimento

Dettagli

Esempio: Problema 2 Il Progetto degli Algoritmi (Il linguaggio degli schemi a blocchi: seconda parte)

Esempio: Problema 2 Il Progetto degli Algoritmi (Il linguaggio degli schemi a blocchi: seconda parte) Esempio: Problema 2 Il Progetto degli Algoritmi (Il linguaggio degli schemi a blocchi: sea parte) ondamenti di Informatica A Ingegneria Gestionale Università degli Studi di Brescia Docente: Prof. Alfonso

Dettagli

Laboratorio di Programmazione

Laboratorio di Programmazione Laboratorio di Programmazione Laurea in Bioinformatica Docente: Carlo Drioli Web: www.scienze.univr.it/fol/main?ent=oi&id=39990 Programmazione: Dati Strutture di controllo Algoritmi Materiale tratto dai

Dettagli

Linguaggio 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 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

Dettagli

6 - 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 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

Dettagli

Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione. e mail: sito: users.iol.

Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione. e mail: sito: users.iol. Politecnico di Torino Sede di Alessandria Corso di informatica Programmazione in c: introduzione prof. Lorenzo Porcelli e mail: genna18@iol.it sito: users.iol.it/genna18 Risoluzione di un problema Dato

Dettagli

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE Francesco Tura francesco.tura@unibo.it 1 Lo strumento dell informatico: ELABORATORE ELETTRONICO [= calcolatore = computer] Macchina multifunzionale Macchina

Dettagli

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe. Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe. 1) Comprendere il problema 2) Stabilire quali sono le azioni da eseguire per risolverlo 3) Stabilire la

Dettagli

Corso di Informatica di Base

Corso di Informatica di Base Corso di Informatica di Base A.A. 2011/2012 Algoritmi e diagrammi di flusso Luca Tornatore Cos è l informatica? Calcolatore: esecutore di ordini o automa Programma: insieme di istruzioni che possono essere

Dettagli

Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione

Linguaggio 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

Dettagli

Linguaggi di alto livello, compilatori e interpreti

Linguaggi di alto livello, compilatori e interpreti Linguaggi di alto livello, compilatori e interpreti Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Il punto della situazione STATO DATI

Dettagli

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software

Introduzione alla programmazione Algoritmi e diagrammi di flusso. Sviluppo del software Introduzione alla programmazione Algoritmi e diagrammi di flusso F. Corno, A. Lioy, M. Rebaudengo Sviluppo del software problema idea (soluzione) algoritmo (soluzione formale) programma (traduzione dell

Dettagli

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli

ELEMENTI 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

Dettagli

Capitolo 3 L elaborazione e la strutturazione dell informazione

Capitolo 3 L elaborazione e la strutturazione dell informazione Capitolo 3 L elaborazione e la strutturazione dell informazione Problemi e algoritmi Definire il problema Eliminare le ambiguità nella formulazione del problema Individuare il risultato che si vuole ottenere,

Dettagli

Lezione 8. Soluzione di un problema Problema. Soluzione di un problema. Comprensione del Problema. Analisi. Introduzione agli algoritmi

Lezione 8. Soluzione di un problema Problema. Soluzione di un problema. Comprensione del Problema. Analisi. Introduzione agli algoritmi Lezione 8 Introduzione agli algoritmi Lezione tratta dal libro: D. Sciuto, G. Buonanno, W. Fornaciari, L. Mari Introduzione ai sistemi informatici Seconda Edizione, McGraw-Hill Capitolo 2: La formalizzazione

Dettagli

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt);

Un esempio per iniziare. Il controllo del programma in C. Altri cenni su printf() Esercizi (printf) printf( 8!=%d, fatt); Un esempio per iniziare Il controllo del programma in C DD Cap.3 pp.91-130 /* calcolo di 8!*/ #include #define C 8 int main() int i=1; int fatt=1; while (i

Dettagli

Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN

Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN Breve Manuale di Riferimento sulla Sintassi Linguaggi e versione aggiornata al 05/02/2004 Sommario Elementi di Base... 2 Dati, Tipi e Dichiarazioni... 2 Tipi di Dato di Base... 2 Tipi di Dato Strutturati...

Dettagli

Strutture dati e loro organizzazione. Gabriella Trucco

Strutture dati e loro organizzazione. Gabriella Trucco Strutture dati e loro organizzazione Gabriella Trucco Introduzione I linguaggi di programmazione di alto livello consentono di far riferimento a posizioni nella memoria principale tramite nomi descrittivi

Dettagli

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

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole. Excel VBA VBA Visual Basic for Application VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole. 2 Prima di iniziare. Che cos è una variabile?

Dettagli

Le Strutture di controllo Del Linguaggio C. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Le Strutture di controllo Del Linguaggio C. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Le Strutture di controllo Del Linguaggio C Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni STRUTTURE DI CONTROLLO PRIMITIVE SEQUENZA SELEZIONE (o scelta logica) ITERAZIONE NON PRIMITIVE

Dettagli

Istruzioni iterative (o cicliche)

Istruzioni iterative (o cicliche) Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Istruzioni iterative (o cicliche) Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica (Canale di Ingegneria

Dettagli

Esercitazione 3. Espressioni booleane I comandi if-else e while

Esercitazione 3. Espressioni booleane I comandi if-else e while Esercitazione 3 Espressioni booleane I comandi if-else e while Esercizio Si consideri la seguente istruzione: if (C1) if (C2) S1; else S2; A quali delle seguenti interpretazioni corrisponde? if (C1) if

Dettagli

PROGRAMMAZIONE: Le strutture di controllo

PROGRAMMAZIONE: Le strutture di controllo PROGRAMMAZIONE: Le strutture di controllo Prof. Enrico Terrone A. S: 2008/09 Le tre modalità La modalità basilare di esecuzione di un programma è la sequenza: le istruzioni vengono eseguite una dopo l

Dettagli

Informatica Generale Andrea Corradini I linguaggi di programmazione

Informatica Generale Andrea Corradini I linguaggi di programmazione Informatica Generale Andrea Corradini 17 - I linguaggi di programmazione Sommario Cos'è un linguaggio di programmazione? Una prospettiva storica: linguaggi di prima, seconda e terza generazione I paradigmi

Dettagli

Errori frequenti Cicli iterativi Array. Cicli e array. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.

Errori 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

Dettagli

PROGRAMMAZIONE STRUTTURATA

PROGRAMMAZIONE STRUTTURATA PROGRAMMAZIONE STRUTTURATA Programmazione strutturata 2 La programmazione strutturata nasce come proposta per regolamentare e standardizzare le metodologie di programmazione (Dijkstra, 1965) Obiettivo:

Dettagli

print((math.floor(1345/10)%10); print (Math.floor(1345/100)%10); Le funzioni in JavaScript

print((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

Dettagli

Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia

Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L attività di progettare e realizzare un programma è detta programmazione

Dettagli

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico

Dettagli

Linguaggio C - sezione dichiarativa: costanti e variabili

Linguaggio C - sezione dichiarativa: costanti e variabili Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - sezione dichiarativa: costanti e variabili La presente

Dettagli

1 Esercizi in pseudocodice

1 Esercizi in pseudocodice Questa dispensa propone esercizi sulla scrittura di algoritmi in un linguaggio semiformale, utile all acquisizione delle abilità essenziali per implementare algoritmi in qualsiasi linguaggio di programmazione.

Dettagli

Formalismi per la descrizione di algoritmi

Formalismi per la descrizione di algoritmi Formalismi per la descrizione di algoritmi Per descrivere in passi di un algoritmo bisogna essere precisi e non ambigui Il linguaggio naturale degli esseri umani si presta a interpret non univoche Si usano

Dettagli

Linguaggio C. strutture di controllo: strutture iterative. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

Linguaggio C. strutture di controllo: strutture iterative. Università degli Studi di Brescia. Docente: Massimiliano Giacomin Linguaggio C strutture di controllo: strutture iterative Università degli Studi di Brescia Docente: Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 Strutture iterative

Dettagli

Analisi e Programmazione

Analisi e Programmazione Algoritmi 1 Analisi e Programmazione I Calcolatori Elettronici si differenziano da altri tipi di macchine per il fatto che possono essere predisposti alla risoluzione di problemi di diversa natura. A tale

Dettagli

Informatica. Informatica. Problema - soluzione. Algoritmi, dati e programmi. Introduzione ai concetti di: Distinguiamo tra: problema

Informatica. Informatica. Problema - soluzione. Algoritmi, dati e programmi. Introduzione ai concetti di: Distinguiamo tra: problema Algoritmi, dati e programmi 1 Algoritmi, dati e programmi 2 Informatica Informatica informatica informazione mezzi mezzi fisici procedure Algoritmi, dati e programmi rappresentazione dell informazione

Dettagli

Cosa si intende con stato

Cosa si intende con stato Il concetto di stato Cosa si intende con stato I una particolare configurazione delle informazioni di una macchina, che in qualche modo memorizza le condizioni in cui si trova, e che cambia nel tempo passando

Dettagli

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I Lezione 4 Elementi lessicali e espressioni logiche Matricole 2-3 Elementi lessicali il linguaggio C ha un suo vocabolario di base i cui elementi sono detti token esistono 6 tipi di token: parole chiave

Dettagli

JavaScript 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 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

Dettagli

Laboratorio di programmazione

Laboratorio di programmazione Laboratorio di programmazione Lezione II Tatiana Zolo zolo@cs.unipr.it 1 IL PROGRAMMA C++ Istruzioni (espressioni terminate da ; ) istruzioni di dichiarazione (es. int x = 0;); istruzioni di assegnamento

Dettagli

Informatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi

Informatica Generale Andrea Corradini Gli algoritmi e la risoluzione di problemi Informatica Generale Andrea Corradini 12 - Gli algoritmi e la risoluzione di problemi Sommario Che significa risolvere un problema? Algoritmi e programmi Rappresentazione di algoritmi Lo pseudocodice Primitive

Dettagli

Sviluppo di programmi

Sviluppo di programmi Sviluppo di programmi Per la costruzione di un programma conviene: 1. condurre un analisi del problema da risolvere 2. elaborare un algoritmo della soluzione rappresentato in un linguaggio adatto alla

Dettagli

Altrimenti, il M.C.D. di a e b è anche divisore di r (e.g. a=15,b=6,r=3 che è il M.C.D.)

Altrimenti, il M.C.D. di a e b è anche divisore di r (e.g. a=15,b=6,r=3 che è il M.C.D.) Elaboratore Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni sui dati digitale l informazione è rappresentata in forma numerica

Dettagli

Esercitazione 4. Comandi iterativi for, while, do-while

Esercitazione 4. Comandi iterativi for, while, do-while Esercitazione 4 Comandi iterativi for, while, do-while Comando for for (istr1; cond; istr2) istr3; Le istruzioni vengono eseguite nel seguente ordine: 1) esegui istr1 2) se cond è vera vai al passo 3 altrimenti

Dettagli

Il concetto di calcolatore e di algoritmo

Il concetto di calcolatore e di algoritmo Il concetto di calcolatore e di algoritmo Elementi di Informatica e Programmazione Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Informatica

Dettagli

Il linguaggio di programmazione Python

Il linguaggio di programmazione Python Università Roma Tre Dipartimento di Matematica e Fisica Percorso Abilitante Speciale Classe A048 Matematica Applicata Corso di Informatica Il linguaggio di programmazione Python Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Compitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A

Compitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A Matematica 13/11/2007 Teoria Compito A Domanda 1 Descrivere, eventualmente utilizzando uno schema, gli elementi funzionali di una CPU. Domanda 2 Java è un linguaggio compilato o interpretato? Motivare

Dettagli

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Algebra di Boole Stefano Cagnoni Algebra di Boole L algebra

Dettagli

Elementi di C++ di base

Elementi di C++ di base Elementi di C++ di base Corso di Programmazione 3 - Ingegneria dell Informazione e dell Organizzazione 10 ottobre, 2001 Gino Perna Esempi di semplici programmi in C++ Il programma più semplice consiste

Dettagli

Primi passi col linguaggio C

Primi passi col linguaggio C Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Come introdurre un linguaggio di programmazione? Obiettivi: Introduciamo una macchina astratta

Dettagli

Algoritmi e basi del C Struttura di un programma

Algoritmi e basi del C Struttura di un programma Algoritmi e basi del C Struttura di un programma Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 17 Marzo 2015 Compitini Compitini di INFO: 24 Aprile 2015 4.15pm @ C.G.1 (Ed. 9) 21

Dettagli

Algebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche

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

Dettagli

Prova di Laboratorio del [ Corso A-B di Programmazione (A.A. 2004/05) Esempio: Media Modalità di consegna:

Prova di Laboratorio del [ Corso A-B di Programmazione (A.A. 2004/05) Esempio: Media Modalità di consegna: Prova di Laboratorio del 12.1.2005 [durata 90 min.] Corso A-B di Programmazione (A.A. 2004/05) 1. Leggere da tastiera un insieme di numeri interi ed inserirli in un vettore A 2. Calcolare tramite una funzione

Dettagli

Linguaggio C. Tipi predefiniti e operatori. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

Linguaggio C. Tipi predefiniti e operatori. Università degli Studi di Brescia. Docente: Massimiliano Giacomin Linguaggio C Tipi predefiniti e operatori Università degli Studi di Brescia Docente: Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 RICHIAMI char 8 bit Valori interi

Dettagli

Le strutture di controllo in C++

Le strutture di controllo in C++ Le strutture di controllo in C++ Docente: Ing. Edoardo Fusella Dipartimento di Ingegneria Elettrica e Tecnologie dell Informazione Via Claudio 21, 4 piano laboratorio SECLAB Università degli Studi di Napoli

Dettagli

Istruzioni iterative. Istruzioni iterative

Istruzioni iterative. Istruzioni iterative Istruzioni iterative Esempio: Leggere 5 interi, calcolarne la somma e stamparli. Variante non accettabile: 5 variabili, 5 istruzioni di lettura, 5... int i1, i2, i3, i4, i5; scanf("%d", &i1):... scanf("%d",

Dettagli

LA METAFORA DELL UFFICIO

LA METAFORA DELL UFFICIO LA METAFORA DELL UFFICIO Lavagna di lavoro Lavagna di programma Sportello utenti Impiegato Capo Ufficio LAVAGNA DI LAVORO Chiamiamo variabili le posizioni sulla lavagna, identificate ognuna da un nome

Dettagli

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2

Dettagli

Rappresentazione con i diagrammi di flusso (Flow - chart)

Rappresentazione con i diagrammi di flusso (Flow - chart) Rappresentazione con i diagrammi di flusso (Flow - chart) Questo tipo di rappresentazione grafica degli algoritmi, sviluppato negli anni 50, utilizza una serie di simboli grafici dal contenuto evocativo

Dettagli

VBA Principali Comandi

VBA Principali Comandi VBA Principali Comandi Sintassi Significato Esempio Dim As Dichiarazione Dim x As Integer di una variabile Dim , , ,.,

Dettagli

Dati aggregati. Violetta Lonati

Dati aggregati. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica - in breve: Definizione di tipi Array Stringhe Strutture

Dettagli

Unità Didattica 2 Linguaggio C. Espressioni, Operatori e Strutture linguistiche per il controllo del flusso

Unità Didattica 2 Linguaggio C. Espressioni, Operatori e Strutture linguistiche per il controllo del flusso Unità Didattica 2 Linguaggio C Espressioni, Operatori e Strutture linguistiche per il controllo del flusso 1 Espressioni e assegnazioni Le espressioni sono definite dalla grammatica: espressione = variabile

Dettagli

Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Prima prova in itinere COGNOME E NOME. 13 novembre 2006 RIGA COLONNA MATRICOLA

Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Prima prova in itinere COGNOME E NOME. 13 novembre 2006 RIGA COLONNA MATRICOLA Politecnico di Milano Facoltà di Ingegneria Industriale INFORMATICA B Prima prova in itinere COGNOME E NOME 13 novembre 2006 RIGA COLONNA MATRICOLA Il presente plico pinzato, composto di sei fogli, deve

Dettagli

Tipi di dato. Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi:

Tipi di dato. Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi: Tipi di dato Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi: esprimere in modo sintetico la loro rappresentazione in memoria, e un insieme di operazioni ammissibili permettere

Dettagli

Corso di Matematica per la Chimica. Dott.ssa Maria Carmela De Bonis a.a

Corso di Matematica per la Chimica. Dott.ssa Maria Carmela De Bonis a.a Dott.ssa Maria Carmela De Bonis a.a. 2013-14 Programmi Un elaboratore riceve dei dati in ingresso, li elabora secondo una sequenza predefinita di operazioni e infine restituisce il risultato sotto forma

Dettagli

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari

7 - 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

Dettagli

Individuazione di sottoproblemi

Individuazione 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

Dettagli

Funzioni, Stack e Visibilità delle Variabili in C

Funzioni, 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

Dettagli

Dall algoritmo al programma

Dall algoritmo al programma Dall algoritmo al programma Il concetto di algoritmo Un algoritmo è una sequenza di passi necessari per risolvere un problema o eseguire una computazione In alcuni casi, lo stesso problema/computazione

Dettagli

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Introduzione alla programmazione

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Introduzione alla programmazione UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA Introduzione alla programmazione Riferimenti Emanuele Goldoni Laboratorio Reti (MN) Tel. 0376-286234 E-mail: emanuele.goldoni@unipv.it Slide sul sito

Dettagli

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro Laboratorio di Programmazione Lezione 2 Cristian Del Fabbro Prossima lezione GIOVEDÌ 29 OTTOBRE 14:00 Input da tastiera package input; import java.io.*; public class Input { public static void main(string[]

Dettagli

Espressione composta da: Operatori Operandi (costanti, variabili, )

Espressione composta da: Operatori Operandi (costanti, variabili, ) Cenni linguaggio C: Espressioni Espressione: formula (regola di calcolo) che specifica sempre un valore Esempio: espressione algebrica: z=x* y, (x+3)/5 Espressione composta da: Operatori Operandi (costanti,

Dettagli

UD 3.2b: Programmazione in Pascal (1)

UD 3.2b: Programmazione in Pascal (1) UD 3.2b: Programmazione in Pascal (1) Il Linguaggio di Programmazione Pascal Esistono molti linguaggi di programmazione. Per motivi didattici utilizzeremo una versione ridotta di un linguaggio di programmazione

Dettagli

Linguaggio C: le funzioni. Introduzione e sintassi

Linguaggio 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

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 07/02/07 Nota Questi lucidi sono tratti

Dettagli

Sommario PREFAZIONE...XI CAPITOLO 1: INTRODUZIONE AI COMPUTER, A INTERNET E AL WEB... 1 CAPITOLO 2: INTRODUZIONE ALLA PROGRAMMAZIONE IN C...

Sommario PREFAZIONE...XI CAPITOLO 1: INTRODUZIONE AI COMPUTER, A INTERNET E AL WEB... 1 CAPITOLO 2: INTRODUZIONE ALLA PROGRAMMAZIONE IN C... Sommario PREFAZIONE...XI Aggiornamenti e novità... xi Lo scopo di questo libro... xii Diagramma delle dipendenze... xii La metodologia di insegnamento... xiii Panoramica sul libro... xvi Ringraziamenti...

Dettagli

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Termine algoritmo da:

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Termine algoritmo da: Algoritmi Algoritmi Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati Termine algoritmo da: http://it.wikipedia.org/wiki/al-khwarizmi Un

Dettagli

Problema: calcolare il massimo tra K numeri

Problema: 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

Dettagli

Tipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C

Tipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C Tipi di dati strutturati e Linguaggio C Record o strutture Il costruttore struct in C Dati strutturati Record Un record o struttura è una struttura dati ottenuta aggregando elementi di tipo diverso che

Dettagli

PASCAL standard. Il linguaggio PASCAL nasce come evoluzione del linguaggio ALGOL60 (ALGOrithmic Language) nel 1968 ad opera di N. Wirth.

PASCAL standard. Il linguaggio PASCAL nasce come evoluzione del linguaggio ALGOL60 (ALGOrithmic Language) nel 1968 ad opera di N. Wirth. PASCAL standard Il linguaggio PASCAL nasce come evoluzione del linguaggio ALGOL60 (ALGOrithmic Language) nel 1968 ad opera di N. Wirth. Nb: primi linguaggi furono: Fortran, Algol, Ada, Cobol (cfr testo)

Dettagli

Capitolo 3 Elaborazione e Strutturazione dell Informazione. (Introduzione ai Sistemi Informatici Sciuto et alii)

Capitolo 3 Elaborazione e Strutturazione dell Informazione. (Introduzione ai Sistemi Informatici Sciuto et alii) Capitolo 3 Elaborazione e Strutturazione dell Informazione (Introduzione ai Sistemi Informatici Sciuto et alii) Il calcolatore come strumento per gestire informazione acquisire dati IN elaborare archiviare

Dettagli

Dal Problema all Algoritmo. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Dal Problema all Algoritmo. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Dal Problema all Algoritmo Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Cosa Impareremo Informazioni e codici Definizione e soluzione di un problema Individuazione dei dati Definizione

Dettagli

Lezione 5. La macchina universale

Lezione 5. La macchina universale Lezione 5 Algoritmi Diagrammi di flusso La macchina universale Un elaboratore o computer è una macchina digitale, elettronica, automatica capace di effettuare trasformazioni o elaborazioni su i dati digitale=

Dettagli

Esercitazione 6. Array

Esercitazione 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

Dettagli

Introduzione alla programmazione Esercizi risolti

Introduzione alla programmazione Esercizi risolti Esercizi risolti 1 Esercizio Si determini se il diagramma di flusso rappresentato in Figura 1 è strutturato. A B C D F E Figura 1: Diagramma di flusso strutturato? Soluzione Per determinare se il diagramma

Dettagli

Strutturare il codice: sottoprogrammi

Strutturare il codice: sottoprogrammi Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Motivazioni Alcuni problemi si presentano frequentemente durante lo sviluppo di un programma

Dettagli

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Matlab: esempi ed esercizi

UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA. Matlab: esempi ed esercizi UNIVERSITÀ DEGLI STUDI DI PAVIA FACOLTÀ DI INGEGNERIA Matlab: esempi ed esercizi Sommario e obiettivi Sommario Esempi di implementazioni Matlab di semplici algoritmi Analisi di codici Matlab Obiettivi

Dettagli

Programmazione. Valerio Perticone, Sergio Perticone

Programmazione. Valerio Perticone, Sergio Perticone Programmazione Valerio Perticone, Sergio Perticone Programmazione La programmazione è un processo che parte dall'analisi di un problema computazionale ed arriva, mediante un'opportuna codifica formale,

Dettagli

Costrutti condizionali e iterativi

Costrutti condizionali e iterativi Costrutti condizionali e iterativi Introduction to Fortran 90 Paolo Ramieri, CINECA Aprile 2014 Strutture di controllo Le strutture di controllo permettono di alterare la sequenza di esecuzione delle istruzioni

Dettagli

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica - D. Talia - UNICAL 1 Lettura di dati da input In Java la lettura di dati da input

Dettagli

unità didattica 3 Le strutture condizionali e le strutture iterative

unità didattica 3 Le strutture condizionali e le strutture iterative unità didattica 3 Le strutture condizionali e le strutture iterative 1. La struttura condizionale Il Pascal prevede la codifica della struttura condizionale (indicata anche con il nome di struttura dell

Dettagli

Linguaggi di Programmazione

Linguaggi di Programmazione Linguaggi di Programmazione 1 Linguaggio naturale e linguaggio macchina La comunicazione uomo-macchina avviene attraverso formalismi che assumono la forma di un linguaggio. Caratteristiche del Linguaggio

Dettagli

Concetti base programmazione. Antonio Gallo

Concetti base programmazione. Antonio Gallo Concetti base programmazione Antonio Gallo info@laboratoriolibero.com Programma Insieme di istruzioni: Strtturato Ad oggetti Strutturato Ha una struttura più lineare Basato sui concetti di sequenza, selezione,

Dettagli

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2009/2010

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2009/2010 Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2

Dettagli

Il linguaggio C. Notate che...

Il linguaggio C. Notate che... Il linguaggio C Notate che... 1 Il C è un linguaggio a blocchi int main (void) { blocco } 2 Il C è un linguaggio a blocchi (2) Non è possibile mischiare dichiarazioni e comandi! int main (void) { } Dichiarazione

Dettagli

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011 Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario Istruzioni di controllo Iterative Condizionali Algoritmi e Diagrammi di flusso Esercizi 28/03/2011 2 Istruzioni iterative while do

Dettagli

Introduzione alla programmazione. Walter Didimo

Introduzione alla programmazione. Walter Didimo Introduzione alla programmazione Walter Didimo Programmi Un programma è una frase (anche molto lunga) che descrive delle azioni che devono essere svolte da un calcolatore La frase deve essere dettagliata

Dettagli

Tipi di dato primitivi

Tipi di dato primitivi Tipi di dato primitivi (oltre int) Tipi di dato primitivi int (già trattati) Valori logici (ricordati) Valori reali Valori carattere Informatica - A.A. 2009/2010 - Tipi di dato 2 1 Valori logici (il caso

Dettagli

LINGUAGGI DI PROGRAMMAZIONE E CODIFICA PROGRAMMI

LINGUAGGI DI PROGRAMMAZIONE E CODIFICA PROGRAMMI LINGUAGGI DI PROGRAMMAZIONE E CODIFICA PROGRAMMI Giacomo Piscitelli pag. 1/10 Dall Algoritmo al Programma Metodo risolutivo problema algoritmo Linguaggio programma Individuazione di un metodo risolutivo

Dettagli

1) definizione di una rappresentazione 2) specificazione di un algoritmo (dipendente dalla rappresentazione) 3) traduzione in un linguaggio

1) 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++:

Dettagli