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

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

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

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

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

PROGRAMMAZIONE: Le strutture di controllo

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

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Reti di Calcolatori

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

PROGRAMMAZIONE STRUTTURATA

Problemi, algoritmi e oggetti

Istruzioni iterative (o cicliche)

Esercitazione 6. Array

ALGORITMI. Obiettivo: risolvere problemi mediante l uso di un elaboratore elettronico. Elaboratore elettronico

Corso di Esercitazioni di Programmazione

IL PRIMO PROGRAMMA IN C

Strutture di iterazione

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

Esercitazione 5. Procedure e Funzioni Il comando condizionale: switch

Pr1: determinare il maggiore di n numeri interi n. Fondamenti di Informatica Prof. Vittoria de Nitto Personè

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Esercizi Programmazione I

Esempio (if): equazione di secondo grado

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Sviluppo di programmi. E ora, finalmente. Si comincia! 1. Analizzare il problema. 2. Progettare una soluzione (1) E necessario capire:

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

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

Istruzioni Condizionali

ESERCIZI DI PROGRAMMAZIONE DA SVOLGERE INDIVIDUALMENTE - parte 1 -

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1

Istruzioni iterative. Istruzioni iterative

Strutture di Controllo

Laboratorio di Informatica. Esercitazione su algoritmi e diagrammi di flusso

Algoritmi e basi del C Struttura di un programma

ESERCIZI DI PROGRAMMAZIONE. - condizionali e cicli -

Strutture di iterazione

Introduzione alla programmazione Esercizi risolti

Diagrammi di flusso. Un metodo per rappresentare graficamente gli algoritmi. sotto programma. Input/ Output. Start. predicato Elaborazione Stop

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

Esercizi C su array e matrici

Le strutture di controllo in C++

Costrutti condizionali e iterativi

Linguaggio C: le funzioni

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

Prof. Pagani Corrado ALGORITMI ESERCITAZIONI CICLI

Esercizi di programmazione in linguaggio C - Costrutto iterazione

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

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

Corso di Informatica di Base

Algoritmi. Un tema centrale dell informatica è lo studio degli algoritmi.

Esercizi di programmazione in C

Fondamenti di Informatica T-1 Modulo 2

Es 1. Scrivere un programma che verifica se una terna di numeri interi e' pitagorica

Strutture di controllo in C++

Linguaggio C: introduzione

Esercitazione 8. Array multidimensionali

2. Algoritmi e Programmi

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

Programmazione I - Laboratorio

Istruzioni Condizionali in C

6) Descrivere con un diagramma a blocchi un algoritmo che legga da input due numeri ne calcoli il prodotto in termini di somme ripetute.

1) Dati in ingresso 2 numeri, l algoritmo calcola e stampa a video la loro somma

Sviluppo di programmi

Algoritmi e soluzione di problemi

LABORATORIO DI INFORMATICA

RICERCA DI UN ELEMENTO

Diagrammi a blocchi 1

Proprietà delle Classi e degli Oggetti in Java

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

Esercitazione 3. Oggi sono stati effettuati semplici esercizi in C utilizzando le seguenti istruzioni: if...else, while, printf, scanf

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

Problema. Vettori e matrici. Vettori. Vettori

a.a Codice corso: 21012, HOMEWORKS

HOMEWORKS. in modo che il programma stampi N ripetizioni della stringa HelloWorld (su righe diverse), con N inserito dall utente.

Introduzione a Visual Basic Lezione 2 Cicli e anomalie

Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE

Algoritmi di Ricerca. Esempi di programmi Java

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

Transcript:

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 (C1) if (C2) S1; if (C2) S1; else S2; else S2; Soluzione: In entrambi i casi il ramo else si riferisce al secondo if

Esercizio Se si vuole che il ramo else si riferisca al primo if dobbiamo usare le parentesi: if (C1) {if(c2) S1; } else S2; che corrisponde a if (C1) { if (C2) S1; } else S2;

Esercizio Scrivere un algoritmo che legge tre numeri in ingresso, quindi verifica se questi possono essere la lunghezza dei tre lati di un triangolo (la lunghezza di ogni lato deve essere minore della somma degli altri due), infine determina se il triangolo avente come lati le lunghezze indicate è scaleno, isoscele oppure equilatero.

Algoritmo 1. Leggi i tre dati, x, y e z. 2. Verifica che ognuno dei tre dati sia minore della somma degli altri due: in caso contrario stampa il messaggio I dati letti non corrispondono ad alcun triangolo ; in caso positivo procedi come segue: 2.1 verifica se x, y e z sono tutti e tre uguali: in tal caso stampa il messaggio I dati letti corrispondono a un triangolo equilatero ; 2.2 altrimenti, se almeno due di essi sono tra loro uguali, stampa il messaggio I dati letti corrispondono a un triangolo isoscele ; 2.3 altrimenti, stampa il messaggio I dati letti corrispondono a un triangolo scaleno.

/* programma Triangolo */ #include <stdio.h> int main( ) { int x, y, z; printf ( Inserisci i valori dei tre lati: ); scanf ( %d%d%d, &x, &y, &z); if ((x<y+z) && (y<x+z) && (z<x+y)) if (x==y && y==z) printf ( I dati letti corrispondono a un triangolo equilatero ); else if (x==y y==z x==z) printf ( I dati letti corrispondono a un triangolo isoscele ); else printf ( I dati letti corrispondono a un triangolo scaleno ); else printf ( I dati letti non corrispondono ad alcun triangolo ); }

Il comando di iterazione Finché Comando di iterazione Consente al programmatore di specificare che una azione dovrà essere ripetuta finché alcune condizioni rimarranno vere Pseudocodice: Finché ci sono ancora articoli nella mia lista della spesa Compra il prossimo articolo e cancellalo dalla mia lista Il ciclo finché sarà ripetuto fino a che la condizione diventi falsa

Il comando di iterazione Finché Esempio int product = 2; while (product <= 1000) product = 2 * product;

Iterazione controllata da un contatore Ciclo ripetuto fino a che un contatore raggiunge un certo valore Iterazione definita: il numero delle iterazioni è noto Esempio: Una classe di dieci studenti sostiene un esame. Avete a disposizione le votazioni (degli interi nell intervallo da 0 a 100) per questo esame. Determinare la media della classe in questo esame. Pseudocodice: Inizializzare il totale a zero Inizializzare il contatore dei voti a uno Finchè il contatore resta minore o uguale a dieci Prendere dall input il prossimo voto Aggiungere il voto al totale Aggiungere uno al contatore Impostare il valore della media al totale diviso dieci Visualizzare la media

Formulazione degli algoritmi con il processo top-down per raffinamenti successivi Sviluppate un programma per il calcolo della media di una classe, che elaborerà un numero arbitrario di votazioni ogni volta che il programma sarà eseguito. Il numero di studenti é sconosciuto a priori In quale modo il programma potrà determinare quando terminare l immissione delle votazioni? Si usa un valore sentinella Anche chiamato valore di segnalazione, valore fittizio o valore bandiera Indica la fine della immissione dei dati L iterazione finisce quando l utente inserisce il valore sentinella Il valore sentinella dovrà essere scelto in modo che non possa essere confuso con un valore di input accettabile (come -1 in questo caso)

Formulazione degli algoritmi con il processo top-down per raffinamenti successivi Raffinamenti successivi top down Cominciamo con una rappresentazione in pseudocodice del top: Determinare la media della classe per l esame Dividiamo il top in piccole attività e elenchiamole in ordine: Inizializzare le variabili Prendere in input, sommare e contare le votazioni dell esame Calcolare e visualizzare la media della classe Molti programmi hanno tre fasi: Inizializzazione: inizializza le variabili del programma Elaborazione: prende in input i valori dei dati e imposta conseguentemente le variabili del programma Chiusura: calcola e visualizza i risultati finali

Formulazione degli algoritmi con il processo top-down per raffinamenti successivi Raffiniamo la fase di inizializzazione da Inizializzare le varibili in: Inizializzare il totale a zero Inizializzare il contatore a zero Raffiniamo Prendere in input, sommare e contare le votazioni dell esame in: Prendere in input la prima valutazione (o forse il valore sentinella) Finché l utente non ha ancora immesso il valore sentinella Aggiungere questa valutazione al totale corrente Aggiungere uno al contatore di valutazioni Prendere in input la prossima valutazione (o forse il valore sentinella)

Formulazione degli algoritmi con il processo top-down per raffinamenti successivi Raffiniamo Calcolare e visualizzare la media della classe in: Se il contatore non è uguale a zero Impostare la media con il totale diviso per il contatore Visualizzare la media altrimenti Visualizzare Non sono state immesse valutazioni

Formulazione degli algoritmi con il processo top-down per raffinamenti successivi Inizializzare il totale a zero Inizializzare il contatore a zero Prendere in input la prima valutazione (o forse il valore sentinella) Finché l utente non ha ancora immesso il valore sentinella Aggiungere questa valutazione al totale corrente Aggiungere uno al contatore di valutazioni Prendere in input la prossima valutazione (o forse il valore sentinella) Se il contatore non è uguale a zero Impostare la media con il totale diviso per il contatore Visualizzare la media altrimenti Visualizzare Non sono state immesse valutazioni

Determinare il massimo fra N numeri interi Algoritmo max_n 1. Leggi il valore di N dall esterno 2. Leggi i primi due numeri 3. Trova il maggiore m fra i primi due numeri (con max) 4. Finchè (hai esaminato meno di N numeri) a. Leggi un nuovo numero x b. Trova il maggiore fra m e x usando l algoritmo max c. Assegna il valore del maggiore a m 5. Stampa il massimo è ed il valore di m e termina

Inizio DF per il problema del massimo di N numeri Leggi i primi due numeri e memorizzali nelle variabili a e b m = max(a,b) Si Leggi un nuovo numero in a Ancora numeri da esaminare? No Scrivi max è m m = max(a,m) Fine Supponiamo N fissato

DF e programmi I DF sono un primo passo verso la formalizzazione di un algoritmo in modo non ambiguo Per ottenere una codifica interpretabile direttamente dalla macchina dobbiamo però specificare molti più dettagli : trasformare tutte le frasi in variabili e modifiche su di esse : es : ancora numeri da esaminare deve essere tradotto in qualcosa di calcolabile dalla macchina usando solo le operazioni elementari

Inizio Leggi N I = 2 m = max(a,b) Leggi i primi due numeri e memorizzali nelle variabili a e b Si I < N? No I = I + 1 Leggi un nuovo numero in a Scrivi max è m Fine DF per il problema del massimo di N numeri (seconda versione) m = max(a,m) Supponiamo N almeno 2

Programma: max_n in C main() /* calcola max_n */ { int m, i, a, b; i = 2 ; scanf ("%d %d, &a, &b); m = max(a,b); while (i < N) { scanf ("%d, &a) ; m = max(a,m); i = i+1; } printf ( il max è %d, &m) ; return ; }

Programma: max_n in C (cont.) int max(int x, int y) /* sottoprogramma che calcola max */ { int d; d = x - y ; if (d > 0) return x; else return y; }