RISOLVERE I TEMI D ESAME

Размер: px
Начинать показ со страницы:

Download "RISOLVERE I TEMI D ESAME"

Транскрипт

1 RISOLVERE I TEMI D ESAME Elementi di Informatica e Programmazione Università di Brescia 1

2 Petter Northug Dario Cologna Federico Pellegrino

3 SPIEGAZIONE LUCIDO PRECEDENTE Purtroppo o per fortuna, non esistono regolette da applicare Come in molti sport: - bisogna imparare una tecnica che ha una sua teoria ma - bisogna fare esercizio ma - bisogna abituarsi ad applicare gli accorgimenti tecnici già quando si affrontano esercizi semplici: solo così la tecnica verrà poi applicata spontaneamente negli esercizi più complicati Studiare solo sulla carta non porta lontano Anche bruciare le tappe non porta lontano: bisogna sforzarsi di applicare la tecnica fin da subito Elementi di Informatica e Programmazione Università di Brescia 3

4 SVILUPPO DI UN PROGRAMMA C Capire il problema (eventualmente: provare a risolvere qualche istanza!) Pensare a come risolverlo (come faremmo noi?) Arrivare ad un algoritmo per passi successivi, partendo da una descrizione più astratta e poi scomponendola in passi sempre più elementari [NB: è possibile tornare indietro e modificare lo schema di partenza] fino ad arrivare al linguaggio C ERRORE TIPICO: buttarsi a scrivere il codice di getto Elementi di Informatica e Programmazione Università di Brescia 4

5 PASSI 1 e 2 È molto utile risolvere delle istanze a mano - favorisce la comprensione corretta del problema - tipicamente suggerisce un idea informale di un algoritmo NB: se non sapete risolvere voi il problema, è improbabile che ci riesca il vostro programma! È quasi sempre inutile ripescare formule o metodi astrusi dalla vostra memoria Elementi di Informatica e Programmazione Università di Brescia 5

6 PASSI 3 e 4 (metodo dei raffinamenti successivi Scomporre il problema in sottoproblemi da affrontare dopo - usare dove serve lo pseudocodice - nel farlo, affrontare subito il caso generale : i casi specifici verranno affrontati in un momento successivo! [ERRORE TIPICO: programma che inizia con una sequela di if] - eventualmente tornare indietro se viene in mente una soluzione più semplice/elegante o più ordinata Per ogni sottoproblema individuato, continuare la scomposizione indipendentemente l uno dall altro Il processo termina quando tutto è espresso in linguaggio C Elementi di Informatica e Programmazione Università di Brescia 6

7 LE COSE PIU DIFFICILI DA IMPARARE (1) Applicare il metodo dei raffinamenti successivi al giusto livello di astrazione : l astrazione deve semplificare il processo risolutivo permettendo di concentrarci sul nocciolo del problema. ESEMPIO Acquisisci dati Elabora dati Stampa risultati Imparare a tornare indietro fin dalle prime fasi del processo di scomposizione per raffinamenti successivi: Si adatta praticamente a tutti gli esercizi, ma non serve a molto - soluzioni più eleganti semplificano le fasi successive e minimizzano gli errori nella stesura del codice! - è più semplice e veloce tornare indietro all inizio Elementi di Informatica e Programmazione Università di Brescia 7

8 LE COSE PIU DIFFICILI DA IMPARARE (2) nella stesura di un ciclo, occorre: - identificare le variabili chiave necessarie - attribuire il significato preciso che devono assumere all inizio di ogni iterazione; specificare la condizione di permanenza di conseguenza! Elementi di Informatica e Programmazione Università di Brescia 8

9 AVVISI Vedremo una serie di esercizi tratti dai temi d esame: in un singolo esercizio, i diversi passi possono avere un ruolo più o meno accentuato [per alcuni è più complesso il processo di raffinamento successivo, per altri si arriva direttamente al codice ma la chiave è dare un significato preciso alle variabili, ecc. ecc.] In aula, vedremo pochi esercizi significativi: tanti esercizi sarebbero controproducenti, perché quello che è importante è - esaminare approfonditamente pochi esercizi significativi, per imparare in teoria la tecnica - provare a rifarli da soli (NB: non esiste una sola soluzione!) per imparare in pratica la tecnica - provare poi da soli (con l aiuto del compilatore) a farne altri, per far diventare la tecnica spontanea

10 QUINDI: Faremo in aula esercizi tratti dai temi d esame e verranno poi proposti esercizi d esame individuali senza soluzione perché: - è possibile risolverli studiando bene gli esempi già visti: se non avete idea di come risolverli, significa che non avete capito bene la tecnica in teoria e non bisogna guardare la soluzione, ma riesaminare gli esempi fatti in aula e rifletterci su - per imparare la tecnica in pratica dovete arrivare in fondo da soli, senza guardare la soluzione (altrimenti non imparate) - è assolutamente indispensabile commettere errori ma abituarsi a scoprirli e correggerli da soli (usando il compilatore!) per poi non commetterli più: guardando la soluzione uno non sbaglia e se non si sbaglia non si impara Elementi di Informatica e Programmazione Università di Brescia 10

11 ESERCIZIO 1 Scrivere un programma che calcoli il fattoriale di un numero intero maggiore o uguale a 0 fornito dall utente. Elementi di Informatica e Programmazione Università di Brescia 11

12 Primo passo: capire il testo e soprattutto il problema (se non si sa da che parte prendere, provare a risolvere qualche istanza a mano) 5! = 5*4*3*2 3! = 3*2 1! = 1 0! = 1 In generale, N! è pari a: 1 se N = 0 o N = 1 2* *N se N > 1 Elementi di Informatica e Programmazione Università di Brescia 12

13 Secondo passo: individuare un metodo risolutivo CONSIGLIO: pensare prima al caso generale, poi considerare i casi particolari! N! = 2*3*4*5* *N Variabile fatt per mantenere il risultato corrente Variabile i che varia da 2 a N Usare una variabile fatt, posta inizialmente a 1. Successivamente moltiplicarla per 2,,N: fatt=1 fatt=fatt*2 fatt=fatt*n Si userà un ciclo per ripetere la moltiplicazione per i=2, N Elementi di Informatica e Programmazione Università di Brescia 13

14 Terzo passo: sviluppare l algoritmo In questo caso, probabilmente uno arriva quasi al codice, anche se una prima scomposizione potrebbe essere ACQUISISCI NUMERO n CALCOLA fattoriale(n) STAMPA fattoriale calcolato Come visto, abbiamo dei casi particolari (n=0 e n=1) e il caso generale CONSIGLIO: pensare prima al caso generale, poi considerare i casi particolari! Elementi di Informatica e Programmazione Università di Brescia 14

15 printf( Inserire il numero N:\n ); scanf( %d,&n); fatt=1; for(i=2; i<=n; i=i+1) fatt=fatt*i; // i: numero per cui devo moltiplicare printf( Fattoriale di %d = %d\n,n,fatt); NB: ci si accorge che i casi particolari sono già risolti!!! per n = 0 o 1, fatt risulta correttamente 1 (il ciclo for non viene mai eseguito) Elementi di Informatica e Programmazione Università di Brescia 15

16 Ovviamente, il programma completo sarà il seguente #include<stdio.h> #include<stdlib.h> int main(int argc, char*argv[]){ int n, fatt, i; printf( Inserire il numero N:\n ); scanf( %d,&n); fatt=1; for(i=2; i<=n; i=i+1) fatt=fatt*i; printf( Fattoriale di %d = %d\n,n,fatt); return 0; } Elementi di Informatica e Programmazione Università di Brescia 16

17 ESERCIZIO 2 Scrivere un programma che, ricevuto in ingresso un intero strettamente maggiore di 0, determini se tale numero è primo. Elementi di Informatica e Programmazione Università di Brescia 17

18 ESERCIZIO 2 Scrivere un programma che, ricevuto in ingresso un intero strettamente maggiore di 0, determini se tale numero è primo. Primo passo: provare a risolvere a mano qualche istanza del problema Es. 8 non è primo (è divisibile per 2 e per 4) 7 è primo (è divisibile solo per 1 e per 7, non per 2, 3, 4, 6) Secondo passo: individuare un metodo risolutivo Dato N, verifico se è divisibile per 2, 3, n-1 se non è divisibile per nessuno: il numero è primo se esiste un divisore: il numero non è primo E facile rendersi conto che basta un ciclo con un indice i che va da 2 a n/2 (divisione intera) Elementi di Informatica e Programmazione Università di Brescia 18

19 Terzo e quarto passo: sviluppare un algoritmo int n, i, primo; printf( Inserisci un numero positivo\n ); scanf("%d",&n); primo=1; //indica se tutti i numeri interni non dividono n for(i=2; i<=n/2; i=i+1) //prova con tutti i numeri da 2 a n/2 if(n%i == 0) primo=0; if(primo==1) printf( Il numero è primo\n ); else printf( Il numero non è primo\n ); Elementi di Informatica e Programmazione Università di Brescia 19

20 ESERCIZIO 3 Scrivere un programma che acquisisce da tastiera un numero intero n maggiore o uguale a 0 (ripetendo l acquisizione in caso di numero negativo) ed un intero x, quindi calcola e stampa la sommatoria n i= 0 i x Elementi di Informatica e Programmazione Università di Brescia 20

21 Primo passo: Risolvere qualche istanza Es. con n=4 e x=2 = = Es. con n=0 e x=2 = 2 0 = 1 Secondo passo: metodo risolutivo sommatoria=0; ciclo con i che varia da 0 a n sommatoria = sommatoria+x i Elementi di Informatica e Programmazione Università di Brescia 21

22 Terzo e quarto passo: Sviluppare un algoritmo A) ACQUISIZIONE DI n, x; sommatoria=0; for(i=0;i<=n; i=i+1) sommatoria = sommatoria+x i ; STAMPA sommatoria Elementi di Informatica e Programmazione Università di Brescia 22

23 B) int n, x, sommatoria, i, potenza; do scanf( %d, &n); while(n<0); scanf( %d, &x); sommatoria=0; for(i=0;i<=n; i=i+1){ x*x* x i volte } CALCOLA: potenza x i sommatoria = sommatoria+potenza; printf( La sommatoria risulta %d, sommatoria); Elementi di Informatica e Programmazione Università di Brescia 23

24 C) int n, x, sommatoria, i, j, potenza; do scanf( %d, &n); while(n<0); scanf( %d, &x); sommatoria=0; for(i=0;i<=n; i=i+1){ } potenza=1; for(j=1; j<=i; j=j+1) potenza=potenza*x; sommatoria = sommatoria+potenza; printf( La sommatoria risulta %d, sommatoria); Elementi di Informatica e Programmazione Università di Brescia 24

25 Terzo e quarto passo alternativo: Sviluppare un algoritmo B) int n, x, sommatoria, i, potenza; do scanf( %d, &n); while(n<0); scanf( %d, &x); sommatoria=0; Ad ogni iterazione: potenza=potenza*x; for(i=0;i<=n; i=i+1){ sommatoria = sommatoria+x i ; } printf( La sommatoria risulta %d, sommatoria); Elementi di Informatica e Programmazione Università di Brescia 25

26 C) int n, x, sommatoria, i, j, potenza; do scanf( %d, &n); while(n<0); scanf( %d, &x); sommatoria=0; potenza=1; // all inizio di ogni iterazione contiene x i for(i=0;i<=n; i=i+1){ sommatoria = sommatoria+potenza; } potenza=potenza*x; printf( La sommatoria risulta %d, sommatoria); Elementi di Informatica e Programmazione Università di Brescia 26

27 ESERCIZIO 4: dal tema d esame ING-INF del 13 gennaio 2009 Si sviluppi un programma in linguaggio C che, ricevendo in ingresso una sequenza di lunghezza arbitraria di almeno due numeri interi diversi da zero, terminata da uno zero, produca in uscita i due valori minimi letti in ingresso (escluso l ultimo zero). Ad esempio, ricevendo in ingresso la sequenza produce in uscita 2 3 Altro esempio: ricevendo in ingresso la sequenza produce in uscita 2 2 [10] Elementi di Informatica e Programmazione Università di Brescia 27

28 Primo passo: provare a risolvere a mano qualche istanza del problema All inizio (7, 2) sono i valori minimi - Considero 19: i minimi rimangono (7, 2) - Considero 4: i minimi diventano (4, 2) - Considero 45: i minimi rimangono (4, 2) - Considero 3: i minimi diventano (3, 2) Già si intravede un metodo risolutivo (passo2): usare un ciclo per acquisire i numeri (termina con 0) mantenere due variabili min1 e min2 con i minimi ad ogni iterazione, acquisire un nuovo numero e aggiornare di conseguenza min1 e min2 Elementi di Informatica e Programmazione Università di Brescia 28

29 Nota: come faccio ad aggiornare min1 e min2? min1 min2 num E più facile se mantengo min1 e min2 ordinati (min1<=min2) Elementi di Informatica e Programmazione Università di Brescia 29

30 Terzo passo: sviluppare l algoritmo Acquisisci i primi due numeri e inizializza min1, min2 con i due numeri stessi in modo che valga min1<=min2 scanf( %d, &n); while(n!=0){ //min1 e min2: minimi correnti ordinati aggiorna min1 e min2 tenendo conto di n; scanf( %d, &n); } Elementi di Informatica e Programmazione Università di Brescia 30

31 Terzo passo: sviluppare l algoritmo int num, min1, min2; printf( Inserisci la sequenza di numeri\n ); scanf( %d, &num); min1=num; scanf( %d, &num); if(min1<=num) min2=num; else{ min2=min1; min1=num; } Elementi di Informatica e Programmazione Università di Brescia 31

32 scanf( %d, &num); while(num!=0){ if(num<min1){ min2=min1; min1=num; } else if(num<min2) min2=num; } scanf( %d, &num); printf( I numeri minimi sono %d e %d\n, min1, min2); Elementi di Informatica e Programmazione Università di Brescia 32

33 ESERCIZIO 5 Scrivere un programma che, ricevuto in ingresso un intero N 0, calcoli l N-simo elemento della sequenza F dei numeri di Fibonacci, definita così: F(0) = 0 F(1) = 1 F(K) = F(K-1)+F(K-2) per K 2 In altre parole, la sequenza dei numeri di Fibonacci è la seguente: 0, 1, 1, 2, 3, 5, 8, 13, in cui ciascun numero, dal terzo in poi, è la somma dei due che lo precedono. Elementi di Informatica e Programmazione Università di Brescia 33

34 Primo passo: provare a risolvere a mano qualche istanza del problema N=2: 0, 1, 1 il programma restituisce 1 N=3: 0, 1, 1, 2 il programma restituisce 2 Secondo passo: individuare un metodo risolutivo N=0, N=1: casi base (il programma deve restituire 0 o 1) N 2: uso un contatore I che arriva fino a N: ad ogni passo devo calcolare il nuovo numero di Fibonacci F(I): devo sommare gli ultimi due numeri di Fibonacci ottenuti quindi, memorizzo in due variabili Fpenultimo e Fultimo gli ultimi due numeri di Fibonacci ottenuti e, ad ogni passo: - Fpenultimo deve diventare Fultimo - Fultimo deve diventare Fpenultimo+Fultimo Elementi di Informatica e Programmazione Università di Brescia 34

35 Terzo passo: sviluppare l algoritmo NB: per cominciare trascuriamo i casi base (quelli sono semplici e ci pensiamo dopo): risolviamo il cuore del problema Errore comune: cominciare a scrivere il codice senza avere in testa l algoritmo o, cosa ancora peggiore, un idea del metodo risolutivo TIPICAMENTE, QUESTO PORTA A SCRIVERE UN PO DI IF PER GESTIRE I PRIMI CASI SPECIFICI (se N==0, se N==1, se N==2, ) TIPICAMENTE, QUESTO INDUCE A RITENERE CHE SI E COMINCIATO A SCRIVERE IL CODICE SENZA PRIMA PENSARE ALL ALGORITMO Elementi di Informatica e Programmazione Università di Brescia 35

36 Terzo passo: sviluppare l algoritmo NB: per cominciare trascuriamo i casi base (quelli sono semplici e ci pensiamo dopo): risolviamo il cuore del problema Fpenultimo = 0; Fultimo = 1; // comincio con i primi due numeri della serie i = 1; // i riferito all ultimo numero di Fibonacci Fultimo while(i<n){ // esco quando i==n, quando Fultimo contiene F(i)=F(N) Elementi di Informatica e Programmazione Università di Brescia 36

37 Terzo passo: sviluppare l algoritmo NB: per cominciare trascuriamo i casi base (quelli sono semplici e ci pensiamo dopo): risolviamo il cuore del problema Fpenultimo = 0; Fultimo = 1; // comincio con i primi due numeri della serie i = 1; // i riferito all ultimo numero di Fibonacci Fultimo while(i<n){ // esco quando i==n, quando Fultimo contiene F(i)=F(N) Aggiorna Fultimo Aggiorna Fpenultimo i=i+1; } Elementi di Informatica e Programmazione Università di Brescia 37

38 Terzo passo: sviluppare l algoritmo NB: per cominciare trascuriamo i casi base (quelli sono semplici e ci pensiamo dopo): risolviamo il cuore del problema Fpenultimo = 0; Fultimo = 1; // comincio con i primi due numeri della serie i = 1; // i riferito all ultimo numero di Fibonacci Fultimo while(i<n){ // esco quando i==n, quando Fultimo contiene F(i)=F(N) Aggiorna Fultimo Aggiorna Fpenultimo Fultimo = Fpenultimo + Fultimo; Fpenultimo =? Fultimo? i=i+1; } Elementi di Informatica e Programmazione Università di Brescia 38

39 Terzo passo: sviluppare l algoritmo NB: per cominciare trascuriamo i casi base (quelli sono semplici e ci pensiamo dopo): risolviamo il cuore del problema Fpenultimo = 0; Fultimo = 1; // comincio con i primi due numeri della serie i = 1; // i riferito all ultimo numero di Fibonacci Fultimo while(i<n){ // esco quando i==n, quando Fultimo contiene F(i)=F(N) NEWFIB= Fpenultimo+Fultimo; // nuovo ultimo numero di Fibonacci Fpenultimo=Fultimo; // aggiorno Fpenultimo Fultimo=NEWFIB; // aggiorno Fultimo i=i+1; // aggiorno i, che si riferisce di nuovo a Fultimo } Elementi di Informatica e Programmazione Università di Brescia 39

40 Terzo passo: sviluppare l algoritmo NB: per cominciare trascuriamo i casi base (quelli sono semplici e ci pensiamo dopo): risolviamo il cuore del problema Fpenultimo = 0; Fultimo = 1; // comincio con i primi due numeri della serie i = 1; // i riferito all ultimo numero di Fibonacci Fultimo while(i<n){ } // esco quando i==n, quando Fultimo contiene F(i)=F(N) NEWFIB= Fpenultimo+Fultimo; // nuovo ultimo numero di Fibonacci Fpenultimo=Fultimo; // aggiorno Fpenultimo Fultimo=NEWFIB; // aggiorno Fultimo i=i+1; // aggiorno i, che si riferisce di nuovo a Fultimo Ora posso considerare i casi base: - il caso N=0 non è gestito (il programma porta Fultimo a 1) - il caso N=1 è gestito (il ciclo while non viene eseguito!) Elementi di Informatica e Programmazione Università di Brescia 40

41 int n, i, fultimo, fpenultimo, newfib; printf("inserire il numero N:\n"); do scanf("%d",&n); while(n<0); fpenultimo=0; fultimo=1; i=1; while(i<n){ newfib=fpenultimo+fultimo; fpenultimo=fultimo; fultimo=newfib; i=i+1; } if(n==0) //gestione del caso base fultimo=0; printf("numero di Fibonacci %d = %d\n",n,fultimo); Elementi di Informatica e Programmazione Università di Brescia 41

RISOLVERE I TEMI D ESAME

RISOLVERE I TEMI D ESAME RISOLVERE I TEMI D ESAME UN PARAGONE Elementi di Informatica e Programmazione Università di Brescia 1 SVILUPPO DI UN TEMA Leggere bene la traccia (evitare di andare fuori tema ) Pensare a cosa si sa e

Подробнее

ESERCIZI DI PROGRAMMAZIONE. - condizionali e cicli -

ESERCIZI DI PROGRAMMAZIONE. - condizionali e cicli - ESERCIZI DI PROGRAMMAZIONE - condizionali e cicli - Elementi di Informatica e Programmazione Università di Brescia 1 Esercizio 1: dal tema d esame ING-INF del 28 gennaio 2009 Si sviluppi un programma in

Подробнее

ESERCIZI DI PROGRAMMAZIONE DA SVOLGERE INDIVIDUALMENTE - parte 1 -

ESERCIZI DI PROGRAMMAZIONE DA SVOLGERE INDIVIDUALMENTE - parte 1 - ESERCIZI DI PROGRAMMAZIONE DA SVOLGERE INDIVIDUALMENTE - parte 1 - Elementi di Informatica e Programmazione Università di Brescia 1 1: ESERCIZI DI BASE - di livello di difficoltà inferiore rispetto all

Подробнее

PROGRAMMAZIONE: ESERCITAZIONE N. 6

PROGRAMMAZIONE: ESERCITAZIONE N. 6 PROGRAMMAZIONE: ESERCITAZIONE N. 6 Esercizi su stru+ure condizionali e itera1ve Conoscenze richieste: LC1+LC2+LC3+LC4+LC5+LC6 Esercizio 1 Acquisire un numero positivo N e calcolarne la radice quadrata

Подробнее

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

Подробнее

ESERCIZI DI PROGRAMMAZIONE DA TEMI D ESAME - vettori -

ESERCIZI DI PROGRAMMAZIONE DA TEMI D ESAME - vettori - ESERCIZI DI PROGRAMMAZIONE DA TEMI D ESAME - vettori - Elementi di Informatica e Programmazione Università di Brescia 1 Esercizio 1 Sviluppare un programma che acquisisce dall utente al massimo 50 numeri

Подробнее

3 Costrutti while, for e switch

3 Costrutti while, for e switch Questa dispensa propone esercizi sulla scrittura di algoritmi, in linguaggio C, utili alla comprensione dei costrutti while, for e switch. I costrutti per costruire cicli in C sono il while, la variante

Подробнее

# include<stdio.h> int main() { // Dichiarazioni int n; int i;

# include<stdio.h> int main() { // Dichiarazioni int n; int i; /* CALCOLIAMO I DIVISORI DI UN NUMERO. INSERIAMO UN CONTROLLO CHE IL NUMERO SIA EFFETTIVAMENTE POSITIVO UTILIZZIAMO IL DO...WHILE PER SEMPLIFICARE IL CODICE # include int main() // Dichiarazioni

Подробнее

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

Подробнее

ESERCIZI DI PROGRAMMAZIONE DA SVOLGERE INDIVIDUALMENTE - parte 2 -

ESERCIZI DI PROGRAMMAZIONE DA SVOLGERE INDIVIDUALMENTE - parte 2 - ESERCIZI DI PROGRAMMAZIONE DA SVOLGERE INDIVIDUALMENTE - parte 2 - Elementi di Informatica e Programmazione Università di Brescia 1 1: ESERCIZI DI BASE - di livello di difficoltà inferiore rispetto all

Подробнее

A lezione sono stati presentati i seguenti passi per risolvere un problema:

A lezione sono stati presentati i seguenti passi per risolvere un problema: Calcolo delle radici di un polinomio Problema: Dati i coefficienti a,b,c di un polinomio di 2 grado della forma: ax^2 + bx + c = 0, calcolare le radici. A lezione sono stati presentati i seguenti passi

Подробнее

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:

Подробнее

Strutture di iterazione

Strutture di iterazione Strutture di iterazione 1. Leggi i programmi qui sotto e disegna le tabelle di traccia nelle situazioni seguenti: a. Nel primo e nel secondo programma viene inserito da tastiera il valore 2; b. Nel primo

Подробнее

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013 Programmazione a Oggetti e JAVA Prof. B.Buttarazzi A.A. 2012/2013 Sommario La ricorsione Metodi ricorsivi Esercizi proposti 16/01/2013 2 La ricorsione In Java ogni metodo può chiamare anche se stesso,

Подробнее

Elementi di Informatica e Programmazione

Elementi di Informatica e Programmazione Università degli Studi di Brescia Elementi di Informatica e Programmazione ESERCITAZIONE Docente: A. Saetti Esercitatori: M. Sechi, A. Bonisoli Vers. 04/10/2017 Docente: Alessandro Saetti Elementi di informatica

Подробнее

INFORMATICA. Strutture iterative

INFORMATICA. Strutture iterative INFORMATICA Strutture iterative Strutture iterative Si dice ciclo (loop) una sequenza di istruzioni che deve essere ripetuta più volte consecutivamente. Si consideri ad esempio il calcolo del fattoriale

Подробнее

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

Подробнее

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

Подробнее

ERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} }

ERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} } ERRATA CORRIGE Pulizia del buffer di input: come fare? (1) Dopo aver richiamato getchar() per prelevare un carattere dal buffer di input, inseriamo una seconda chiamata a getchar(), senza assegnare il

Подробнее

Rappresentazione degli algoritmi

Rappresentazione degli algoritmi Rappresentazione degli algoritmi Universitá di Ferrara Ultima Modifica: 21 ottobre 2014 1 1 Diagramma di flusso Utilizzare il diagramma di flusso per rappresentare gli algoritmi che risolvono i seguenti

Подробнее

Cicli annidati ed Array multidimensionali

Cicli annidati ed Array multidimensionali Linguaggio C Cicli annidati ed Array multidimensionali Cicli Annidati In C abbiamo 3 tipi di cicli: while(exp) { do { while(exp); for(exp;exp;exp3) { Cicli annidati: un ciclo all interno del corpo di un

Подробнее

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

Подробнее

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

Подробнее

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

Подробнее

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

Подробнее

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

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica Dipartimento di Elettronica, Informazione e Bioingegneria Informatica B Sezione D Franchi Alessio Mauro,

Подробнее

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

Подробнее

Fondamenti di Informatica 6. Algoritmi e pseudocodifica

Fondamenti di Informatica 6. Algoritmi e pseudocodifica Vettori e matrici #1 Fondamenti di Informatica 6. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile A.A. 2010-2011 1 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie

Подробнее

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa E03 Esempi di algoritmi e programmi A. Miola Settembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Esempi di algoritmi e

Подробнее

Esercizi di programmazione in linguaggio C - Costrutto iterazione

Esercizi di programmazione in linguaggio C - Costrutto iterazione Esercizi di programmazione in linguaggio C - Costrutto iterazione prof. Roberto uligni 1. [potenze1] Scrivere un programma che visualizzi il valore di tutte le prime n potenze di 2 con n richiesto all'utente

Подробнее

Problemi, algoritmi e oggetti

Problemi, algoritmi e oggetti Fondamenti di informatica Oggetti e Java Luca Cabibbo Capitolo 5 Marzo 2007 1 Fondamenti di informatica: Oggetti e Jav Contenuti... Problemi e algoritmi comprensione del problema identificazione di un

Подробнее

Fondamenti di Informatica T-1 Modulo 2

Fondamenti di Informatica T-1 Modulo 2 Fondamenti di Informatica T-1 Modulo 2 Obiettivi di questa lezione 1. Valutazione in cortocircuito 2. If e if innestati 3. Switch 4. Cicli Valutazione in cortocircuito In C, le espressioni booleane sono

Подробнее

CORSO DI PROGRAMMAZIONE

CORSO DI PROGRAMMAZIONE ISTITUTO TECNICO INDUSTRIALE G. M. ANGIOY SASSARI CORSO DI PROGRAMMAZIONE INTRODUZIONE ALLE ISTRUZIONI ITERATIVE DISPENSA 03.01 03-01_Iterazioni_[ver_15] Questa dispensa è rilasciata sotto la licenza Creative

Подробнее

Esercitazioni di Informatica B A.A. 2010/2011 Pseudocodice. Nicola Vitucci

Esercitazioni di Informatica B A.A. 2010/2011 Pseudocodice. Nicola Vitucci Esercitazioni di Informatica B A.A. 2010/2011 Pseudocodice Cos'è lo pseudocodice? Abbiamo visto che prima di scrivere del codice è importante innanzitutto avere le idee chiare sul problema da affrontare

Подробнее

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: [email protected] sito: users.iol.it/genna18 Risoluzione di un problema Dato

Подробнее

Sistemi di Elaborazione delle Informazioni

Sistemi di Elaborazione delle Informazioni SCUOLA DI MEDICINA E CHIRURGIA Università degli Studi di Napoli Federico II Corso di Sistemi di Elaborazione delle Informazioni Dott. Francesco Rossi a.a. 2016/2017 1 I linguaggi di programmazione e gli

Подробнее

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

Подробнее

Strutture di iterazione

Strutture di iterazione Strutture di iterazione 1. Leggi i programmi qui sotto e disegna le tabelle di traccia nelle situazioni seguenti: a. Nel primo e nel secondo programma viene inserito da tastiera il valore 2; b. Nel primo

Подробнее

Array e Oggetti. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 12. A. Miola Dicembre 2006

Array e Oggetti. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 12. A. Miola Dicembre 2006 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 12 Array e Oggetti A. Miola Dicembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Array e Oggetti 1 Contenuti Array paralleli

Подробнее

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

Подробнее

Somma di numeri floating point. Algoritmi di moltiplicazione e divisione per numeri interi

Somma di numeri floating point. Algoritmi di moltiplicazione e divisione per numeri interi Somma di numeri floating point Algoritmi di moltiplicazione e divisione per numeri interi Standard IEEE754 " Standard IEEE754: Singola precisione (32 bit) si riescono a rappresentare numeri 2.0 10 2-38

Подробнее

Programmazione I - Laboratorio

Programmazione I - Laboratorio Programmazione I - Laboratorio Esercitazione 3 - Array Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ mezzetti mezzetti di.unipi.it 2. Dipartimento

Подробнее

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

Подробнее

#include <iostream> using namespace std; // int main ( ) { // --- Dichiarazione delle variabili int N ; float A, Pot;

#include <iostream> using namespace std; // int main ( ) { // --- Dichiarazione delle variabili int N ; float A, Pot; Dati A e N (A reale >0 e N intero >=0) comunica il valore di A elevato alla N. CL 3 - Es_11.cpp Variabili di Input: N di tipo intero, A di tipo reale Variabili di Output: Pot di tipo reale Variabili di

Подробнее

Laboratorio di Programmazione M-Z

Laboratorio di Programmazione M-Z Diretta Laboratorio di Programmazione M-Z Docente: Dott.ssa Alessandra Lumini [email protected] Università di Bologna, Sede di Cesena Divide et impera Dividere un problema in sottoproblemi più

Подробнее

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

Подробнее

Correttezza (prima parte)

Correttezza (prima parte) Fondamenti di informatica Oggetti e Java (prima parte) Capitolo 16 ottobre 2015 1 Contenuti Introduzione alla correttezza dei programmi specifica di un programma correttezza di un programma verifica di

Подробнее

Programmazione a blocchi. Algobuild Prof. Sergio Roselli

Programmazione a blocchi. Algobuild Prof. Sergio Roselli Programmazione a blocchi Algobuild Prof. Sergio Roselli Blocchi base Inizio programma I Fine programma F Input IN A Output Esecuzione OUT A A = 5 + 1 L interprete Algobuild Algobuildpermette di trascrivere

Подробнее

Unità di apprendimento 6. Dal problema al programma

Unità di apprendimento 6. Dal problema al programma Unità di apprendimento 6 Dal problema al programma Unità di apprendimento 6 Lezione 1 Conosciamo gli algoritmi e i linguaggi In questa lezione impareremo: cos è un problema come affrontarlo come descrivere

Подробнее

Introduzione agli Algoritmi

Introduzione agli Algoritmi Introduzione agli Algoritmi Informatica Sara Zuppiroli A.A. 2012-2013 Informatica () Introduzione agli Algoritmi A.A. 2012-2013 1 / 25 Risoluzione dei problemi Dalla descrizione del problema all individuazione

Подробнее

Introduzione alla programmazione

Introduzione alla programmazione Introduzione alla programmazione Risolvere un problema Per risolvere un problema si procede innanzitutto all individuazione Delle informazioni, dei dati noti Dei risultati desiderati Il secondo passo consiste

Подробнее

INFORMATICA DI BASE Linguaggio C Prof. Andrea Borghesan

INFORMATICA DI BASE Linguaggio C Prof. Andrea Borghesan INFORMATICA DI BASE Linguaggio C Prof. Andrea Borghesan venus.unive.it/borg [email protected] Ricevimento lunedì, prima o dopo lezione 1 Le funzioni in C Le funzioni vengono utilizzate per 3 motivi: Riusabilità

Подробнее

Informatica. Come si risolve un problema?

Informatica. Come si risolve un problema? Informatica Elaborazione automatica dell informazione Esempio di elaborazione: rubrica, elenco telefonico. Ogni problema di elaborazione dell informazione è caratterizzato da: un insieme di dati di partenza

Подробнее

Algoritmi e soluzione di problemi

Algoritmi e soluzione di problemi Algoritmi e soluzione di problemi Dato un problema devo trovare una soluzione. Esempi: effettuare una telefonata calcolare l area di un trapezio L algoritmo è la sequenza di operazioni (istruzioni, azioni)

Подробнее

L ELABORATORE ELETTRONICO

L ELABORATORE ELETTRONICO L ELABORATORE ELETTRONICO Il calcolatore elettronico è uno strumento in grado di eseguire insiemi di azioni ( mosse ) elementari le azioni vengono eseguite su oggetti (dati) per produrre altri oggetti

Подробнее

Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto

Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto Diagramma a blocchi per la selezione, in un mazzo di chiavi, di quella che apre un lucchetto 14 1. Dato un numero dire se è positivo o negativo 2. e se il numero fosse nullo? 3. Eseguire il prodotto tra

Подробнее

C: panoramica. Violetta Lonati

C: panoramica. Violetta Lonati C: panoramica Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010 Violetta Lonati

Подробнее

acquisizione numero elementi del primo insieme e del secondo insieme, finché elprimoinsieme oppure elsecondoinsieme > EL_INS

acquisizione numero elementi del primo insieme e del secondo insieme, finché elprimoinsieme oppure elsecondoinsieme > EL_INS Esercitazione Fondamenti di Informatica B Corso di Laurea in Ingegneria Meccanica 3 Esercitazione: 20 ottobre 2004 Esercizi su array e applicazione delle regole di conversione di tipo Esercizi presenti:

Подробнее

L ELABORATORE ELETTRONICO!

L ELABORATORE ELETTRONICO! L ELABORATORE ELETTRONICO! Il calcolatore elettronico è uno strumento in grado di eseguire insiemi di azioni ( mosse ) elementari le azioni vengono eseguite su oggetti (dati) per produrre altri oggetti

Подробнее

Studio degli algoritmi

Studio degli algoritmi COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI Fondamenti di Informatica a.a.2006/07 Prof. V.L. Plantamura Dott.ssa A. Angelini Studio degli algoritmi Dato un problema P, le problematiche riguardano: Sintesi

Подробнее

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

Подробнее

Realizzare un programma che legga da input tre numeri interi e stampi a video la loro somma e la media.

Realizzare un programma che legga da input tre numeri interi e stampi a video la loro somma e la media. Esercizio 1 Realizzare un programma che legga da input tre numeri interi e stampi a video la loro somma e la media. #include Esercizio 1 - Soluzione int main() int num1, num2, num3, somma; float

Подробнее

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

Подробнее

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

Подробнее

in termini informali: un algoritmo è una sequenza ordinata di operazioni che risolve un problema specifico

in termini informali: un algoritmo è una sequenza ordinata di operazioni che risolve un problema specifico Click to edit Algoritmo Master title style algoritmo: un insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce un risultato e si arresta in un tempo finito

Подробнее

Definizione di metodi in Java

Definizione di metodi in Java Definizione di metodi in Java Un metodo in Java definisce un operazione ad alto livello (sottoprogramma) che consente di manipolare dati e oggetti. Durante la computazione effettuata da un programma, un

Подробнее