Unità Didattica 2 Linguaggio C. Espressioni, Operatori e Strutture linguistiche per il controllo del flusso

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

Tipi di dato. Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi:

Fondamenti di Programmazione. Strutture di controllo

Istruzioni iterative (o cicliche)

Espressioni ed operatori in C

Espressioni. Espressione = meccanismo fondamentale per esprimere computazioni in un LP importante comprenderne la semantica!

Indice. Ordine di valutazione. Espressioni in C++ Le espressioni in C++ (CAP 4) Alberto Garfagnini e Marco Mazzocco A.A. 2014/ * 20 / 2

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

JavaScript Core Language. Prof. Francesco Accarino IIS Atiero Spinelli Sesto San Giovanni via leopardi 132

Algebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche

Corso di Fondamenti di Informatica

Linguaggio C. Tipi predefiniti e operatori. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

Le strutture di controllo in C++

Corso di JavaScript. Prerequisiti. B1 Tipi di dato e operatori. Concetto di variabile, espressione e tipo di dato

Istruzioni Condizionali in C

Si possono applicare solo a variabili (di tipi interi, floating o puntatori), ma non a espressioni generiche (anche se di questi tipi).

Un elaboratore è un manipolatore di simboli (segni) intrinsecamente capace di trattare vari. caratteri char caratteri ASCII unsigned char

Strutture di Controllo. if (<condizione>) statement; if (<condizione>) statement; Istruzioni condizionali. Istruzione condizionale if.

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

Il potere espressivo di un linguaggio è caratterizzato da: PROGRAMMA = DATI + CONTROLLO

Gli Operatori. Linguaggio C. Gli Operatori. Esempi sull uso dell Operatore di Assegnamento. L Operatore di Assegnamento

Programmazione in Java (I modulo)

PROGRAMMAZIONE: Le strutture di controllo

Corso di Fondamenti di Informatica Il sistema dei tipi in C++

Lezione 7: La Formalizzazione degli Algoritmi - Strutture di Controllo e Selettive La Programmazione Strutturata (3 p) Giovedì 21 Ottobre 2010

LINGUAGGI DI PROGRAMMAZIONE!

Strutture di Controllo

Tipi di dato primitivi

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

Le etichette nei programmi. Istruzioni di branch: beq. Istruzioni di branch: bne. Istruzioni di jump: j

ISTRUZIONI ISTRUZIONI

$QDOLVLGHOSURJUDPPDTXDGUDWR

Costrutti condizionali e iterativi

Linguaggio C Espressioni e operatori

Algoritmi e basi del C Struttura di un programma

Costrutti per il controllo del flusso di esecuzione

Programmazione Procedurale in Linguaggio C++

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

Programmazione in Python. Moreno Marzolla

Programmazione strutturata

Introduzione alla programmazione in C(++)

Istruzioni iterative. Istruzioni iterative

PROGRAMMAZIONE STRUTTURATA

Tipi di dati scalari (casting e puntatori) Alessandra Giordani Lunedì 10 maggio 2010

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Tipi di dati fondamentali. Tipi di dati fondamentali. Utilità dei tipi di dati nelle dichiarazioni. Il tipo di dati char. Codice ASCII.

Cosa si intende con stato

Conversioni fra Tipi di Dati. Luca Abeni

5 - Istruzioni condizionali

IL PROBLEMA DEL PROGETTO

Un esempio di if annidati

Espressione composta da: Operatori Operandi (costanti, variabili, )

La sintassi del C APPENDICE H

linguaggio di programmazione e programma

Corso di Fondamenti di Informatica Classi di istruzioni 2

Istruzioni di ripetizione in Java 1

Tipi di dato. Le variabili in C. Problema: dato in input un carattere, se esso è una lettera minuscola, trasformarla in maiuscola.

Espressione di chiamata di funzione

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

Programmazione web lato client con JavaScript. Marco Camurri 1

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

Espressioni semplici e condizionali

Espressioni logiche. Espressioni logiche. Operatori logici. Operatori logici. Operatori logici. Espressioni Logiche e Istruzione di Test

Programmazione Procedurale in Linguaggio C++

Gli Operatori. Università degli Studi di Brescia

Le variabili logiche possono essere combinate per mezzo di operatori detti connettivi logici. I principali sono:

Strutture di controllo e cicli

Algoritmi e soluzione di problemi

Introduzione a Java. Riferimenti

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

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

Corso di Matematica per la Chimica. Dott.ssa Maria Carmela De Bonis a.a

MATLAB I/O. Informatica B - A.A. 2012/2013 ACQUISIZIONE DI INPUT DA TASTIERA

Introduzione Il costrutto if...else Il costrutto while Altri costrutti

Linguaggio C - sezione dichiarativa: costanti e variabili

Script in Matlab. INFORMATICA B + C (sezione L-Z) Ingegneria Elettrica, Chimica e dei Materiali

Algebra di Boole. Andrea Passerini Informatica. Algebra di Boole

Espressioni e Operatori

VBA Principali Comandi

PHP Lezione 4. Istruzione condizionale IF. Sintassi IF: if (condizione) { istruzioni; }

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

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

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

Strutture di controllo iterative

Corso: Fondamenti di Informatica 1 (gruppo 8-9) Corsi di laurea: Area dell'informazione Questionario di autovalutazione 4

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli

Il linguaggio C. Notate che...

Descrizione delle operazioni di calcolo. Espressioni costanti semplici

Cap. 4: Espressioni. Operatori

Programmare in C. Esempio: Algoritmo del Risveglio

Corso di Calcolatori Elettronici Un computer è un dispositivo in grado di eseguire dei calcoli e di prendere delle decisioni logiche.

Espressioni con effetti collaterali

Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Laboratorio di programmazione

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C

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

Sequenze di controllo C:

Transcript:

Unità Didattica 2 Linguaggio C Espressioni, Operatori e Strutture linguistiche per il controllo del flusso 1

Espressioni e assegnazioni Le espressioni sono definite dalla grammatica: espressione = variabile costante operatore (lista_espressioni) Gli operatori aritmetici binari si scrivono in notazione infissa, utilizzando parentesi, secondo le usuali convenzioni di precedenza. Ad esempio: x + 25 * (y - 1) + x % y Le assegnazioni hanno la forma: variabile = espressione; Un' assegnazione in C è un'espressione, il cui valore è il valore assegnato alla variabile a sinistra del simbolo `= Osservazioni: E possibile fare assegnazioni all interno di espressioni, es: if ((n = funz(s)) > 10) E possibile fare assegnazioni multiple simultanee, es: x = y = z = 0; 2

Operatori aritmetici Oltre agli operatori aritmetici standard +, -, *, / e all'operatore % (modulo) per gli interi, in C si hanno anche gli operatori incremento ++ e decremento --, che possono essere preposti o posposti all'argomento. Se sono preposti il valore e' calcolato prima che l'espressione sia valutata, mentre se sono posposti il valore viene calcolato dopo la valutazione della espressione. Esempi: int z = 2; x = z++; /* A questo punto x=2 e z=3 */ x = ++z; /* A questo punto x=3 e z=3 */ 3

Operatori aritmetici L'operatore "%" (modulo) può essere utilizzato solamente con le variabili di tipo int; La divisione "/" e' utilizzata sia per gli int che per i float. Esiste una forma contratta per espressioni del tipo expr1 = expr1 [op] expr2 (es: i=i+2 o x=x*(y+3)) diventano: expr1 [op]= expr2 In particolare: x+=y; equivale a x=x+y; x-=y; equivale a x=x-y; x*=y; equivale a x=x*y; x/=y; equivale a x=x/y; Osservazione: l'espressione x*=y+3 corrisponde a: x=x*(y+3) e non a x=x*y+3. 4

Operatori di confronto x==y Verifica se il valore di x è uguale a y x>y Verifica se x è maggiore di y x>=y Verifica se x è maggiore uguale di y x<y Verifica se x è minore di y x<=y Verifica se x è minore uguale di y Osservazione: if (i==j)... esegue il contenuto dell'if se i è uguale a j; ma if (i=j)... è ancora sintatticamente esatto ma effettua l'assegnazione del valore di j ad i e procede se j e' diverso da zero in quanto viene interpretato il valore TRUE ( 0) (è come scrivere if (i)... con i 0). In questo caso si tratta di una "assegnazione di valore. 5

Operatori logici e relazionali ed espressioni booleane && AND logico; OR logico;! NOT logico. Il C non prevede il tipo booleano. Al loro posto si usano gli interi: 0 (false); qualunque intero 0 (true); Generalmente è preferibile definire le costanti: #define TRUE 1 oppure: const int true = 1; #define FALSE 0 oppure: const int false = 0; Le espressioni booleane si formano utilizzando: Simboli relazionali: >, >=, <, <=, ==,!=; Operatori logici: && (and), (or),! (not) Esempio: ( (x > 3) && ((y == 1)!(y > 0) ) ) 6

Regole di precedenza degli operatori Tutti gli operatori hanno una propria priorità, e gli operatori ad alta priorità sono valutati prima di quelli a bassa priorità. Gli operatori con la stessa priorità sono valutati da sinistra a destra. Ad esempio: a -b -c è valutato (a - b) c In generale gli operatori unari hanno priorità su quelli binari, e gli operatori relazionali su quelli logici; Le priorità possono essere variate mediante l uso di parentesi; Esempio: a < 10 && 2 * b < c; e' interpretato come: (a < 10) && ((2 * b) < c); 7

Conversioni implicite del tipo di una variabile Il compilatore C sa solo valutare espressioni tra argomenti dello stesso tipo; Promozione (o conversione implicita) di tutti i dati al tipo più alto contenuto nell espressione (ad esempio genererà una copia degli operandi interi promuovendoli a float, nel caso in cui sia presente nell espressione un operando float). Esempio: float media, totale; int contatore; media = totale / contatore; Il compilatore genera una copia di contatore implicitamente convertita al tipo float; Si ottiene un risultato corretto di divisione fra due float: Se totale == 3.0, contatore == 2 media= 3.0/2.0 = 1.5 8

Conversioni esplicite del tipo di una variabile Il C fornisce una modalità di conversione esplicita del tipo di una variabile mediante l operazione di cast: (tiponuovo)variabile; Esempio: float media; int totale, contatore; media = (float)totale / (float)contatore; L operatore unario (float) ha la funzione di creare una copia temporanea in virgola mobile di totale e contatore: Se totale == 3, contatore == 2 media= 3.0/2.0 = 1.5 Senza l utilizzo dell operazione di casting avremmo avuto: Se totale == 3, contatore == 2 media= 3/2 = 1.0 (Errore!) 9

Costrutto di selezione if Usato per scegliere tra percorsi di azione alternativi; Esempio in pseudocodice: Se il voto dello studente è maggiore o uguale a 18 visualizza promosso ; In C: if ( voto >= 18 ) printf("promosso\n"); 10

Costrutto di selezione if/else if: esegue un azione solo se la condizione è vera if/else: Specifica ed esegue l azione associata ad if nel caso in cui la condizione sia vera, quella associata ad else nel caso in cui sia falsa Pseudocodice: Se il voto dello studente è maggiore o uguale a 18 visualizza promosso altrimenti visualizza bocciato In C: if ( voto >= 18 ) printf( promosso\n ); else printf( bocciato\n ); 11

Costrutto di selezione if/else In C esiste anche l operatore condizionale di selezione ternario (?:) condizione? (valore se vero):(valore se falso); Esempio: printf("%s\n", voto >= 18? promosso : bocciato ); Esempio: voto>=18? printf( promosso\n ):printf( bocciato\n ); 12

Costrutto di ripetizione while Specifica un azione da ripetere fino a quando una condizione rimane vera. Formato: while (condizione) { } Esempio: int valore = 2; while (valore <= 1000) { valore = 2 * valore; } 13

Costrutto di ripetizione do/while Simile al costrutto while; La condizione di ripetizione viene valutata solo dopo l esecuzione del blocco di azioni associato; Il blocco di azioni viene eseguito almeno una volta; Formato: do { }while (condizione); Esempio: int counter = 1; do { printf("%d ", counter); }while(++counter <= 10); 14

Costrutto di ripetizione for Gestisce direttamente nella sintassi del ciclo una fase di inizializzazione e di aggiornamento di variabili; Formato: for(inizializzazione; test_fine_ciclo; aggiornamento) { } Esempio: int i; for (i = 0; i < 10; i++) printf("%d\n", i); Il for è equivalente ad un ciclo gestito tramite while: inizializzazione while (test_fine_ciclo) { aggiornamento; } 15

Costrutto di ripetizione for Note sui comandi di inizializzazione e aggiornamento: Possono essere liste di comandi separati da virgola Esempio: for (int i = 0, j = 0; j+i <= 10; j++, i++) printf("%d\n", j+i); Inizializzazione, test e aggiornamento possono contenere espressioni aritmetiche. Esempio: for (j = x; j <= 4*x*y; j += y/x) Se il test di terminazione è inizialmente falso: Il blocco del costrutto for non viene eseguito; Il controllo passa all istruzione successiva al blocco del for. 16

Comandi break e continue Break causa l uscita immediata da un while, for, do/while o switch l esecuzione continua con la prima istruzione seguente al blocco che contiene il comando break; Continue Salta le istruzioni restanti all interno del blocco di un while, for, do/while; Procede alla successiva iterazione del ciclo: while e do/while: il test di continuazione viene valutato immediatamente dopo l esecuzione di continue. for: viene valutata l espressione di aggiornamento, quindi viene valutato il test di continuazione. 17

Esempi di uso di Break e Continue for (i = 0; i < 100; i++) { if (condizione(i)) break; //se condizione(i) e vera si esce //forzatamente dal ciclo for istruzioni; } ----------------------------- for (i = 0; i < 100; i++) { } if (condizione(i)) continue; istruzioni; //se condizione(i) e vera si passa di //nuovo il comando all istruzione for //per una nuova iterazione 18

Costrutto di selezione switch Controlla se una variabile assume un valore all interno di un certo insieme di costanti intere e di espressioni costanti; Formato: switch (var){ case '1': ; break; case '2': ; break; default: ; break; } Se var (int o char) assume uno dei valori contemplati, il programma esegue le azioni associate a quel caso (case) particolare (default è il caso eseguito quando nessuna delle condizioni è verificata); I break garantiscono l esclusività dei casi, altrimenti si eseguirebbero tutte le azioni a partire da quella corrispondente al caso verificato; 19