Elementi di Informatica e Programmazione PROGRAMMAZIONE...
Transcript of Elementi di Informatica e Programmazione PROGRAMMAZIONE...
![Page 1: Elementi di Informatica e Programmazione PROGRAMMAZIONE …didattica-saetti.unibs.it/didattica/contenuti/EIP/lucidi/3-Program... · Docente: A. Saetti Elementi di Informatica e Programmazione](https://reader031.fdocument.pub/reader031/viewer/2022021715/5c663e7609d3f2d12a8bff7e/html5/thumbnails/1.jpg)
1 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
Elementi di Informatica e Programmazione - Dispensa III -
PROGRAMMAZIONE C (Parte I)
Alessandro Saetti (email: [email protected])
Università degli Studi di Brescia A.A. 2018/2019
2 A.A. 2018/2019
Linguaggi di Programmazione
• Basso livello di astrazione: – Linguaggio macchina
– Linguaggio assembly
• Alto livello di astrazione: – C, C++, Java, C#, Perl, Python, PhP, Javascript
Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
![Page 2: Elementi di Informatica e Programmazione PROGRAMMAZIONE …didattica-saetti.unibs.it/didattica/contenuti/EIP/lucidi/3-Program... · Docente: A. Saetti Elementi di Informatica e Programmazione](https://reader031.fdocument.pub/reader031/viewer/2022021715/5c663e7609d3f2d12a8bff7e/html5/thumbnails/2.jpg)
3 A.A. 2018/2019
Paradigma di programmazione • Imperativa: Ogni istruzioni corrisponde ad un ordine
impartito – Strutturata-Procedurale
– Orientata agli oggetti
• Funzionale: le istruzioni sono intese come specifiche strutture dati eseguibili
• Dichiarativo: si specifica cosa è il programma anziché cosa fa
Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
4 A.A. 2018/2019
Interpreti e Compilatori • Traduttore: Converte il codice di programmi scritti in
un linguaggio di programmazione nella corrispondente rappresentazione in linguaggio macchina
• Interprete: Traduce ed esegue il programma istruzione per istruzione
• Compilatore: Genera il programma in linguaggio macchina a partire dal codice del programma sorgente – Pre-elaborazione (preprocessing) – Traduzione – Collegamento (Linking)
Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
![Page 3: Elementi di Informatica e Programmazione PROGRAMMAZIONE …didattica-saetti.unibs.it/didattica/contenuti/EIP/lucidi/3-Program... · Docente: A. Saetti Elementi di Informatica e Programmazione](https://reader031.fdocument.pub/reader031/viewer/2022021715/5c663e7609d3f2d12a8bff7e/html5/thumbnails/3.jpg)
5 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
Sistemi di sviluppo integrati
/* Stampa a video una stringa */ #include <stdio.h> int main(void) { printf(�Cogito ergo sum.\n�); return 0; }
6 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
Dev-C++: Interfaccia utente
![Page 4: Elementi di Informatica e Programmazione PROGRAMMAZIONE …didattica-saetti.unibs.it/didattica/contenuti/EIP/lucidi/3-Program... · Docente: A. Saetti Elementi di Informatica e Programmazione](https://reader031.fdocument.pub/reader031/viewer/2022021715/5c663e7609d3f2d12a8bff7e/html5/thumbnails/4.jpg)
7 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
Dev-C++: Crea/apri file
8 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
Dev-C++: salva file
![Page 5: Elementi di Informatica e Programmazione PROGRAMMAZIONE …didattica-saetti.unibs.it/didattica/contenuti/EIP/lucidi/3-Program... · Docente: A. Saetti Elementi di Informatica e Programmazione](https://reader031.fdocument.pub/reader031/viewer/2022021715/5c663e7609d3f2d12a8bff7e/html5/thumbnails/5.jpg)
9 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
Dev-C++: Compila programma
10 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
Dev-C++: Correzione errori
![Page 6: Elementi di Informatica e Programmazione PROGRAMMAZIONE …didattica-saetti.unibs.it/didattica/contenuti/EIP/lucidi/3-Program... · Docente: A. Saetti Elementi di Informatica e Programmazione](https://reader031.fdocument.pub/reader031/viewer/2022021715/5c663e7609d3f2d12a8bff7e/html5/thumbnails/6.jpg)
11 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
Dev-C++: Esecuzione programma
12 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
Che voto gli dareste? #include <stdio.h>#include <stdlib.h> int main() {int n,max=0;printf("Inserisci numeri interi (0 per terminare):
\n"); do { printf("==> ");
scanf("%d",&n); if(n > max) max = n; } while(n > 0); printf("Il massimo valore immesso e': %d\n",max);
system("pause"); return(0); }
![Page 7: Elementi di Informatica e Programmazione PROGRAMMAZIONE …didattica-saetti.unibs.it/didattica/contenuti/EIP/lucidi/3-Program... · Docente: A. Saetti Elementi di Informatica e Programmazione](https://reader031.fdocument.pub/reader031/viewer/2022021715/5c663e7609d3f2d12a8bff7e/html5/thumbnails/7.jpg)
13 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
Regola di scrittura 1 #include <stdio.h> #include <stdlib.h> int main() { int n,max=0; printf("Inserisci numeri interi (0 per terminare):\n"); do { printf("==> "); scanf("%d",&n); if(n > max) max = n; } while(n > 0); printf("Il massimo valore immesso e': %d\n",max); system("pause"); return(0);}
14 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
Regola di scrittura 2 #include <stdio.h> #include <stdlib.h> int main() { int n,max=0; printf("Inserisci numeri interi (0 per terminare):\n"); do { printf("==> "); scanf("%d",&n); if(n > max) max = n; } while(n > 0); printf("Il massimo valore immesso e': %d\n",max); system("pause"); return(0);}
![Page 8: Elementi di Informatica e Programmazione PROGRAMMAZIONE …didattica-saetti.unibs.it/didattica/contenuti/EIP/lucidi/3-Program... · Docente: A. Saetti Elementi di Informatica e Programmazione](https://reader031.fdocument.pub/reader031/viewer/2022021715/5c663e7609d3f2d12a8bff7e/html5/thumbnails/8.jpg)
15 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
Regola di scrittura 3 #include <stdio.h> #include <stdlib.h> int main() { int n,max=0;
printf("Inserisci numeri interi (0 per terminare):\n"); do { printf("==> "); scanf("%d",&n); if(n > max) max = n; } while(n > 0); printf("Il massimo valore immesso e': %d\n",max); system("pause"); return(0);
}
16 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
Regola di scrittura 4.1 #include <stdio.h> #include <stdlib.h> int main() {
int n,max=0;
printf("Inserisci numeri interi (0 per terminare):\n"); do { printf("==> "); scanf("%d",&n); if(n > max) max = n; } while(n > 0); printf("Il massimo valore immesso e': %d\n",max); system("pause"); return(0);
}
![Page 9: Elementi di Informatica e Programmazione PROGRAMMAZIONE …didattica-saetti.unibs.it/didattica/contenuti/EIP/lucidi/3-Program... · Docente: A. Saetti Elementi di Informatica e Programmazione](https://reader031.fdocument.pub/reader031/viewer/2022021715/5c663e7609d3f2d12a8bff7e/html5/thumbnails/9.jpg)
17 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
Regola di scrittura 4.2 #include <stdio.h> #include <stdlib.h> int main() { int n,max=0; printf("Inserisci numeri interi (0 per terminare):\n"); do { printf("==> "); scanf("%d",&n); if(n > max) max = n; } while(n > 0); printf("Il massimo valore immesso e': %d\n",max); system("pause"); return(0);
}
18 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
Regola di scrittura 4.3 #include <stdio.h> #include <stdlib.h> int main() { int n,max=0;
printf("Inserisci numeri interi (0 per terminare):\n"); do { printf("==> "); scanf("%d",&n); if(n > max) max = n; } while(n > 0); printf("Il massimo valore immesso e': %d\n",max); system("pause"); return(0);
}
![Page 10: Elementi di Informatica e Programmazione PROGRAMMAZIONE …didattica-saetti.unibs.it/didattica/contenuti/EIP/lucidi/3-Program... · Docente: A. Saetti Elementi di Informatica e Programmazione](https://reader031.fdocument.pub/reader031/viewer/2022021715/5c663e7609d3f2d12a8bff7e/html5/thumbnails/10.jpg)
19 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
Uso dei commenti #include <stdio.h> #include <stdlib.h> /* Scopo: Calcolo del valore massimo * Input: -- * Output: 0 se il programma termina correttamente */ int main() {
int n,max=0;
printf("Inserisci numeri interi (0 per terminare):\n"); do { printf("==> "); scanf("%d",&n); if(n > max) max = n; } while(n > 0); printf("Il massimo valore immesso e': %d\n",max); system("pause"); return(0);
}
20 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
Commenti • /* Scopo: semplice programma * Autore: A. Saetti * Input: -- * Output: 0 se termina correttamente */
• /********************************************** * Scopo: semplice programma * * Autore: A. Saetti * * Input: -- * * Output: 0 se termina correttamente *
**********************************************/
![Page 11: Elementi di Informatica e Programmazione PROGRAMMAZIONE …didattica-saetti.unibs.it/didattica/contenuti/EIP/lucidi/3-Program... · Docente: A. Saetti Elementi di Informatica e Programmazione](https://reader031.fdocument.pub/reader031/viewer/2022021715/5c663e7609d3f2d12a8bff7e/html5/thumbnails/11.jpg)
21 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
Tipi di Dati Interi, Caratteri, Floating point
Tipo Bit Valore minimo Valore massimo short int unsigned short int int
unsigned int
long int
unsigned long int
16 16 32 32 32 32
-32.768 0
-231
0 -231
0
32.767 65.535 231-1 232-1
231-1
232-1 signed char unsigned char
8 8
-128 0
+127 255
Tipo Bit Valore minimo Valore massimo Precisione
float double
32 64
1.17549*10-38
2.22507*10-308
3.40282*1038
1.79769*10308
6 cifre 15 cifre
22 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
Astrazione sui Dati Operatore di assegnamento
int main(void) { short int i1, i2, i3 = 5, i4;
const float f1 = 1.25e1; float f2;
char c1 = '2'; f2 = 10.2; i1 = i2 = 10;
i4 = 32768; /* adesso i4 vale –32768 */ return 0;
}
![Page 12: Elementi di Informatica e Programmazione PROGRAMMAZIONE …didattica-saetti.unibs.it/didattica/contenuti/EIP/lucidi/3-Program... · Docente: A. Saetti Elementi di Informatica e Programmazione](https://reader031.fdocument.pub/reader031/viewer/2022021715/5c663e7609d3f2d12a8bff7e/html5/thumbnails/12.jpg)
23 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
Astrazione sui Dati Operatori aritmetici e di casting
Ø Operatore di casting: ( nome-del-tipo ) espressione
Unario Binario
Additivo Moltiplicativo
+ più unario + somma * moltiplicazione
– meno unario – sottrazione / divisione
% resto
24 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
Astrazione sui Dati Conversioni aritmetiche
int main(void) { char c; short int s; int i; float f; double d; long double ld;
s = s + c; /* c convertito al tipo short */ i = i + s; /* s convertito al tipo int */ f = f + i; /* i convertito al tipo float */ d = d + f; /* f convertito al tipo double*/ ld = ld + d; /* d convertito al tipo long double */ return 0;
}
![Page 13: Elementi di Informatica e Programmazione PROGRAMMAZIONE …didattica-saetti.unibs.it/didattica/contenuti/EIP/lucidi/3-Program... · Docente: A. Saetti Elementi di Informatica e Programmazione](https://reader031.fdocument.pub/reader031/viewer/2022021715/5c663e7609d3f2d12a8bff7e/html5/thumbnails/13.jpg)
25 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
Astrazione sui Dati Conversioni negli assegnamenti
int main(void) { char c; short int s; int i; float f; double d;
i = c; /* c convertito al tipo int */ f = i; /* i convertito al tipo float */ d = f; /* f convertito al tipo double */ i = 842.97 /* adesso i vale 842 */ return 0;
}
26 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
Astrazione sui Dati Conversioni di tipo esplicite: Casting
int main(void){ int parte_int; float numero_reale = 10.2, parte_fraz;
parte_int = (int)numero_reale; parte_fraz = numero_reale - parte_int; return(0); }
![Page 14: Elementi di Informatica e Programmazione PROGRAMMAZIONE …didattica-saetti.unibs.it/didattica/contenuti/EIP/lucidi/3-Program... · Docente: A. Saetti Elementi di Informatica e Programmazione](https://reader031.fdocument.pub/reader031/viewer/2022021715/5c663e7609d3f2d12a8bff7e/html5/thumbnails/14.jpg)
27 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
Astrazione sui Dati Conversioni di tipo esplicite: Casting
int main(void) { int dividendo = 100, divisore = 8, resto, quoz_intero;
float quoz_reale; quoz_intero = dividendo / divisore; resto = dividendo % divisore; quoz_reale = (float)dividendo/(float)divisore; return(0); }
28 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
Astrazione Procedurale Visualizzazione e acquisizione dati
• printf(stringa, espr1, espr2, …);
• scanf(stringa, &espr1, &espr2, …);
• Specifiche di conversione principali: – %d: stampa un dato intero o carattere in formato decimale – %f: stampa un dato floating point (float o double) – %Lf: stampa un dato floating point (long double) – %c: stampa un dato carattere – %s: stampa un dato stringa – %-αX: stampa un dato dedicando almeno α caratteri (indentato a sx) – %-α.βX: stampa un dato frazione con β cifre dopo la virgola
![Page 15: Elementi di Informatica e Programmazione PROGRAMMAZIONE …didattica-saetti.unibs.it/didattica/contenuti/EIP/lucidi/3-Program... · Docente: A. Saetti Elementi di Informatica e Programmazione](https://reader031.fdocument.pub/reader031/viewer/2022021715/5c663e7609d3f2d12a8bff7e/html5/thumbnails/15.jpg)
29 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
Astrazione Procedurale Chiamata a Funzioni: Stampa dati
#include <stdio.h>
int main(void) { int h1 = 10, h2 = 11; float x1;
x1=23.21; printf(�Ore %d: %f gradi\nOre %d: %9.2f gradi\n�, h1,
x1, h2, x1); printf(�Ore %d: %9.f gradi\n�, h2, x1);
return 0; }
Ore 10: 23.209999 gradi Ore 11: 23.21 gradi Ore 11: 23 gradi
30 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
Astrazione Procedurale Chiamata a Funzioni: Acquisizione dati
#include <stdio.h>
int main(void) { int i, j, num, den;
float x, y;
scanf(�%d%d%f%f�, &i, &j, &x, &y); scanf(�%d/%d�,&num,&den); return 0;
}
1–20 .3 –4.0e3↵
2/5↵
![Page 16: Elementi di Informatica e Programmazione PROGRAMMAZIONE …didattica-saetti.unibs.it/didattica/contenuti/EIP/lucidi/3-Program... · Docente: A. Saetti Elementi di Informatica e Programmazione](https://reader031.fdocument.pub/reader031/viewer/2022021715/5c663e7609d3f2d12a8bff7e/html5/thumbnails/16.jpg)
31 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
Astrazione Procedurale Chiamata a Funzioni: Acquisizione dati
#include <stdio.h>
int main(void) { char c1, c2; scanf(�%c�, &c1); fflush(stdin); scanf(�%c�, &c2); fflush(stdin); return 0;
}
A↵ B↵
32 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
Astrazione Procedurale Chiamata a Funzioni: Acquisizione dati
#include <stdio.h>
int main(void) { char c1, c2; scanf(��%c�, &c1); scanf(��%c�, &c2); return 0;
}
A↵ B↵
![Page 17: Elementi di Informatica e Programmazione PROGRAMMAZIONE …didattica-saetti.unibs.it/didattica/contenuti/EIP/lucidi/3-Program... · Docente: A. Saetti Elementi di Informatica e Programmazione](https://reader031.fdocument.pub/reader031/viewer/2022021715/5c663e7609d3f2d12a8bff7e/html5/thumbnails/17.jpg)
33 A.A. 2018/2019
Esercizi in Aula Scrivere dei programmi C per svolgere i seguenti compiti
• Acquisire da tastiera un reale e visualizzare la sua parte intera e frazionaria
• Acquisire da tastiera due numeri naturali. Si consideri gli interi acquisiti come il dividendo ed il divisore di una divisione. Visualizzare il quoziente intero, il resto ed il quoziente reale della divisione.
Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
34 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
Astrazione sul Controllo Operatori Logici e Relazionali
int main() { int op1 = 12, ris; char opc = 'H';
ris = op1 < 10 && op1 >= 5; ris = !(op1 < 10 && op1 >= 5); ris = op1 >= 10 || op1 < 5; ris = opc >= 'a' && opc <= 'z'; ris = (opc >= 'a' && opc <= 'z') || (opc >= 'A' && opc <= 'Z'); return 0; }
![Page 18: Elementi di Informatica e Programmazione PROGRAMMAZIONE …didattica-saetti.unibs.it/didattica/contenuti/EIP/lucidi/3-Program... · Docente: A. Saetti Elementi di Informatica e Programmazione](https://reader031.fdocument.pub/reader031/viewer/2022021715/5c663e7609d3f2d12a8bff7e/html5/thumbnails/18.jpg)
35 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
Astrazione sul Controllo Scelta semplice e a 2 vie
if (espressione) istruzione;
if (espressione) {
… /* blocco di istruzioni */
}
if (espressione) istruzione1; else istruzione2;
36 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
Astrazione sul Controllo Operatori logico-relazionali
Simbolo Significato Precedenza > >= < <=
Maggiore di Maggiore di o uguale a Minore di Minore di o uguale a
Binario
== !=
Uguale a Diverso da
Binario
! &&
||
Negazione logica Congiunzione logica Disgiunzione logica
Unario Binario Binario
![Page 19: Elementi di Informatica e Programmazione PROGRAMMAZIONE …didattica-saetti.unibs.it/didattica/contenuti/EIP/lucidi/3-Program... · Docente: A. Saetti Elementi di Informatica e Programmazione](https://reader031.fdocument.pub/reader031/viewer/2022021715/5c663e7609d3f2d12a8bff7e/html5/thumbnails/19.jpg)
37 A.A. 2018/2019
Esercizi in Aula Scrivere dei programmi C per svolgere i seguenti compiti
Acquisire da tastiera tre numeri naturali e visualizzare il massimo tra i naturali acquisiti.
Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
38 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
#include <stdio.h> #include <stdlib.h>
int main() { int num1, num2, num3, max;
printf("Immetti 3 numeri interi: "); scanf("%d%d%d", &num1, &num2, &num3); max = num1;
if (num2 > max) max = num2; if (num3 > max)
max = num3; printf("Il massimo e' %d\n", max); system("pause"); return(0);
}
Astrazione sul Controllo Scelta semplice
![Page 20: Elementi di Informatica e Programmazione PROGRAMMAZIONE …didattica-saetti.unibs.it/didattica/contenuti/EIP/lucidi/3-Program... · Docente: A. Saetti Elementi di Informatica e Programmazione](https://reader031.fdocument.pub/reader031/viewer/2022021715/5c663e7609d3f2d12a8bff7e/html5/thumbnails/20.jpg)
39 A.A. 2018/2019
Esercizi in Aula Scrivere dei programmi C per svolgere i seguenti compiti
Acquisire da tastiera un numero naturale. Si considero il naturale acquisito come un numero di anno. Si visualizzi un messaggio che indica se l’anno è bisestile o meno.
Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
40 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
Astrazione sul Controllo Scelta a 2 vie
#include <stdio.h> #include <stdlib.h>
int main() { int anno;
printf("Immetti un anno: "); scanf("%d", &anno); if (anno % 4 == 0 && anno % 100 != 0 || anno % 400 == 0)
printf("L'anno %d e' bisestile\n", anno); else printf("L'anno %d non e' bisestile\n",anno); system("pause"); return(0);
}
![Page 21: Elementi di Informatica e Programmazione PROGRAMMAZIONE …didattica-saetti.unibs.it/didattica/contenuti/EIP/lucidi/3-Program... · Docente: A. Saetti Elementi di Informatica e Programmazione](https://reader031.fdocument.pub/reader031/viewer/2022021715/5c663e7609d3f2d12a8bff7e/html5/thumbnails/21.jpg)
41 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
Astrazione sul Controllo Scelta a più vie
if (espressione-1) istruzione-1; else if (espressione-2) istruzione-2; … else if (espressione-n) istruzione-n; else istruzione-n+1;
switch(espressione) { case exp-costante: istruzioni + break … case exp-costante: istruzioni + break default: istruzioni }
42 A.A. 2018/2019
Esercizi in Aula Scrivere dei programmi C per svolgere i seguenti compiti
Acquisire da tastiera un carattere e visualizzare un messaggio che indica se il carattere acquisito è una lettera minuscola, una lettera maiuscola, una cifra o altro.
Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
![Page 22: Elementi di Informatica e Programmazione PROGRAMMAZIONE …didattica-saetti.unibs.it/didattica/contenuti/EIP/lucidi/3-Program... · Docente: A. Saetti Elementi di Informatica e Programmazione](https://reader031.fdocument.pub/reader031/viewer/2022021715/5c663e7609d3f2d12a8bff7e/html5/thumbnails/22.jpg)
43 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
Astrazione sul Controllo Scelta a più vie
#include <stdio.h> #include <stdlib.h>
int main() { char c;
scanf(�%c�,&c); if (c >= '0' && c <= '9') printf(�Il carattere è una cifra�); else if (c >= 'A' && c <= 'Z') printf(�Il carattere è una lettera maiuscola�); else if (c >= 'a' && c <= 'z') printf(�Il carattere è una lettera minuscola�); else printf(�Il carattere non è alfanumerico�);
system("pause"); return(0);
}
44 A.A. 2018/2019
Esercizi in Aula Scrivere dei programmi C per svolgere i seguenti compiti
Acquisire da tastiera un intero. Si consideri l’intero acquisito una cifra binaria. Si visualizzi un messaggio che indica come si pronuncia la cifra oppure un avvertimento per indicare che l’intero immesso non è una cifra binaria.
Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
![Page 23: Elementi di Informatica e Programmazione PROGRAMMAZIONE …didattica-saetti.unibs.it/didattica/contenuti/EIP/lucidi/3-Program... · Docente: A. Saetti Elementi di Informatica e Programmazione](https://reader031.fdocument.pub/reader031/viewer/2022021715/5c663e7609d3f2d12a8bff7e/html5/thumbnails/23.jpg)
45 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
Astrazione sul Controllo Istruzione di selezione SWITCH
#include <stdio.h> #include <stdlib.h>
int main() { int num;
printf(�Inserisci una cifra binaria: �); scanf(�%d�,&num); switch(num) { case 0: printf(�%d si pronuncia zero\n�, num); break; case 1: printf(�%d si pronuncia uno\n�, num); break; default: printf(�%d non e‘ una cifra binaria\n�, num); } system("pause"); return(0);
}
46 A.A. 2018/2019
Esercizi in Aula Scrivere dei programmi C per svolgere i seguenti compiti
Acquisire da tastiera un numero reale e visualizzare la sua parte frazionaria e la sua parte intera, se quest’ultima è diversa da zero
Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
![Page 24: Elementi di Informatica e Programmazione PROGRAMMAZIONE …didattica-saetti.unibs.it/didattica/contenuti/EIP/lucidi/3-Program... · Docente: A. Saetti Elementi di Informatica e Programmazione](https://reader031.fdocument.pub/reader031/viewer/2022021715/5c663e7609d3f2d12a8bff7e/html5/thumbnails/24.jpg)
47 A.A. 2018/2019
Esercizi in Aula Scrivere dei programmi C per svolgere i seguenti compiti
• Acquisire da tastiera due numeri naturali. Si consideri i naturali acquisiti come il dividendo ed il divisore di una divisione. Visualizzare il quoziente intero ed il resto se il divisore è diverso da zero.
• Acquisire da tastiera due numeri naturali. Si consideri i naturali acquisiti come il dividendo ed il divisore di una divisione. Visualizzare il quoziente intero ed il resto se il divisore è diverso da zero. Altrimenti visualizzare un messaggio di errore.
Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
48 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
Astrazione sul Controllo Istruzioni iterative: WHILE, DO, FOR
• while(espressione) istruzione;
• do istruzione; while (espressione); • for(exp1;exp2;exp3) istruzione;
![Page 25: Elementi di Informatica e Programmazione PROGRAMMAZIONE …didattica-saetti.unibs.it/didattica/contenuti/EIP/lucidi/3-Program... · Docente: A. Saetti Elementi di Informatica e Programmazione](https://reader031.fdocument.pub/reader031/viewer/2022021715/5c663e7609d3f2d12a8bff7e/html5/thumbnails/25.jpg)
49 A.A. 2018/2019
Esercizi in Aula Scrivere dei programmi C per svolgere i seguenti compiti
Acquisire da tastiera un numero naturale e visualizzare la più piccola potenza di 2 superiore al naturale acquisito.
Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
50 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
Astrazione sul Controllo Istruzioni iterative: WHILE
#include <stdio.h> #include <stdlib.h>
int main() { int i, n;
printf(�Inserisci un intero: �); scanf(�%d�,&n); i=1; while(i <= n) i = i * 2; printf(�Minima potenza di 2 maggiore di %d: %d�,n,i); system("pause"); return(0);
}
![Page 26: Elementi di Informatica e Programmazione PROGRAMMAZIONE …didattica-saetti.unibs.it/didattica/contenuti/EIP/lucidi/3-Program... · Docente: A. Saetti Elementi di Informatica e Programmazione](https://reader031.fdocument.pub/reader031/viewer/2022021715/5c663e7609d3f2d12a8bff7e/html5/thumbnails/26.jpg)
51 A.A. 2018/2019
Esercizi in Aula Scrivere dei programmi C per svolgere i seguenti compiti
Acquisire da tastiera un numero naturale e visualizzare il naturale acquisito con le cifre invertite. Ad esempio se si acquisisce 165 si vuole visualizzare 561.
Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
52 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
Astrazione sul Controllo Istruzioni iterative: WHILE
#include <stdio.h> #include <stdlib.h>
int main() { int n;
printf(" - INVERSIONE CIFRE - \n"); printf("Inserisci un numero positivo: "); scanf("%d",&n);
do { printf("%d", n%10);
n=n/10; } while(n > 0) system("pause"); return(0); }
![Page 27: Elementi di Informatica e Programmazione PROGRAMMAZIONE …didattica-saetti.unibs.it/didattica/contenuti/EIP/lucidi/3-Program... · Docente: A. Saetti Elementi di Informatica e Programmazione](https://reader031.fdocument.pub/reader031/viewer/2022021715/5c663e7609d3f2d12a8bff7e/html5/thumbnails/27.jpg)
53 A.A. 2018/2019
Esercizi in Aula Scrivere dei programmi C per svolgere i seguenti compiti
Acquisire da tastiera un numero naturale e visualizzare la quantità di cifre che costituiscono il naturale. Ad esempio, acquisendo 156 si vorrebbe visualizzare il numero 3.
Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
54 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
Astrazione sul Controllo Istruzioni iterative: DO
#include <stdio.h> #include <stdlib.h>
int main() { int cifre = 0,n;
printf("Inserisci un numero positivo: "); scanf("%d",&n);
do { n = n / 10; cifre++;
} while(n > 0); printf(�Numero cifre: %d�, cifre); system("pause"); return(0);
}
![Page 28: Elementi di Informatica e Programmazione PROGRAMMAZIONE …didattica-saetti.unibs.it/didattica/contenuti/EIP/lucidi/3-Program... · Docente: A. Saetti Elementi di Informatica e Programmazione](https://reader031.fdocument.pub/reader031/viewer/2022021715/5c663e7609d3f2d12a8bff7e/html5/thumbnails/28.jpg)
55 A.A. 2018/2019
Esercizi in Aula Scrivere dei programmi C per svolgere i seguenti compiti
Acquisire da tastiera una successione di numeri naturali che termina con zero. Visualizzare il minimo tra naturali acquisiti (zero escluso).
Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
56 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
Astrazione sul Controllo Istruzioni iterative: DO
#include <stdio.h> #include <stdlib.h>
int main() { int n,min = 0;
printf("Inserisci numeri interi (0 per terminare):\n"); do { printf("==> "); scanf("%d",&n); if(min == 0 || (n > 0 && n < min)) min = n; } while(n > 0); printf("Il minimo valore immesso e': %d\n",min);
system("pause"); return(0); }
![Page 29: Elementi di Informatica e Programmazione PROGRAMMAZIONE …didattica-saetti.unibs.it/didattica/contenuti/EIP/lucidi/3-Program... · Docente: A. Saetti Elementi di Informatica e Programmazione](https://reader031.fdocument.pub/reader031/viewer/2022021715/5c663e7609d3f2d12a8bff7e/html5/thumbnails/29.jpg)
57 A.A. 2018/2019
Esercizi in Aula Scrivere dei programmi C per svolgere i seguenti compiti
Acquisire da tastiera un numero naturale e visualizzare un messaggio che indica se il naturale acquisito è superiore rispetto al naturale con le cifre invertite. Ad esempio se si acquisisce 651 si vuole visualizzare un messaggio per indicare che 651 è superiore a 156.
Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
58 A.A. 2018/2019
Esercizi in Aula Scrivere dei programmi C per svolgere i seguenti compiti
• Acquisire da tastiera una successione di due interi che termina con due interi positivi. Si consideri i due interi positivi acquisiti come il dividendo ed il divisore di una divisione. Visualizzare il quoziente intero della divisione.
• Acquisire da tastiera una successione di due interi che termina con due interi positivi. Si consideri gli interi acquisiti come il dividendo ed il divisore di una divisione. Visualizzare il quoziente intero calcolato utilizzando esclusivamente operazioni di somma e sottrazione.
Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
![Page 30: Elementi di Informatica e Programmazione PROGRAMMAZIONE …didattica-saetti.unibs.it/didattica/contenuti/EIP/lucidi/3-Program... · Docente: A. Saetti Elementi di Informatica e Programmazione](https://reader031.fdocument.pub/reader031/viewer/2022021715/5c663e7609d3f2d12a8bff7e/html5/thumbnails/30.jpg)
59 A.A. 2018/2019
Esercizi in Aula Scrivere dei programmi C per svolgere i seguenti compiti
Acquisire da tastiera un numero naturale e visualizzare il suo fattoriale.
Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
60 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
Astrazione sul Controllo Istruzioni iterative: FOR
#include <stdio.h>
#include <stdlib.h>
int main() {
int n, fatt = 1, i;
printf(�Immetti il numero n:�);
scanf(�%d�, &n);
for (i = 2; i <=n; i++)
fatt = fatt * i;
printf(�Fattoriale di %d: %d�, n, fatt);
system(�pause�);
return 0;
}
![Page 31: Elementi di Informatica e Programmazione PROGRAMMAZIONE …didattica-saetti.unibs.it/didattica/contenuti/EIP/lucidi/3-Program... · Docente: A. Saetti Elementi di Informatica e Programmazione](https://reader031.fdocument.pub/reader031/viewer/2022021715/5c663e7609d3f2d12a8bff7e/html5/thumbnails/31.jpg)
61 A.A. 2018/2019
Esercizi in Aula Scrivere dei programmi C per svolgere i seguenti compiti
Acquisire da tastiera un numero naturale e visualizzare la quantità dei suoi divisori.
Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
62 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
Astrazione sul Controllo Istruzioni iterative: FOR
#include <stdio.h> #include <stdlib.h> int main() { int i,n; printf("Inserisci un intero positivo: "); scanf ("%d",&n); printf("\nI divisori di %d sono:\n", n);
for (i = 1; i <= n ; i++) if (n % i == 0) printf ("%d\n",i); system("pause");
return(0); }
![Page 32: Elementi di Informatica e Programmazione PROGRAMMAZIONE …didattica-saetti.unibs.it/didattica/contenuti/EIP/lucidi/3-Program... · Docente: A. Saetti Elementi di Informatica e Programmazione](https://reader031.fdocument.pub/reader031/viewer/2022021715/5c663e7609d3f2d12a8bff7e/html5/thumbnails/32.jpg)
63 A.A. 2018/2019
Esercizi in Aula Scrivere dei programmi C per svolgere i seguenti compiti
Acquisire da tastiera due naturali e visualizzare il loro minimo comune multiplo.
Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
64 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
Astrazione sul Controllo Istruzioni iterative: FOR
#include <stdio.h> #include <stdlib.h> int main() { int num1, num2, max, mcm, i; printf("Inserisci due interi positivi: ");
scanf("%d",&num1); scanf("%d",&num2);
if (num1 > num2) max = num1; else max = num2; for (i = num1 * num2; i >= max ; i--) if ( i % num1 == 0 && i % num2 == 0) mcm = i; printf (�Minimo comune multiplo: %d", mcm); system("pause"); return(0); }
![Page 33: Elementi di Informatica e Programmazione PROGRAMMAZIONE …didattica-saetti.unibs.it/didattica/contenuti/EIP/lucidi/3-Program... · Docente: A. Saetti Elementi di Informatica e Programmazione](https://reader031.fdocument.pub/reader031/viewer/2022021715/5c663e7609d3f2d12a8bff7e/html5/thumbnails/33.jpg)
65 A.A. 2018/2019
Esercizi in Aula Scrivere dei programmi C per svolgere i seguenti compiti
Acquisire un numero naturale n e visualizzare una piramide di naturali tale per cui la piramide ha n righe e la i-esima riga della piramide è costituita da i cifre uguali ad i. Ad esempio per n = 3 si vuole visualizzare: 1 22 333
Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
66 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
Istruzioni iterative: Cicli Annidati
#include <stdio.h> #include <stdlib.h>
int main() { int i,j,n;
scanf(�%d�,&n); for (i=1; i <= n; i++) { for (j=1; j <= i; j++) printf(�%d�, i ); printf(�\n�); } system(�pause�); return 0;
}
1
22
333
Per n=3:
![Page 34: Elementi di Informatica e Programmazione PROGRAMMAZIONE …didattica-saetti.unibs.it/didattica/contenuti/EIP/lucidi/3-Program... · Docente: A. Saetti Elementi di Informatica e Programmazione](https://reader031.fdocument.pub/reader031/viewer/2022021715/5c663e7609d3f2d12a8bff7e/html5/thumbnails/34.jpg)
67 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
Astrazione sul Controllo Istruzioni di salto: BREAK
scanf(�%d�, &n) for (i = 100; i > 0; i--) if(i % n == 0) break;
printf(�%d�, i);
scanf(�%d�, &n) for(i = 100; i > 0 && i % n != 0; i--);
printf(�%d�, i);
68 A.A. 2018/2019 Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
Astrazione sul Controllo Istruzioni di salto: CONTINUE
sum = n = 0; do {
scanf(�%d�, &i); if (i <= 0) continue; sum += i;
n++; } while (n < 10);
sum = n = 0; do { scanf(�%d�, &i); if (i > 0) { sum += i; n++; } } while (n < 10);
![Page 35: Elementi di Informatica e Programmazione PROGRAMMAZIONE …didattica-saetti.unibs.it/didattica/contenuti/EIP/lucidi/3-Program... · Docente: A. Saetti Elementi di Informatica e Programmazione](https://reader031.fdocument.pub/reader031/viewer/2022021715/5c663e7609d3f2d12a8bff7e/html5/thumbnails/35.jpg)
69 A.A. 2018/2019
Esercizi in Aula Scrivere dei programmi C per svolgere i seguenti compiti
Acquisire da tastiera 5 numeri naturali e dopo ciascuna acquisizione visualizzare quanti divisori ha il naturale acquisito
Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia
70 A.A. 2018/2019
Esercizi in Aula Scrivere dei programmi C per svolgere i seguenti compiti
• Acquisire da tastiera 5 volte due numeri naturali. Si considerino i naturali acquisiti come il dividendo ed il divisore di una divisione. Dopo ciascuna acquisizione visualizzare il quoziente intero ed il resto.
• Acquisire da tastiera una successione di naturali che termina con 0 e al termine delle acquisizione visualizzare la quantità di numeri primi acquisiti
Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia