Università degli Studi di Ferrara

Documenti analoghi
Università degli Studi di Ferrara

Qualsiasi programma in C++ segue lo schema:

Università degli Studi di Ferrara

Università degli Studi di Ferrara

Università degli Studi di Ferrara

Prof. Pagani Corrado INTRODUZIONE AL LINGUAGGIO C

Introduzione al C. Lez. 1 Elementi. Rossano Venturini

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

del Linguaggio C Istruzioni di iterazione

Università degli Studi di Ferrara

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

Struttura di un. Struttura dei programmi C

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

Lezione 5 e 6. Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza. Valentina Ciriani ( ) Laboratorio di programmazione

Istruzioni di Controllo

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

INFORMATICA. Strutture iterative

Università degli Studi di Ferrara

Istruzioni iterative (o cicliche)

Fondamenti di Informatica A. A. 2018/19

Il primo programma C++

IL COSTRUTTO ITERAZIONE

Programmazione C Massimo Callisto De Donato

Assegnazione di una variabile

Sunto della scorsa lezione Il linguaggio C. Un Programma con Errori. Il preprocessore. Linguaggi di Programmazione I.

STRUTTURE DI CONTROLLO IN C. Docente: Giorgio Giacinto AA 2009/2010

LINGUAGGI DI PROGRAMMAZIONE

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

Informatica 2 modulo C Massimo Callisto De Donato

Università degli Studi di Ferrara Corso di Laurea in Chimica - A.A

Algoritmi e basi del C

Istruzioni. Istruzioni semplici Istruzioni di controllo. Fondamenti di Informatica e laboratorio Istruzioni e Controllo del flusso

Università degli Studi di Milano

Algoritmi e basi del C

Introduzione al C. Lezione 1 Elementi. Rossano Venturini. Pagina web del corso

Iterazione indeterminata

2 Operatori matematici e costrutto if

Algoritmi e basi del C Struttura di un programma

Iterazione A. Ferrari

Elementi di Informatica A. A. 2016/2017

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C

Lezione 6 Introduzione al C++ Mauro Piccolo

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Istruzioni di Ciclo. Unità 4. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Flusso logico di un programma

Paolo Bison. Fondamenti di Informatica Ingegneria Meccanica Università di Padova A.A. 2008/09

Introduzione alla programmazione in C

STRUTTURE DI CONTROLLO DEL C++

Laboratorio di Informatica I

Laboratorio di Programmazione

L assegnamento. Andrea Marin. a.a. 2011/2012. Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time

Introduzione al C. Lez. 1 Elementi. Rossano Venturini

Dott. R. Gori, Dott. A. Rama INFORMATICA 242AA a.a. 2011/12 pag. 1. Le istruzioni iterative permettono di ripetere determinate azioni più volte:

PROGRAMMA = ALGORITMO

Variabili e input/ Alessandra Giordani Lunedì 18 marzo

I cicli. Iterazioni Calcolo della media Istruzioni break e continue

Algoritmi e basi del C Struttura di un programma

Cast implicito. Il cast è fatto automaticamente quando un tipo più basso viene assegnato ad un tipo più alto. byte short int long float double

Linguaggio C - sezione dichiarativa: costanti e variabili

IL COSTRUTTO ITERAZIONE

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

Flow-chart. Introduzione agli algoritmi e ai diagrammi a blocchi.

Laboratorio di informatica Ingegneria meccanica

Laboratorio di Informatica I

Istruzioni iterative. Istruzioni iterative

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

Corso Programmazione

Fondamenti di Informatica T-1

Istruzioni di controllo

Fondamenti di Informatica T-1. Selezione

C: primi elementi. Lezione 4

Le strutture di controllo

direttive del preprocessore simboli speciali parole chiave identificatori costanti

Corso di Informatica

Linguaggio C: Espressioni

Programmazione Procedurale in Linguaggio C++

liceo B. Russell PROGRAMMAZIONE INDIRIZZO: SCIENTIFICO SCIENZE APPLICATE BIENNIO: SECONDA DISCIPLINA: INFORMATICA

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2009/2010

Istruzioni. Una istruzione semplice è qualsiasi espressione seguita da un punto e virgola. Esempio x = 0; y = 1;/* due istruzioni */

Università degli Studi di Ferrara

Introduzione al C. Lez. 1 Elementi

Tipi di dato primitivi

ISTRUZIONI ISTRUZIONI SEMPLICI

Programmazione in Java (I modulo)

Esercitazione 2. Espressioni booleane Il comando if-else

Laboratorio di Informatica I

SECONDA ESPERIENZA DI LABORATORIO. Programmazione con controllo di flusso IF e WHILE

Programmazione Procedurale in Linguaggio C++

Dichiarazione di variabili

Java SE 7. Strutture di programmazione (2)

Linguaggio C Strutture di controllo

Ing. Lorenzo Vismara

TERZA ESPERIENZA DI LABORATORIO. Programmazione con controllo di flusso FOR e SWITCH

Introduzione alla programmazione. Alice Pavarani

Prof. Pagani Corrado LINGUAGGIO C: SELEZIONE E CICLI

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

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

Transcript:

Università degli Studi di Ferrara Corso di Laurea in Matematica - A.A. 2018-2019 Programmazione Lezione 5 Controllo di Flusso Docente: Michele Ferrari - michele.ferrari@unife.it

Informazioni Inizio tutorato didattico mercoledì 13 Marzo ore 16.00 aula A1 Docente di supporto alla didattica: Serena Crisci serena.crisci@unife.it Tutor didattico: Gloria Morbidelli gloria.morbidelli@student.unife.it

Nelle lezioni precedenti Il linguaggio C nasce come linguaggio di alto (ma non troppo) livello negli 70 ad opera di Dennis Ritchie E uno dei linguaggio di programmazione più diffusi ed ha generato derivati massivamente utilizzati nella produzione dei software moderni Statico Non garbage collected Mutabile Procedurale Strutturato Codifica di un programma C: editing compilazione esecuzione Le variabili: porzioni di memoria a cui viene assegnato un nome ed un tipo La funzione main: punto di partenza per l esecuzione del programma Output di un programma: la funzione printf Michele Ferrari - michele.ferrari@unife.it 3

In questa lezione Costanti in C Operatori Operatori Logici Funzione scanf() Selezione in C Iterazione in C Michele Ferrari - michele.ferrari@unife.it 4

Ripasso: Variabili - Dichiarazione Il linguaggio C è un linguaggio tipizzato, per questo motivo, prima di utilizzare una variabile è necessario dichiarare che intendiamo utilizzarla attraverso un'operazione detta dichiarazione della variabile Con l operazione di dichiarazione della variabile, definiamo il suo nome ed anche il suo tipo. La sintassi per dichiarare una variabile è la seguente: <tipo-variabile> <nome-variabile>; Michele Ferrari - michele.ferrari@unife.it 5

Ripasso: Variabili - Tipi di Dato Int (e.g. 5) Float (e.g. 3.4) Double (e.g. 3.5678890) Char (e.g. m) Nella realtà queste dimensioni sono fortemente dipendenti dalla architettura, e sono definite nel file limits.h in cui sono definiti i valori massimi e minimi per ogni tipo di dato. Michele Ferrari - michele.ferrari@unife.it 6

Costanti Una costante è del tutto simile ad una variabile, ovvero è uno spazio di memoria identificato da un tipo e da un nome, come però suggerisce il nome la costante è immutabile: il suo valore non cambia. Per utilizzare una costante si dichiara una variabile e la si rende costante contestualmente alla dichiarazione, ovvero si aggiunge alla dichiarazione della variabile il modificatore const: Ad esempio: const <tipo> <nome> = <valore>; const float pi = 3.14; Il compilatore segnalerà come illegale qualsiasi tentativo di modificare il valore di una costante, pertanto ogni costante dichiarata con il modificatore const deve essere inizializzata contestualmente alla dichiarazione. Michele Ferrari - michele.ferrari@unife.it 7

Costanti Nel linguaggio C, esiste un altro modo di definire un valore costante, attraverso la direttiva al precompilatore #define: #define <stringa> <stringa-di-sostituzione> Non ha tipo, perché questa è una direttiva del precompilatore che provvederà a sostituire in tutto il nostro codice ogni occorrenza di stringa con il valore di sostituzione. Alcuni esempi comuni: #define TRUE 1 #define FALSE 0 #define pi 0.314 Michele Ferrari - michele.ferrari@unife.it 8

Costanti Quando vengono utilizzate? Le costanti sono un ottimo strumento per parametrizzare il codice: si può modificare il valore di ogni ricorrenza di una costante nel codice modificando una sola riga Le costanti posso anche aiutare a migliorare la leggibilità Michele Ferrari - michele.ferrari@unife.it 9

Gli operatori In C (e in molti linguaggi) vengono comunemente utilizzati simboli per richiamare alcune operazioni fondamentali, questi vengono detti operatori. Michele Ferrari - michele.ferrari@unife.it 10

Operatori Simbolo Operazione + addizione - sottrazione * moltiplicazione / divisione intera % modulo Michele Ferrari - michele.ferrari@unife.it 11 esempio operatori

Operatore di incremento Ricordiamo che: Gli accumulatori, nel linguaggio della programmazione sono variabili nelle quali il nuovo valore non sostituisce il valore precedente, ma si somma (accumula) a quello già presente. Se all accumulatore viene passata la seguente sequenza: 1, 2, 3, 4 Allora l accumulatore assumerà i seguenti valori* : 1, 3, 6, 10 Se il valore di incremento dell accumulatore resta costante di una unità, allora otteniamo un Contatore * Supponendo che il contatore sia inizializzato a 0 Michele Ferrari - michele.ferrari@unife.it 12

Operatore di incremento In ambito di programmazione si fa massivo utilizzo di accumulatori e contatori, per agevolarne l implementazione in C è presente un set di operatori appositi, il più comune dei quali è ++ Michele Ferrari - michele.ferrari@unife.it 13

Operatore di incremento Si tratta di un operatore speciale per incrementare una variabile di una unità. Scrivere: equivale a scrivere: count++; count = count +1; L'operatore ++ è pertanto l'operatore di auto incremento. Michele Ferrari - michele.ferrari@unife.it 14

Operatore di decremento Analogamente è possibile utilizzare l operatore speciale -- Scrivere Equivale a scrivere count--; count = count-1; L operatore -- è pertanto l operatore di auto decremento Michele Ferrari - michele.ferrari@unife.it 15

Pre e Post incremento L operatore di autoincremento può essere posizionato prima (pre) o dopo (post) la variabile: count++; ++count; La posizione dell operatore rispetto alla variabile ha la sua importanza anche se in generale le 2 forme sono equivalenti: bisogna fare attenzione a come lo si usa nelle istruzioni di assegnamento Post Incremento: int count, result; count = 0; result = count++; In questo caso al termine di esecuzione, count assumerà il valore 1 mentre result avrà il valore 0. In altri termini l operazione di incremento avviene DOPO l operazione di assegnazione Pre Incremento: int count, result; count = 0; result = ++count; In questo caso al termine di esecuzione, sia count che result avranno il valore 1. In altri termini l operazione di incremento avviene PRIMA dell operazione di assegnazione Michele Ferrari - michele.ferrari@unife.it 16

Operatore di incremento con valore arbitrario Se volessimo incrementare il contatore di un valore arbitrario possiamo utilizzare l operatore += Scrivere: equivale a scrivere: count += 2; count = count +2; L'operatore += è pertanto l operatore di assegnazione in quanto ha il compito di sommare il valore alla sua destra alla variabile alla sua sinistra: km += 37; k1 += k2; a += (b/2); Michele Ferrari - michele.ferrari@unife.it 17

Operatori di assegnazione Analoghi a quello appena visto esistono diversi operatori di assegnazione, in modo da poter utilizzare sostanzialmente tutti gli operatori aritmetici: += -= *= /= Michele Ferrari - michele.ferrari@unife.it 18

Funzione scanf() Abbiamo visto come la funzione printf() venga utilizzata per visualizzare il valore contenuto nelle variabili a schermo (standard output) Analogamente è possibile acquisire da standard input (l utente e la sua tastiera) il valore di una variabile, per fare questo si utilizza la funzione scanf() Michele Ferrari - michele.ferrari@unife.it 19

Funzione scanf() La funzione scanf() interrompe il flusso del programma e attende che l utente inserisca un valore da tastiera. Utilizzo: int base; printf( Indica il valore per la base: ); scanf( %d, &base); Il simbolo & prima del nome della variabile è l operatore di referenziazione e indica che il valore letto va memorizzato nell area di memoria identificata dal nome base In questo esempio scanf() legge un valore inserito da tastiera, lo converte in intero poiché abbiamo indicato %d e lo memorizza nello spazio di memoria &base, ovvero lo spazio di memoria che viene richiamato quando utilizzeremo il nome della variabile (base) nelle successive operazioni Michele Ferrari - michele.ferrari@unife.it 20 esempio scanf

Operatore di confronto L operatore == è l operatore di confronto Restituisce il valore logico TRUE (1) se il valore dell espressione che sta alla destra dell operatore è uguale al valore dell espressione che sta alla sua sinistra Restituisce il valore logico FALSE (0) se il valore dell espressione che sta alla destra dell operatore è diverso dal valore dell espressione che sta alla sua sinistra espressione1 == espressione2 x==y (5+3)==(6+2) Michele Ferrari - michele.ferrari@unife.it 21

Operatori Logici Simbolo Sintassi Significato!!a NOT logico > a>b maggiore < a<b minore >= a>=b maggiore/uguale <= a<=b minore/uguale == a==b uguale!= a!=b diverso Michele Ferrari - michele.ferrari@unife.it 22

Prodotto logico (AND) a b a b 0 0 0 0 1 0 1 0 0 1 1 1 Michele Ferrari - michele.ferrari@unife.it 23

Somma logica (OR) a b a+b 0 0 0 0 1 1 1 0 1 1 1 1 Michele Ferrari - michele.ferrari@unife.it 24

Selezione in C Ricordiamo: Secondo i dettami della programmazione strutturata un buon algoritmo viene espresso in forma di sequenza selezione iterazione Selezione: permette di scegliere fra due alternative la sequenza di esecuzione Michele Ferrari - michele.ferrari@unife.it 25

Selezione in C: costrutto if() La selezione in C viene implementata dal costrutto if() Sintassi: if (condizione) { // istruzioni } // istruzioni La condizione deve essere una espressione logica (restituire vero o falso) e.g. a == b a < b b > 5 ecc.. Michele Ferrari - michele.ferrari@unife.it 26

Selezione in C: costrutto if() E possibile utilizzare gli operatori logici per mettere in relazione più condizioni Operatore AND ( && ) Sintassi if(condizione1 && condizione2){ // istruzioni } Operatore OR ( ) Sintassi if(condizione1 condizione2){ // istruzioni } Michele Ferrari - michele.ferrari@unife.it 27

Selezione in C: costrutto if() Nel caso volessimo distinguere due casi mutuamente esclusivi possiamo integrare il costrutto if() con il ramo else Sintassi: if (condizione) { // istruzioni } else { // istruzioni } In questo caso i due blocchi di istruzioni vengono eseguiti in maniera alternativa l uno all altro dipendentemente dalla condizione Michele Ferrari - michele.ferrari@unife.it 28

Selezione multipla - else if Se volessimo implementare una scelta multipla possiamo sfruttare la possibilità di concatenare diversi costrutti else if Sintassi if (condizione1) { // istruzioni } else if (condizione2) { // istruzioni } [...] Michele Ferrari - michele.ferrari@unife.it 29

Iterazione in C Ricordiamo: Secondo i dettami della programmazione strutturata un buon algoritmo viene espresso in forma di sequenza selezione iterazione Iterazione: permette di ripetere più volte la stessa sequenza fino al verificarsi di una condizione Michele Ferrari - michele.ferrari@unife.it 30

Iterazione in C: i cicli Sono strutture fondamentali utilizzate per ripetere istruzioni su insiemi di dati diversi I linguaggi di programmazione mettono a disposizione vari tipi di cicli per adattarsi alle varie situazioni, in C esistono: ciclo while-do ciclo do-while ciclo for Michele Ferrari - michele.ferrari@unife.it 31

Il Ciclo While - do Ciclo iterativo con controllo in testa while (condizione) { } // istruzione 1.Viene valutata la condizione 2. Se la condizione risulta essere vera, vengono eseguite le istruzioni contenute nel ciclo 3.Si ritorna al punto 1 L istruzione viene eseguita se e finché la condizione risulta essere vera Michele Ferrari - michele.ferrari@unife.it 32

Il Ciclo While - do Esempio: int i=0; while (i<10) { printf( %d, i); i++; } Per eseguire più istruzioni all interno di un ciclo o di una selezione è necessario racchiuderle all interno di un blocco {} Nota: Se l istruzione è unica, in C possiamo omettere le parentesi Michele Ferrari - michele.ferrari@unife.it 33 Esempio while

Il Ciclo do - While Ciclo iterativo con controllo in coda do { //istruzioni } while (condizione); 1.Vengono eseguite le istruzioni 2.Verifica della condizione 3.SE vera si riprende dal punto 1, SE falsa si esce dal ciclo Anche in questo caso l istruzione viene eseguita finché la condizione risulta essere vera. A differenza del ciclo while-do siamo però sicuri che le istruzioni interne al ciclo vengano eseguite almeno una volta Michele Ferrari - michele.ferrari@unife.it 34

Il Ciclo For Il ciclo For viene generalmente utilizzato quando si desidera realizzare un ciclo a contatore, ovvero quando necessitiamo che un insieme di istruzioni venga ripetuto un determinato numero di volte Sintassi for (inizializzazione; condizione; assegnamento){ } // istruzioni 1.Viene eseguita l inizializzazione 2.Viene valutata la condizione 3.Se la condizione risulta essere vera vengono eseguite le istruzioni all interno del ciclo 4.Dopo l esecuzione delle istruzioni viene eseguito l assegnamento (incremento, nella maggior parte dei casi) 5.Si procede dal punto 2 Michele Ferrari - michele.ferrari@unife.it 35

Il Ciclo For Esempio: int i; for (i=0; i<10; i++) { printf( %d, i); } Michele Ferrari - michele.ferrari@unife.it 36 esempio for

Hello, world! Begin Visualizza Hello, world! end Michele Ferrari - michele.ferrari@unife.it 37

Grazie per l attenzione Michele Ferrari - michele.ferrari@unife.it 38

Riferimenti Il corso di programmazione per il primo anno della Laurea Triennale in Matematica nasce con l'intento di unire ai principi di programmazione una conoscenza basilare di uno degli strumenti software più diffusi nell'ambito matematico: Matlab. La prima parte del corso pertanto è una rielaborazione del programma di Programmazione per la Laurea Triennale in Informatica 15/16 (in particolare) e 16/17. Parte del materiale originale da cui ho ricavato il percorso didattico, alcuni approfondimenti ed integrazioni possono essere trovati in: Lezioni di Programmazione 15/16 CdS Informatica - Giacomo Piva Lezioni di Programmazione 16/17 CdS Informatica - Marco Alberti Michele Ferrari - michele.ferrari@unife.it 39