Istruzioni di selezione (If/else/switch)

Slides:



Advertisements
Presentazioni simili
Introduzione al linguaggio C++
Advertisements

1 Automazione dellalgoritmo ricorsivo di permutazione eseguita da Mariano Melchiorri.
Esercitazioni If nidificati
INFORMATICA Strutture condizionali
Programma: main() { istruzioni } ; assegnazione condizione ciclo istruzione: ;
if (condizione.) { blocco_istruzioni } else
Preincremento e PostIncremento in C++
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità F2 Selezione.
Iterazione while – do while - for.
Iterazione A. Ferrari.
Linguaggio C++ Selezione.
Selezione multipla e tipo di dato carattere
Selezione A. Ferrari.
Numeri casuali.
Procedure e funzioni In linguaggio C.
Sviluppo di programmi strutturati
I DATI LE ISTRUZIONI LE STRUTTURE FONDAMENTALI
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità F3 Iterazione.
Istruzioni condizionali e blocco
Le funzioni.
La ricorsione Simulazione. Il Main /* Programma che usa una funzione ricorsiva*/ #include #define MAX_N 8 main() int valore, dato; printf(Introduci n:
INFORMATICA Strutture iterative
Gruppo di Lavoro Nazionale Open Group TANDEM EMAS e Ag21 delle PA Dott. Daniele Tartari UO Sistemi Gestione Ambientale Provincia di Bologna I risultati.
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
1 Corso di Informatica (Programmazione) Lezione 12 (19 novembre 2008) Programmazione in Java: i metodi statici.
1 Corso di Informatica (Programmazione) Lezione 10 (12 novembre 2008) Programmazione in Java: espressioni booleane e controllo del flusso (selezione)
Corso di Laurea in Biotecnologie Informatica (Programmazione)
CORSO DI PROGRAMMAZIONE II
Le strutture di controllo
LdL - LP1 - ver. 6 - lez aa Linguaggi di programmazione I La ricorsione Prof. Luigi Di Lascio Lezione 10.
Lezione 4: Costrutti Condizionali Prof. Raffaele Montella.
Fondamenti di Informatica I a.a Il linguaggio C Il controllo di flusso La selezione condizionale Listruzione switch I cicli Le istruzioni break,
Argomenti Direttive di Preprocessore: Compilazione Condizionale
Istruzioni di selezione in Java Programmazione Corso di laurea in Informatica.
Selezione (=scelta) con “if-else”
8) Classi numeriche e operatori Lab. Calc. I AA2002/03 - cap.82 Classi numeriche Esempi di classi numeriche: int, numeri interi che occupano una parola.
9) If e else. Lab.Calc.I AA2002/03 - cap.92 espressione.
10) switch, else if e ifdef. Lab.Calc.I AA2002/03 - cap.102 espressione condizione.
Funzioni. Lab.Calc. AA 2005/062 Astrazione Consiste nell'ignorare i dettagli e concentrarsi sull'essenziale: in particolare ci consente di utilizzare.
Iterazioni (for, do, while). Lab.Calc. AA2005/062 Iterazioni 3 istruzioni che consentono di eseguire un loop (ciclo): 1. while 2. do...while 3. for con.
Creazione di un programma eseguibile. Laboratorio di Calcolo AA2005/062 Livelli di programmazione Si può programmare a diversi livelli utilizzando linguaggi.
Lab. Calc. AA 2005/061 Classi. Lab. Calc. AA 2005/062 C e C++ Fino a questo punto abbiamo introdotto gli elementi base di qualsiasi linguaggio di programmazione,
Vettori e matrici. Lab.Calc. AA2005/062 Vettori Dichiarazione di un vettore di oggetti del tipo Tipo: Tipo identificatore[dimensione]; Uso di un elemento.
Primi Elementi di Programmazione in C++
Lab. Calc. AA 2005/061 puntatori. Lab. Calc. AA 2005/062 Attributi di un oggetto nome o identificatore; tipo o classe; valore o valori; indirizzo;
Strutture di controllo nel C
Javascript 5 Selezione. Listruzione IF (in italiano SE) pone una scelta, ossia 'se vero' esegui in un modo oppure 'se falso' esegui in un altro modo.
Lezione 6 Strutture di controllo Il condizionale
Laboratorio di Informatica INF3 INTDER01 Prodotto da Generali Matteo e da Zaniboni Filippo.
In molti casi è utile assegnare a degli identificatori dei valori che restino costanti durante tutto il programma e che non possano essere cambiati nemmeno.
Isabella Fortunato - Rimini Sostegno allo sviluppo dellistruzione degli adulti EDALAB.
Programmazione di Calcolatori
Parte 4 Elementi di Informatica di base
void binario(int n); …………………
Lo sviluppo top down Le funzioni
Passaggio di parametri per indirizzo
Laboratorio di Informatica1 Parte 4 Laboratorio di Informatica Dott.ssa Elisa Tiezzi Dott.ssa Elisa Mori.
BIOINFO3 - Lezione 221 Listruzione IF-ELSE prevede un secondo blocco di istruzioni da eseguire in alternativa al primo nel caso la condizione sia falsa.
Anno accademico Le istruzioni di controllo in C.
Ripetizione La vera potenza dei programmi per computer risiede nella capacità di ripetere lo stesso calcolo o sequenza di istruzioni più volte, ogni volta.
JavaScript Generalità Cos'è JavaScript?
#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.
Introduzione a Javascript
Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies.
Informatica B Allievi Elettrici - AA Fondamenti della programmazione in linguaggio C (II) Istruzioni e strutture di controllo.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 8 Oggetti statici e dinamici. Classi annidate. Costruttori/distruttori.
Operatori di incremento e decremento
C++:Strutture di Controllo
Il C `e un linguaggio di programmazione di uso generale, originariamente sviluppato per la scrittura del sistema operativo Unix, ed oggi disponibile su.
Linguaggio C++ Selezione.
Transcript della presentazione:

Istruzioni di selezione (If/else/switch) Con questa lezione iniziamo una breve panoramica delle parole chiave di base della programmazione in C/C++. I concetti che verranno illustrati valgono per tutti i linguaggi di programmazione, la sintassi cambia leggermente da un linguaggio ad un altro.

espressione Lab.Calc. AA2005/06

espressione condizione Lab.Calc. AA2005/06

espressione condizione successo Lab.Calc. AA2005/06

Sintassi di if if (espressione) istruzione dove espressione è una qualsiasi espressione C++ e istruzione può essere una singola istruzione o una sequenza di istruzioni racchiusa tra { e }. Lab.Calc. AA2005/06

Semantica di if Nell¢esecuzione di un'istruzione if viene valutata l'espressione tra parentesi Se il suo valore è non nullo allora viene eseguita l'istruzione Se il suo valore è nullo l'istruzione viene ignorata. In entrambi i casi l'esecuzione procede con l'istruzione successiva all'if Lab.Calc. AA2005/06

Esempi di uso di if : : if ( x < y) x = x + 5; : : if (x==0) { : : if (x==0) { x = -1; y = y + 25; } : Lab.Calc. AA2005/06

Esempio di programma #include<iostream.h> int main ( ) { int x, y; cout<< " Inserire due numeri " ; cin>>x>>y; if(x > y) cout << "Il primo e piu grande.\n"; if(x == y) cout<< "Sono uguali.\n"; if(x < y) cout<<"Il secondo e piu grande.\n"; cout<<" letti"<< x<<" e "<<y<<"\n"; return 0; } Lab.Calc. AA2005/06

espressione condizione Lab.Calc. AA2005/06

espressione condizione successo Lab.Calc. AA2005/06

espressione condizione successo Ramo 1 Lab.Calc. AA2005/06

espressione condizione successo insuccesso Ramo 1 Lab.Calc. AA2005/06

espressione condizione successo insuccesso Ramo 1 Ramo 2 Lab.Calc. AA2005/06

Sintassi di if…else if (espressione) istruzione1 else istruzione2 dove espressione è una qualsiasi espressione C++ e istruzione1(2) sono una istruzioni singole o sequenze di istruzioni racchiuse tra { e }. Lab.Calc. AA2005/06

Semantica di if…else Viene valutata l'espressione tra parentesi: Se il valore è non nullo viene eseguita l'istruzione1 e non viene eseguita l'istruzione2 Se invece il valore è nullo l'istruzione1 non viene eseguita e viene eseguita l'istruzione2. Lab.Calc. AA2005/06

Esempi : if ( x != 0 ) { y = y / x; x = x - 1; } else { x = 25; } : Lab.Calc. AA2005/06

: if ( x != 0 ) { y = y / x; x = x - 1; } else { x = 25; : Lab.Calc. AA2005/06

: : if ( x >y ) x = y - 6 ; else y = x + 6; : : : if ( x >y ) x = y - 6 ; else y = x + 6; : Corretto ma di difficile lettura: quando si legge la riga dell'if non ci si aspetta che ci sia un seguito… Lab.Calc. AA2005/06

: : if ( x > 0 ) { x = x + 25; y = y / x; } else x = x +1; : : if ( x > 0 ) { x = x + 25; y = y / x; } else x = x +1; Lab.Calc. AA2005/06

: : if ( x != 0 ) y = y / x; else { x = 25; y = y / x; } : : : if ( x != 0 ) y = y / x; else { x = 25; y = y / x; } : Lab.Calc. AA2005/06

Esempio di programma #include<iostream.h> int main( ){ int x, y, small, large; cout << "Inserire due numeri” << endl; cin >> x >> y; if (x > y){ large = x; small = y; } else { large = y; small = x; } cout<<"in ordine crescente:" <<small<<" "<<large<<endl; return 1; } Lab.Calc. AA2005/06

if... else annidati Nei costrutti più complessi, in cui si vogliano porre delle condizioni all'interno di un if…else, si pone il problema di associare correttamente l'else ad un if. La regola è che ogni else è associato al più vicino if che lo preceda, sempre che questo non sia già stato associato ad un altro else. Lab.Calc. AA2005/06

Esempio: Quanto vale y dopo l'esecuzione di questo blocco di istruzioni, dato x = 4.5? y = 3; if (x > 4) if (x > 5) if (x > 6) y = 3; else y = 4; else y = 5; Lab.Calc. AA2005/06

Utilizziamo l'incolonnamento per visualizzare I diversi blocchi logici: y = 3; if (x > 4) if (x > 5) if (x > 6) y = 3; else y = 4; else y = 5; sono tutte istruzioni singole e quindi le parentesi graffe non sono necessarie, ma aiutano! Lab.Calc. AA2005/06

if (x > 4) { // vero per x=4.5 if (x > 5) { // falso per x=4.5 y=3; if (x > 4) { // vero per x=4.5 if (x > 5) { // falso per x=4.5 if (x > 6) { y = 3; } else { y = 4; } } else { // eseguito se x <= 5 y = 5; // per x=4.5 y=5 ! Lab.Calc. AA2005/06

Visibilità di un identificatore Un blocco di codice è il codice contenuto all'interno di una coppia di parentesi graffe: {…}. La visibilità (scope) di un identificatore è data dal codice che lo dichiara e dalle istruzioni successive all'interno del più piccolo blocco contenente la dichiarazione: l'identificatore è valido (visibile) solo in questa parte del codice. Lab.Calc. AA2005/06

Esempi: { int x ; x = 5; cout << x << endl; } Lab.Calc. AA2005/06

{. int x, y;. y = x = 25;. {. double z;. z = 20; { int x, y; y = x = 25; { double z; z = 20; } cout<< x + y <<endl; } Lab.Calc. AA2005/06

{ int x, y; y = x = 25;. {. double z;. z = x + y; { int x, y; y = x = 25; { double z; z = x + y; } cout<< x + y << z <<endl; //errore! } Lab.Calc. AA2005/06

espressione condizione Lab.Calc. AA2005/06

espressione condizione Caso 1 Lab.Calc. AA2005/06

espressione condizione Caso 1 Ramo 1 Lab.Calc. AA2005/06

espressione condizione Caso 1 Caso 2 Ramo 1 Lab.Calc. AA2005/06

espressione condizione Caso 1 Caso 2 Ramo 1 Ramo 2 Lab.Calc. AA2005/06

espressione condizione Caso 1 Caso 3 Caso 2 Ramo 1 Ramo 2 Lab.Calc. AA2005/06

espressione condizione Caso 1 Caso 3 Caso 2 Ramo 1 Ramo 2 Ramo 3 Lab.Calc. AA2005/06

Sintassi di switch switch(espressione) { case val1: istruzione1 case val2: istruzione2 : case valn: istruzionen default: istruzione } Dove l'espressione assume valori interi (val1,… valn) e ogni istruzione può essere singola o composta da una sequenza di istruzioni. Lab.Calc. AA2005/06

Semantica di switch Nell'esecuzione dell'istruzione switch Viene valutata l'espressione Il valore dell'espressione viene confrontato con I diversi valori dei case. Se è uguale ad uno di questi viene eseguito il blocco istruzione ad esso associato. Se il valore dell'espressione non coincide con nessuno dei valori previsti si esegue il blocco di istruzioni associato a default. NB: una volta trovato il caso giusto il programma esegue anche tutti i casi successivi! Lab.Calc. AA2005/06

Esempio int dato; cin >> dato; switch(dato) { case 5: cout<< "dato == 5"; case 4: cout<< "dato == 4"; default: cout<< "dato diverso da 4 o 5 \n"; } Se dato==6 viene eseguita solo la stampa di default, se è 4 vengono eseguite quelle del case 4 e del default, se è 5 vengono eseguite tutte! Lab.Calc. AA2005/06

break Se si inserisce un break alla fine di ogni blocco istruzioni si ovvia al problema precedente: int dato; cin >> dato; switch(dato) { case 5: { cout<< "dato == 5"; break ; } case 4: { cout<< "dato == 4"; break ; } default: cout<< "dato diverso da 4 o 5 \n"; } Lab.Calc. AA2005/06

else if L'uso di switch con break corrisponde in definitiva a un uso di if…else if…else: if(dato ==5) { cout<< "dato == 5"; } else if(dato==4) { cout<< "dato == 4"; } else { cout<< "dato diverso da 4 o 5 \n"; } Lab.Calc. AA2005/06

Preprocessore È possibile inserire delle scelte anche a livello del preprocessore, tipicamente per definire quali parti di codice vadano compilate e quali no. Ricordando che tutte le direttive del preprocessore iniziano con il simbolo # vediamo alcuni esempi. Lab.Calc. AA2005/06

define Con l'istruzione #define NOMEVAR si dichiara una variabile al preprocessore #define NOMEVAR valore le si assegna un valore #undef NOMEVAR la si cancella completamente Lab.Calc. AA2005/06

define Le variabili per il processore possono essere definite anche esternamente, quando si invochi il preprocessore (o il preprocessore + compilatore + ...) g++ -DNOMEVAR programma.cc g++ -DNOMEVAR=valore programma.cc Lab.Calc. AA2005/06

ifdef Per mettere nello stesso file sorgente del codice che è diverso a seconda del calcolatore utilizzato si procede generalmente così #ifdef PCWINDOWS blocco di codice per PC con Windows #else codice per tutti gli altri #endif Lab.Calc. AA2005/06

ifndef Tutti gli header file iniziano con #ifndef NOME_NON_AMBIGUO #define NOME_NON_AMBIGUO E finiscono con #endif La prima istruzione verifica che NOME_NON_AMBIGUO non sia stato definito da nessuno, altrimenti vuol dire che il file è già stato incluso e che non serve, anzi potrebbe essere nocivo, includere nuovamente il suo contenuto. Lab.Calc. AA2005/06