Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoCaprice Grilli Modificato 11 anni fa
1
Informatica B Allievi Elettrici AA 2000-01 La progettazione per raffinamenti successivi
2
Un passo ulteriore Verifica dei dati di ingresso: segnalazione dei valori inaccettabili e del motivo Fa parte della gestione dellinterazione con lutente: alcune volte piu complicata dellalgoritmo stesso che risolve il problema
3
Verifica dei dati di ingresso 1. Leggi(N) 2. If N < 0 then End 3. S=0 4. I=1 5. while I <= N do 6. { S=S+I 7. I=I+1} 8. Scrivi(La somma e S) 9. End implementa un ciclo a condizione iniziale e corretto per qualsiasi N! non entra nel ciclo se N=0
4
Un problema piu generale La verifica dei dati di ingresso e un aspetto della tecnica di raffinamento dellalgoritmo per passi successivi: –Si trascurano volontariamente alcuni dettagli –Ci si concentra sul problema fondamentale –In seguito si introducono successivi miglioramenti
5
Riconoscimento del tipo di un triangolo Dati tre numeri interi Riconoscere se possono essere i lati di un triangolo Riconoscere se il triangolo e equilatero, isoscele o scaleno
6
Riconoscimento del tipo di un triangolo: diagramma di flusso Leggi X,Y,Z Puo essere un triangolo? Scrivi: non e un triangolo Tre lati uguali? Due lati uguali? Scrivi: triangolo equilatero Scrivi: triangolo isoscele Scrivi: triangolo scaleno inizio fine NO SI NO SI
7
Raffinamento In cosa consiste il test per vedere se puo essere un triangolo? In cosa consiste il test dei tre lati uguali? In cosa consiste il test dei due lati uguali?
8
Puo essere un triangolo? X < Y + Z? se NO, stampa non e un triangolo Y < X + Z? se NO, stampa non e un triangolo Z < Y + X? se NO, stampa non e un triangolo Si tratta di tre test in successione
9
Tre lati uguali? X = Y? se SI, Y = Z? se SI, stampa triangolo equilatero Due lati uguali? X = Y? se SI, stampa triangolo isoscele Y = Z? se SI, stampa triangolo isoscele Nota: in realtà già alluscita del primo se sapevamo che il triangolo era isoscele...
10
Progettazione per raffinamenti successivi Fa parte di una tecnica più generale dellIngegneria del Software e in generale dellinformatica: divide at impera Dà origine alle varie tecniche di modularizzazione Vedremo nella seconda parte del corso che ciò si esprime concretamente nelluso delle procedure e funzioni
11
Informatica B Allievi Elettrici AA 2000-01 Fondamenti della programmazione in linguaggio C (I)
12
Struttura di un programma (linguaggio di alto livello) Parte dichiarativa: dichiarazione degli elementi del programma (dati e funzioni) Parte eseguibile: istruzioni: –assegnazione –controllo: »condizionali »cicli –input/output
13
Struttura di un programma C inclusione librerie /*serve per poter richiamare funzioni utili */ dichiarazioni di variabili e funzioni main() { dichiarazioni di variabili e funzioni istruzione 1; /* tutti i tipi di operazioni di cui abbiamo parlato: */ istruzione 2; /* assegnazione, controllo (condizionali, cicli), */ istruzione 3; /* input/output */ istruzione 4; ….. istruzione N; }
14
Il nostro primo vero programma C #include /* Calcolo dellarea di un triangolo */ main() { int base;/*dichiarazione delle tre variabili */ int altezza; int area; base = 3;/* assegnazione dei valori*/ altezza = 7; area = (base * altezza)/2; /*assegnazione del valore di una espressione */ printf(%d,area); /*output */ }
15
Dichiarazione dei dati: tipi di dati Il tipo e un concetto astratto che esprime: allocazione di spazio operazioni permesse
16
Principali tipi fondamentali del C int (interi) : valori:{…-4,-3,-2,-1,0,1,2,3,4,… dimensione: 1 parola, (=16 bit nei vostri PC) operazioni: {+, -, *, /} char (caratteri): valori: a, b, x, Y, A, 4,... dimensione: 1 byte operazioni: {, = …} (ma in C anche aritmetiche !!) float (reali): valori: R dimensione: 2 parole, (=32 bit nei vostri PC) operazioni: {+, -, *, /,, …>, <, }… alcune realizzate mediante funzioni apposite
17
Dichiarazione dei dati Gli oggetti possono avere una struttura molto complessa. Esempi: vettori (array): A[1],A[2],…A[N] a una o piu dimensioni strutture: data:giorno: 1..31, mese: string, anno: integer
18
Un altro esempio #include /* Calcolo dellarea di un triangolo */ int base,altezza,area;/*dichiarazione delle variabili*/ main() { printf(Area del triangolo\n\n); printf(Inserisci Base:); scanf (%d,&base); /*input */ printf(Inserisci Altezza:); scanf (%d,&altezza);/*input */ area = (base * altezza)/2; /*assegnazione del valore di una espressione */ printf(Base: %d\n,base); /*output */ printf(Altezza: %d\n,altezza); printf(Area: %d\n,area); }
19
Cosa accade sullo schermo Area del triangolo Inserisci Base: _ [una volta inserito il valore (ad es. 10):] Inserisci Altezza:_ [una volta inserito il valore (ad es. 15):] Base:10 Altezza:15 Area:75
20
Uso di istruzioni di I/O e di una funzione matematica #include int a,b,segmento,lunghezza;/*dichiarazione variabili*/ main() { printf(Calcolo lunghezza di un segmento\n\n); printf(Inserisci Primo Estremo:); scanf (%d,&a);/*input */ printf(Inserisci Secondo Estremo:); scanf (%d,&b);/*input */ segmento = a-b; lunghezza = abs(segmento); /* uso della funzione abs*/ printf(Lunghezza del segmento:%d,lunghezza);/*output */ }
21
Istruzioni condizionali Anche in C esiste il costrutto a selezione semplice e quello a selezione doppia: if (espressione) istruzione if (espressione) istruzione1 else istruzione2 In generale: if (espressione) {seq1. di istruzioni} [else {seq2. di istruzioni}] Nota: gli if possono essere nidificati
22
Frammento di programma ( if nidificati) if(i<100) if(i>0) printf(\n minore di 100 e maggiore di zero); else if (i==0) printf(\n uguale a zero); else printf(\n minore di zero); else if (i==100) printf(\n uguale a 100); else printf(\n maggiore di 100);
23
Verifica dati dingresso (istruzioni composte) #include /* Calcolo dellarea di un triangolo */ int base,altezza,area;/*dichiarazione delle variabili*/ main() { printf(Area del triangolo\n\n); printf(Inserisci Base:); scanf (%d,&base); /*acquisizione valori */ printf(Inserisci Altezza:); scanf (%d,&altezza);/*input */ if (base>=0 && altezza>=0) {area = (base * altezza)/2; /*caso valori dingresso accettabili */ printf(Base: %d\n,base); /*output */ printf(Altezza: %d\n,altezza); printf(Area: %d\n,area);} else printf(Valori non accettabili); }
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.