14 marzo 2002 Avvisi:.

Slides:



Advertisements
Presentazioni simili
INFORMATICA Altre Istruzioni di I/O
Advertisements

Process synchronization
TAV.1 Foto n.1 Foto n.2 SCALINATA DI ACCESSO ALL’EREMO DI SANTA CATERINA DEL SASSO DALLA CORTE DELLE CASCINE DEL QUIQUIO Foto n.3 Foto n.4.
II° Circolo Orta Nova (FG)
Preincremento e PostIncremento in C++
Introduzione al linguaggio C
1 Pregnana Milanese Assessorato alle Risorse Economiche Bilancio Preventivo P R O P O S T A.
Iterazione A. Ferrari.
Sviluppo di programmi strutturati
Informatica Generale Marzia Buscemi
1 Informatica Generale Susanna Pelagatti Ricevimento: Mercoledì ore presso Dipartimento di Informatica, Via Buonarroti,
Frontespizio Economia Monetaria Anno Accademico
La scelta del paniere preferito
Anno accademico Array e puntatori in C.
ESERCITAZIONE N. 5 ESERCIZIO N. 1 Autore: Biagio Brattoli S I Corso.
INFORMATICA Strutture iterative
Programmazione Procedurale in Linguaggio C++
Reaching Definitions. Tino CortesiTecniche di Analisi di Programmi 2 Reaching definitions Dato un punto del programma, quali sono i comandi di assegnamento.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Copyright © The McGraw - Hill Companies, srl 1 Ordinamenti ottimi.
Algoritmi Politecnico di Milano
Algoritmi Politecnico di Milano C Primi programmi Politecnico di Milano.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 21 Marzo 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 20 Marzo 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Costrutti iterativi Marco D. Santambrogio – Ver. aggiornata al 9 Agosto 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Lab 2 – Info B Marco D. Santambrogio – Riccardo Cattaneo –
Algebra di Boole ed elementi di logica
Algoritmo di Ford-Fulkerson
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
Programmazione 1 9CFU – TANTE ore
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Problemi e algoritmi Anno Accademico 2009/2010.
1 Corso di Informatica (Programmazione) Esercitazione 3 (5 dicembre 2008)
Ufficio Studi UNIONCAMERE TOSCANA 1 Presentazione di Riccardo Perugi Ufficio Studi UNIONCAMERE TOSCANA Firenze, 19 dicembre 2000.
eliana minicozzi linguaggi1a.a lezione2
Il linguaggio Fortran 90: 4. Array: Vettori e Matrici
DAL PROBLEMA ALL'ALGORITMO Problemi e Programmi Paolo Amico
Istruzioni di selezione in Java Programmazione Corso di laurea in Informatica.
Cos’è un problema?.
Strutture di controllo nel C
Strutture di controllo in C -- Flow Chart --
Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio.
Politecnico di Milano Esercizi Preparazione alla prima prova intermedia.
Esercizi C su array e matrici
Dichiarazioni e tipi predefiniti nel linguaggio C
Le funzioni.
Analisi di Immagini e Dati Biologici
Programmazione in Java Claudia Raibulet
Calcolo del Massimo Comun Divisore
1 Negozi Nuove idee realizzate per. 2 Negozi 3 4.
Scheda Ente Ente Privato Ente Pubblico. 2ROL - Richieste On Line.
Esercizio 10.* Un cassiere vuole dare un resto di n centesimi di euro usando il minimo numero di monete. a) Descrivere un algoritmo goloso per fare ciò.
Radix-Sort(A,d) // A[i] = cd...c2c1
1)Completa la seguente successione: C4, B7, E10, D13, G16,. A. G19 B
Bando Arti Sceniche. Per poter procedere è indispensabile aprire il testo del Bando 2ROL - Richieste On Line.
In molti casi è utile assegnare a degli identificatori dei valori che restino costanti durante tutto il programma e che non possano essere cambiati nemmeno.
Massimo Comun Divisore
Un trucchetto di Moltiplicazione per il calcolo mentale
1101 = x 10 x 10 x x 10 x = CORRISPONDENZE
21 marzo 2002 (ri-)Avvisi: Giovedi 28 marzo la lezione e sospesa. Nuovo indirizzo di Spedire messaggi e esercizi solo.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Array e stringhe Marco D. Santambrogio – Ver. aggiornata al 9 Agosto 2013.
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Come affrontare un problema… Marco D. Santambrogio – Ver. aggiornata al 18 Ottobre.
Università degli Studi di BresciaA.A. 2012/2013 Fondamenti di Programmazione Docente: Alessandro SaettiA.A. 2012/2013 Università degli Studi di Brescia.
Bando di Residenza Cap Scheda ENTE 3ROL - Richieste On Line.
1Piero Scotto - C14. Finalità del corso Programma Materiale Requisiti Spendibilità 2Piero Scotto - C14.
Sviluppare un programma in C che, dato un array da 100 elementi interi caricato con numeri casuali compresi tra [10,100], sia in grado di cercare il valore.
lun mar mer gio ven SAB DOM FEBBRAIO.
Il linguaggio Fortran 90: 3. Procedure e Funzioni
IL GIOCO DEL PORTIERE CASISTICA. Caso n. 1 Il portiere nella seguente azione NON commette infrazioni.
Informatica B Allievi Elettrici - AA Fondamenti della programmazione in linguaggio C (II) Istruzioni e strutture di controllo.
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Transcript della presentazione:

14 marzo 2002 Avvisi:

Ripetizione controllata da valore sentinella Variazione al problema: Sviluppa il programma per il calcolo della media per un numero arbitrario di voti (diverso per ogni diversa esecuzione del programma) Numero di studenti sconosciuto a-priori Come fa il programma a sapere quando l’input termina? Valore sentinella ..anche valore dummy, valore flag Indica la “fine dei valori in input.” Loop finisce quando si immette il valore sentinella Sceglierlo sempre in modo che non puo’ essere confuso con un input regolare! (Esempio, in questo caso -1)

Formulazione algoritmo con processo “top-down” Top-down, raffinamenti successivi Inizio con un pseudocodice che rappresenta il livello top: Determina la media della classe sull’esame Divido il livello top in parti sempre piu’ dettagliate Inizializza le variabili Input, somma e conta i risultati dell’esame. Calcola e stampa la media della classe

Formulazione algoritmo con processo “top-down” Molti programmi possono dividersi in tre fasi: Inizializzazione: inizializza le variabili del programma Elaborazione: prende in input i dati e imposta le variabili del programma di conseguenza. Conclusione: calcolo e stampa dei risultati finali.

Raffinamento dell’algoritmo Inizializza le variabili Inizializza totale a zero Inizializza contatore a zero Input, somma e conta i risultati dell’esame Scrivi il primo voto (eventualmente la sentinella) Finche’ non e’ data in input la sentinella Aggiungi tale voto al totale corrente Aggiungi uno al contatore voti Scrivi il voto successivo (eventualmente la sentinella) Calcola e stampa la media della classe Se il contatore non e’ uguale a zero Definisci la media uguale al totale diviso per il contatore Scrivi la media else Scrivi “No voto in input”

1. Inizializza le variabili 2. Riceve input da utente 2.1 Esegue Loop 1 /* Fig. 3.8: fig03_08.c 2 Calcolo della media di una classe con 3 ripetizione controllata da sentinella */ 4 #include <stdio.h> 5 6 int main() 7 { 8 float average; /* new!!! */ 9 int counter, grade, total; 10 11 /* inizializzazione */ 12 total = 0; 13 counter = 0; 14 15 /* esecuzione */ 16 printf( "Enter grade, -1 to end: " ); 17 scanf( "%d", &grade ); 18 19 while ( grade != -1 ) { 20 total = total + grade; 21 counter = counter + 1; 22 printf( "Enter grade, -1 to end: " ); 23 scanf( "%d", &grade ); 24 } 1. Inizializza le variabili 2. Riceve input da utente 2.1 Esegue Loop

3. Calcola la media 3.1 Scrive i risultati Output 25 26 /* fase finale */ 27 if ( counter != 0 ) { 28 average = ( float ) total / counter; /*new*/ 29 printf( "Class average is %.2f", average ); 30 } 31 else 32 printf( "No grades were entered\n" ); 33 34 return 0; /* programma finisce ok */ 35 } 3. Calcola la media 3.1 Scrive i risultati Output Enter grade, -1 to end: 75 Enter grade, -1 to end: 94 Enter grade, -1 to end: 97 Enter grade, -1 to end: 88 Enter grade, -1 to end: 70 Enter grade, -1 to end: 64 Enter grade, -1 to end: 83 Enter grade, -1 to end: 89 Enter grade, -1 to end: -1 Class average is 82.50

Un nuovo tipo di dato… Numeri in virgola mobile: float Specifica di conversione: %f , %.2f,… %f produce 6 cifre dopo la virgola, con %.xf se ne specificano x

Un nuovo operatore… Il compilatore C puo’ valutare solo espressioni con operandi tutti dello stesso tipo Operatore di conversione: CAST Operatore unario che opera una conversione temporanea di tipo della variabile a cui si riferisce average = (float) total / counter; La presenza di (float) crea una copia temporanea della variabile total del tipo float (conversione esplicita) Per efftuare la divisione il C crea una copia temporanea di tipo float anche della variabile (conversione implicita o promozione).

Formulazione algoritmo con processo “top-down” Problema Un college ha una lista di risultati di un esame relativa a 10 studenti (1 = promosso, 2 = bocciato). Scrivere un programma che analizza i risultati. Se ci sono piu’ di 8 studenti promossi, print “Aumentare le tasse“ Notare che: Il programma deve esaminare 10 risultati di esame Uso loop controllato da contatore Possiamo usare due contatori: Uno per numero promossi , uno per numero bocciati Ogni risultato dell’esam1 oppure 2 e Se il numero non e’ 1, assumiamo che sia un 2

Formulazione algoritmo con processo “top-down” Top level (Sommario) Analizza i risultati degli esami e decide se aumentare le tasse Primo raffinamento Inizializza le variabili Prende in input i risultati dell’esame e conta i promossi e i bocciati Scrive un sommario dei risultati dell’esame e decide se aumentare le tasse

Formulazione algoritmo con processo “top-down” Secondo raffinamento Inizializza le variabili Inizializza i promossi a zero Inizializza i bocciati a zero Inizializza il contatore studenti a uno

Formulazione algoritmo con processo “top-down” Prende in input i risultati dell’esame e conta i promossi e i bocciati Finche’ il contatore studenti e’ minore o uguale a dieci Prendi in input il risultato successivo Se il risultato e’ “promosso” Aggiungi uno ai promossi else Aggiungi uno ai bocciati Aggiungi uno al contatore studenti

Formulazione algoritmo con processo “top-down” Scrive un sommario dei risultati dell’esame e decide se aumentare le tasse Scrive numero dei promossi Scrive numero dei bocciati Se ci sono piu’ di otto studenti promossi Scrive “Aumentare le tasse”

1. Inizializza le variabili 1 /* Fig. 3.10: fig03_10.c 2 Analisi dei risultati dell’esame */ 3 #include <stdio.h> 4 5 int main() 6 { 7 /* initializing variables in declarations */ 8 int passes = 0, failures = 0, student = 1, result; 9 10 /* process 10 students; counter-controlled loop */ 11 while ( student <= 10 ) { 12 printf( "Enter result ( 1=pass,2=fail ): " ); 13 scanf( "%d", &result ); 14 15 if ( result == 1 ) /* if/else nested in while */ 16 passes = passes + 1; 17 else 18 failures = failures + 1; 19 20 student = student + 1; 21 } 22 23 printf( "Passed %d\n", passes ); 24 printf( "Failed %d\n", failures ); 25 26 if ( passes > 8 ) 27 printf( “Aumentare le tasse\n" ); 28 29 return 0; /* finisce ok */ 30 } 1. Inizializza le variabili 2. Riceve input e conta i promossi/bocciati 3. Print risultati

Output Enter Result (1=pass,2=fail): 1 Enter Result (1=pass,2=fail): 2 Passed 6 Failed 4 Output

Operatori di Incremento e Decremento Operatore Incremento (++) invece di c+=1 Operatore Decremento (--) invece di c-=1. Pre incremento/decremento Operatore prima della variabile (++c o --c) Prima cambia variabile, Poi calcola espressione Post incremento/decremento Operatore dopo la variabile (c++ o c--) Prima esegue espressione, Poi cambia variabile Se c = 5, allora printf( "%d", ++c); Scrive 6 printf( "%d", c++); Scrive 5 NOTA: Alla fine, c ha il valore 6 in entrambi i casi

Operatori di Incremento e Decremento Quando la variabile non e’ in una espressione… Preincrementare e postincrementare ha lo stesso effetto. ++c; printf(“%d”,c); c++; e hanno lo stesso effetto

Regole di precedenza tra operatori:

Esercizi: Esercizio 1 Scrivere un programma che prenda in input 15 valori interi e determini il minore e il maggiore tra questi. Il programma dovra’ utilizzare soltanto 3 variabili. Suggerimento (ovvio): usare un ciclo

Esercizi: Esercizio 3.33 Esercizio 3.34 Esempio Scrivere un programma che prenda in input il lato di un quadrato (valori consentiti tra 1 e 20) e quindi lo disegni utilizzando asterischi. Esercizio 3.34 Come il precedente, pero’ il quadrato viene disegnato “vuoto”. Esempio Se il lato fosse 4, i programmi dovrebbero visualizzare: * * * * * * * * Es.3.33 * * * * Es.3.34 * * * * * * * * * * * * * * * *

Esercizi: Esercizio 3.44 Scrivere un programma che prenda in input tre valori di tipo float e quindi determini e visualizzi se possono rappresentare i lati di un triangolo.