Lezione 9 – A.A. 2016/2017 Prof. Giovanni Acampora

Slides:



Advertisements
Presentazioni simili
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità F2 Selezione.
Advertisements

Selezione - approfondimento
PHP.
Introduzione al linguaggio C
INFORMATICA Strutture iterative
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
APPUNTI SUL LINGUAGGIO C
Fondamenti di Informatica I a.a Il linguaggio C Il controllo di flusso La selezione condizionale Listruzione switch I cicli Le istruzioni break,
Politecnico di Milano Esercizi Preparazione alla prima prova intermedia.
Anno accademico Le istruzioni di controllo in C.
Informatica B Allievi Elettrici - AA Fondamenti della programmazione in linguaggio C (II) Istruzioni e strutture di controllo.
13 ottobre Decisioni F. Bombi 13 ottobre 2002.
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Copyright © Istituto Italiano Edizioni Atlas
Informatica B Allievi Elettrici - AA Fondamenti della programmazione in linguaggio C (III)
Linguaggio C: Funzioni e Puntatori Laboratorio di Programmazione Gruppo 1.
7. Strutture di controllo Ing. Simona Colucci Informatica - CDL in Ingegneria Industriale- A.A
Programmazione: Iterazione Esistono tre tipi di iterazione fondamentali e vedremo la corrispondenza dei relativi diagrammi a blocchi e la loro traduzione.
1 Elementi DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Linguaggio C A.A. 2011/2012
Parte 2 Programmare in Matlab – I Sommario: Introduzione: m-file Strutture condizionali e cicli –Istruzione “if” + Operatori logici in MatlabIstruzione.
Un semplice programma C /* Programma che stampa un saluto */ #include main() { printf(“Hello World!\n”); }
© 2007 SEI-Società Editrice Internazionale, Apogeo
Linguaggio C: strutture di controllo
DAL DIAGRAMMA AL CODICE
Introduzione al linguaggio C
7. Strutture di controllo Ing. Simona Colucci
IL CONCETTO DI ALGORITMO
SWITCH – CASE LINGUAGGIO C.
7. Strutture di controllo
Strutture di controllo
Programmazione strutturata
PROGRAMMAZIONE BASH – ISTRUZIONE IF
CICLO DO – WHILE LINGUAGGIO C.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Operatore condizionale
Java World Cicli e Array.
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Corso Java Cicli e Array.
Linguaggio C++ Selezione.
© 2007 SEI-Società Editrice Internazionale, Apogeo
Strutture di Controllo
Secondo Programma in C.
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Fondamenti di Informatica
Ricorsione 16/01/2019 package.
© 2007 SEI-Società Editrice Internazionale, Apogeo
Programmazione e Laboratorio di Programmazione
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
APPUNTI SUL LINGUAGGIO C
Algoritmi e strutture dati APPUNTI SUL LINGUAGGIO C
La struttura dei primi programma in C
Le istruzioni di iterazione in C
Processi decisionali e funzioni di controllo
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Fondamenti di Informatica
Array Un array è un contenitore “contiene” al massimo un numero predefinito di oggetti dello stesso tipo. Ogni oggetto dell'array è detto “elemento” Ad.
Le istruzioni di selezione condizionale in C
Lezione Terza Primi passi di programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Ricerca 01/08/2019 package.
La programmazione strutturata
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Transcript della presentazione:

Lezione 9 – A.A. 2016/2017 Prof. Giovanni Acampora Informatica Informatica - A.A. 2016-2017 Lezione 9 – A.A. 2016/2017 Prof. Giovanni Acampora

Introduzione alla programmazione in linguaggio C Strutture condizionali Strutture iterative Informatica - A.A. 2016-2017

Strutture condizionali I costrutti usati per esprimere una decisione in C sono due: Il costrutto if - else ( e else-if) Il costrutto switch Informatica - A.A. 2016-2017

Il costrutto if ....... double a, b, max_ab; ......... scanf(“%lf %lf”, &a, &b); if(a > b){ max_ab = a; printf(“Il massimo vale %f”, a); } Informatica - A.A. 2016-2017

Il costrutto if –else (I) if (a>b) { max_ab = a; printf(“Il massimo vale %f”,a); } else max_ab = b; printf(“Il massimo vale %f”,b); scanf(“%lf %lf”, &a, &b); Indentazione Informatica - A.A. 2016-2017

Il costrutto else if Quando la scelta è fra più di due alternative il costrutto if-else può essere esteso utilizzando il costrutto else if : if (n>0) { printf(“n è positivo”); } else if (n=0) printf(“n è nullo”); else printf(“n è negativo”); Le alternative vengono esaminate in sequenza, e l’ultimo else (opzionale) corrisponde alla scelta “nessuna delle precedenti”. Informatica - A.A. 2016-2017

Il costrutto switch (I) Viene usato per una scelta multipla fra un insieme di costanti : switch (nBusta){ case 1: printf(“Hai scelto la busta numero 1”); break; case 2: printf(“Hai scelto la busta numero 2”); case 3: printf(“Hai scelto la busta numero 3”); default: printf(“Non hai scelto una busta valida”); } Informatica - A.A. 2016-2017

Il costrutto switch (II) scanf(“%c”,&carattere_letto); switch (carattere_letto){ case ‘a’: case ’e’ : case ‘i’ : case ‘o’: case ’u’: printf(“Hai scritto una vocale”); break; default: printf(“Hai scritto una consonante”); } Informatica - A.A. 2016-2017

Strutture iterative L’ultimo elemento da considerare per poter implementare qualsiasi algoritmo sono le strutture iterative. In C esse sono, essenzialmente: Ciclo while Ciclo for Ciclo do-while Informatica - A.A. 2016-2017

Ciclo while La condizione di controllo viene verificata prima di eseguire qualunque istruzione: il ciclo potrebbe non venire mai eseguito. somma = 0; i = 0; while(i <= 100){ somma = somma + i; i++; } printf(“\n Somma = %d\n”,somma); Informatica - A.A. 2016-2017

Ciclo for La condizione di controllo viene verificata prima di eseguire qualunque istruzione: il ciclo potrebbe non venire mai eseguito. somma = 0; for(i = 0; i <= 100; i++){ somma = somma + i; } printf(“\nSomma = %d\n”,somma); Informatica - A.A. 2016-2017

Ciclo do while La condizione di controllo viene verificata dopo che il ciclo è stato eseguito almeno una volta. do{ scanf(“%c”,&inputchar); printf(“Hai digitato %c\n”,inputchar); } while( inputchar !=‘q’ ) Informatica - A.A. 2016-2017

break e continue Talvolta può essere utile uscire da un ciclo senza controllare, all’inizio o alla fine dell’iterazione, la condizione di terminazione. L’istruzione break provoca l’uscita incondizionata da un for, un while oppure un do, così come consente di uscire da uno switch. L’istruzione continue è simile al break ma forza l’inizio della successiva iterazione di un for, un while oppure un do: essa cioè provoca l’immediata esecuzione della parte di controllo del ciclo. Informatica - A.A. 2016-2017

Esempio #include <stdio.h> int main(){ int i, k; for(i = 0; ; i++){ printf(“\n Dammi un numero intero: ”); scanf(“%d”, &k); if(k == -1) break; printf(“\n %d”, k); } printf(“\nHai inserito %d numeri ”, i); return 0; Informatica - A.A. 2016-2017

Esempio int main(){ int i, k, n = 0; for(i = 0; ; i++){ printf(“\n Dammi un numero intero: ”); scanf(“%d”, &k); if(k == 0){ printf(“\nZero non permesso\n”); continue; //ritorna alla testa del ciclo senza eseguire il resto del corpo } if(k == -1) break; //esce dal ciclo printf(“\n %d”, k); n++; printf(“\nHai inserito %d numeri ”, n); return 0; Informatica - A.A. 2016-2017

Esempio #include <stdio.h> int main(){ int i, k, n = 0; for(i = 0; ; i++){ printf(“\n Dammi un numero intero: ”); scanf(“%d”, &k); // if(k == 0) continue; if(k == -1) break; printf(“\n %d”, k); n++; } printf(“\nHai inserito %d numeri ”, n); return 0; Informatica - A.A. 2016-2017

Esempio for(i = n-1; i >= 2; i--){ resto = n%i; if(resto == 0) break; } if(i==2) printf(“%d è un numero primo”, n); else printf(“%d non è un numero primo”, n); Informatica - A.A. 2016-2017

Esempio: area di un cerchio /* programma per il calcolo dell’area di un cerchio */ #include<stdio.h> int main(){ float raggio, area; printf(“\n Dammi il raggio [cm]: ”); scanf(“%f”,&raggio); area = 3.14159 * raggio * raggio; printf(“\n Area = %f ”, area); return 0; } Informatica - A.A. 2016-2017

Uso di una funzione function prototype o function declaration #include<stdio.h> float CircleArea(float Radius); int main(){ float raggio, area; printf(“\n Dammi il raggio [cm]: ”); scanf(“%f”, &raggio); area = CircleArea(raggio); printf(“\n Area = %f ”, area); return 0; } float CircleArea(float Radius){ const float PI = 3.14159; float a; a = PI * Radius * Radius; return (a); function prototype o function declaration function definition Informatica - A.A. 2016-2017

. . continua con Error Checking nel main #include<stdio.h> float CircleArea(float Radius); int main(){ float raggio, area; printf(“\n Dammi il raggio [cm]: ”); scanf(“%f”, &raggio); if(raggio < 0) area = 0.; else area = CircleArea(raggio); printf(“\n Area = %f ”, area); return 0; } Informatica - A.A. 2016-2017

. . continua con Error Checking nella funzione float CircleArea(float Radius){ const float PI = 3.14159; float a; if( Radius < 0) return 0.; a = PI * Radius * Radius; return (a); } float CircleArea(float Radius){ const float PI = 3.14159; float a; a = ( Radius < 0. )? 0.: PI*Radius*Radius; return (a); } Informatica - A.A. 2016-2017

Operatore Condizionale: ?: espressione1 ? espressione2 : espressione 3; Viene prima valutata l’espressione1; se risulta vera, viene valutata l’espressione2 il cui valore diviene il valore della espressione condizionale. Se invece l’espressione1 risulta falsa, l’espressione3 viene valutata ed il suo valore diviene il valore dell’espressione condizionale. if(a > b) max = a; else max = b; max = (a > b)? a: b; Informatica - A.A. 2016-2017

Area di diversi cerchi #include<stdio.h> float CircleArea(float Radius); int main(){ int i, n; float raggio; printf(“\n Quanti cerchi? ”); scanf(“%d”,&n); for(i = 0 ; i < n ; i++){ printf(“\n Cerchio no. %d: Raggio ? “, i+1); scanf(“%f”,&raggio); printf(“\n Area = %f ”, CircleArea(raggio)); } return 0; Informatica - A.A. 2016-2017

Area di un numero imprecisato di cerchi (I) int main(){ int i; float raggio; printf(“\n Enter 0 to QUIT.”); printf(“\n Radius ? ”); scanf(“%f”, &raggio); for(i = 0 ; raggio != 0. ; i++){ printf(“\n Area = %f ”, CircleArea(raggio)); printf(“\n Radius ? “); scanf(“%f”,&raggio); } return 0; Informatica - A.A. 2016-2017

Area di un numero imprecisato di cerchi (II) int main(){ float raggio; printf(“\n Enter 0 to QUIT.”); printf(“\n Radius ? ”); scanf(“%f”, &raggio); while(raggio != 0){ printf(“\n Area = %f ”, CircleArea(raggio)); printf(“\n Radius ? “); scanf(“%f”,&raggio); } return 0; Informatica - A.A. 2016-2017

. . . nota che while(raggio != 0) while(raggio) Nel C, qualunque numero diverso da zero e’ interpretato come valore logico vero, e lo zero come valore logico falso. Le due espressioni seguenti sono pertanto equivalenti: while(raggio != 0) while(raggio) Informatica - A.A. 2016-2017

Area di un numero imprecisato di cerchi (III) int main(){ float raggio; printf(“\n Enter 0 to QUIT.”); do{ printf(“\n Radius ? “); scanf(“%f”, &raggio); printf(“\n Area = %f ”, CircleArea(raggio)); } while(raggio != 0) return 0; } Informatica - A.A. 2016-2017

. . . . un’altra variante In alcuni casi e’ necessario conservare un insieme di valori “omogenei” calcolati in sequenza. Il C consente l’uso degli array (vettori): int main(){ int i = -1, n = 0; float raggio[100], area[100]; printf(“\n Enter 0 to QUIT.”); do{ i++; printf(“\n Radius ? “); scanf(“%f”, &raggio[i]); area[i] = CircleArea(raggio[i]); } while( raggio[i] != 0) . . . . Informatica - A.A. 2016-2017

. . . .continua . . . . . n = i; for(i = 0; i < n; i++){ printf(“\n Radius = %f, Area = %f”, raggio[i], area[i]); } return 0; Reminder: se un array e’ composto di n elementi, l’indice degli elementi dell’array corre da 0 a n-1. Attenzione: che succede se i > 99? E’ necessario includere anche un controllo sul numero massimo di cerchi: i non puo’ superare il valore 99!! Informatica - A.A. 2016-2017

. . . un’altra variante con error checking int main(){ int i = -1, n = 0; float raggio[100], area[100]; printf(“\n Enter 0 to QUIT.”); do{ i++; printf(“\n Radius ? “); scanf(“%f”, &raggio[i]); area[i] = CircleArea( raggio[i] ); } while( (raggio[i] != 0) && (i < 100) ) . . . . Il controllo sull’indice i non e’ pero’ comprensibile all’utente del programma (che non conosce il codice sorgente) Informatica - A.A. 2016-2017

. . . un’altra variante con error checking int main(){ int i = -1, n = 0; float raggio[100], area[100]; printf(“\n Enter 0 to QUIT.”); do{ i++; if(i > 99) { printf(“\nhai esaurito la memoria\n”); break; } printf(“\n Radius ? “); scanf(“%f”, &raggio[i]); area[i] = CircleArea(raggio[i]); } while( raggio[i] != 0) . . . . Informatica - A.A. 2016-2017

Area di un numero imprecisato di rettangoli(I) double RectArea( double w, double h); int main(){ double width, height; printf(“\n Enter 0 to QUIT.”); do{ printf(“\n Width, Height [cm] ? “); scanf(“%lf %lf”, &width, &height); printf(“\n Area = %lf ”, RectArea(width, height)); } while(width != 0) return 0; } Informatica - A.A. 2016-2017

Che controlli si dovrebbero fare in questa funzione? double RectArea( double w, double h ) { return w * h; } Che controlli si dovrebbero fare in questa funzione? Informatica - A.A. 2016-2017