Elementi di Informatica e Programmazione PROGRAMMAZIONE...

Preview:

Citation preview

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: alessandro.saetti@unibs.it)

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

Recommended