Informatica B Allievi Elettrici AA 2000-01 La progettazione per raffinamenti successivi.

Slides:



Advertisements
Presentazioni simili
INFORMATICA Altre Istruzioni di I/O
Advertisements

1 Automazione dellalgoritmo ricorsivo di permutazione eseguita da Mariano Melchiorri.
Uso avanzato di C.
Strutture di controllo
Iterazione A. Ferrari.
Linguaggio C++ Selezione.
Selezione A. Ferrari.
Interazione con lutente I menu. Menu La forma più semplice di interazione con lutente è il menu che fornisce una serie di opzioni tra le quali lutente.
Procedure e funzioni ricorsive
PROGRAMMARE IN PASCAL (le basi)
INTRODUZIONE ALL’ INFORMATICA
MATLAB.
MATLAB. Scopo della lezione Programmare in Matlab Funzioni Cicli Operatori relazionali Esercizi vari.
Introduzione al linguaggio C
La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:
ESERCITAZIONE N. 5 ESERCIZIO N. 1 Autore: Biagio Brattoli S I Corso.
Introduzione agli algoritmi. Definizione Sistema di regole e procedure di calcolo ben definite che portano alla soluzione di un problema con un numero.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Usa la tecnica del.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti ottimi.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Usa la tecnica del.
Argomenti dalla linea dei comandi Gli argomenti possono essere passati a qualsiasi funzione di un programma, compresa la main(), direttamente dalla linea.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Usa la tecnica del.
Informatica Problema Algoritmo Programma
Linguaggio MATLAB: costrutti tipici (IF,WHILE…)
Esercizi su alberi binari
Tail recursion: esempio
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2007/2008 Corso di Programmazione 1 a.a.2007/2008 Prof.ssa Chiara Petrioli Corso di Laurea.
Algoritmi Politecnico di Milano
Informatica di base A.A. 2003/2004 Algoritmi e programmi
Università degli Studi di Bergamo Facoltà di Lingue e Letterature Straniere Facoltà di Lettere e Filosofia A.A Informatica generale 1 Appunti.
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Primo esercizio Scrivere un programma che legge da input
CORSO DI PROGRAMMAZIONE II
Algoritmi e Strutture Dati Valutazione del tempo di esecuzione degli algoritmi.
APPUNTI SUL LINGUAGGIO C
Somma = A + B start Stampa Somma Leggi A,B stop Sub SOMMA( ) Dim A, B as Integer A = InputBox("Immetti un numero") B = InputBox(Immetti un secondo numero)
Esercizi su alberi binari
Gli algoritmi AA 2003/04 © Alberti Programmazione 2. Algoritmi.
INFORMATICA Altre Istruzioni di I/O. © Piero Demichelis 2 Funzioni di I/O Per la lettura e la scrittura da videoterminale il C prevede numerose istruzioni.
Algoritmi su Tipi Semplici
Istruzioni Decisionali
Strutture di controllo nel C
Strutture di controllo in C -- Flow Chart --
Politecnico di Milano Esercizi Preparazione alla prima prova intermedia.
Problema Ci sono 5 signore nel parco. Ognuna di loro ha 1 figlio. Ogni bambino ha 10 figurine di calciatori, per un totale quindi di 50 figurine. Questi.
Rete Sincrona Una rete sequenziale sincrona, è dotata di un ingresso E, di un segnale di Clock e uno di reset. Ad ogni fronte del Clock, deve essere campionato.
ELEMENTI DI PROGRAMMAZIONE
Lordinamento di tre numeri interi. acquisisci a,b,c (a > b) AND (a > c)(b > a) AND (b > c) (c > a) AND (c > b) Scrivi c,b,aScrivi b,c,aScrivi c,a,bScrivi.
Radice quadrata di un numero
14 marzo 2002 Avvisi:.
Soluzioni e commenti esercizi 1 e 2
Alberi binari Definizione della struttura dati: struct tree { };
ND-partizione (A) n   A  somma  0 M  1/2 (  a i ) for i  1 to n do S[i]  choice ({true, false}) if S[i] then somma  somma + a i if somma > M then.
#include void main() { int a,b,c,; float s, x,x1,x2,delta,alfa,beta; int num[3]; int i; printf("La forma classica dell'equazione di 2° grado è: a*x^2+b*x+c=0\n.
4/5/20151 Metodi formali nello sviluppo software a.a.2013/2014 Prof. Anna Labella.
Informatica B Allievi Elettrici - AA Fondamenti della programmazione in linguaggio C (II) Istruzioni e strutture di controllo.
Allievi Elettrici - AA Le funzioni ricorsive in C
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 07/04/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
PRIMI ELEMENTI DI PROGRAMMAZIONE
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
1 Informatica Generale Marzia Buscemi Ricevimento: Giovedì ore , Dipartimento di Informatica, stanza 306-PS o per posta.
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Complessità Computazionale
Algoritmo per il calcolo del maggiore tra tre numeri qualsiasi Francesco PUCILLO matr
Transcript della presentazione:

Informatica B Allievi Elettrici AA La progettazione per raffinamenti successivi

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

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

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

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

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

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?

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

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

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

Informatica B Allievi Elettrici AA Fondamenti della programmazione in linguaggio C (I)

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

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

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 */ }

Dichiarazione dei dati: tipi di dati Il tipo e un concetto astratto che esprime: allocazione di spazio operazioni permesse

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

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

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); }

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

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 */ }

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

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

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); }