Elementi di Informatica e Programmazione PROGRAMMAZIONE...
Transcript of Elementi di Informatica e Programmazione PROGRAMMAZIONE...
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
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
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
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
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
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); }
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);}
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);
}
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);
}
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 *
**********************************************/
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;
}
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;
}
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); }
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
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↵
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↵
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; }
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
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
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);
}
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
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
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
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;
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);
}
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); }
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);
}
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); }
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
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;
}
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); }
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); }
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:
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);
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