Elementi di Informatica e Programmazione ...–C, C++, Java, C#, Perl, Python, PhP, Javascript...

35
1 A.A. 2019/2020 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. 2019/2020 2 A.A. 2019/2020 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

Transcript of Elementi di Informatica e Programmazione ...–C, C++, Java, C#, Perl, Python, PhP, Javascript...

  • 1A.A. 2019/2020Docente: 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. 2019/2020

    2A.A. 2019/2020

    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

  • 3A.A. 2019/2020

    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

    4A.A. 2019/2020

    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

  • 5A.A. 2019/2020Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

    Sistemi di sviluppo integrati

    /* Stampa a video una stringa */

    #include int main(void) {printf(“Cogito ergo sum.\n”);return 0;

    }

    6A.A. 2019/2020Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

    Dev-C++: Interfaccia utente

  • 7A.A. 2019/2020Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

    Dev-C++: Crea/apri file

    8A.A. 2019/2020Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

    Dev-C++: salva file

  • 9A.A. 2019/2020Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

    Dev-C++: Compila programma

    10A.A. 2019/2020Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

    Dev-C++: Correzione errori

  • 11A.A. 2019/2020Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

    Dev-C++: Esecuzione programma

    12A.A. 2019/2020Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

    Che voto gli dareste?

    #include #include 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); }

  • 13A.A. 2019/2020Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

    Regola di scrittura 1

    #include

    #include 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);}

    14A.A. 2019/2020Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

    Regola di scrittura 2

    #include #include

    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);}

  • 15A.A. 2019/2020Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

    Regola di scrittura 3

    #include #include

    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);

    }

    16A.A. 2019/2020Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

    Regola di scrittura 4.1

    #include #include

    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);

    }

  • 17A.A. 2019/2020Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

    Regola di scrittura 4.2

    #include #include

    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);

    }

    18A.A. 2019/2020Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

    Regola di scrittura 4.3

    #include #include

    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);

    }

  • 19A.A. 2019/2020Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

    Uso dei commenti#include #include

    /* 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);

    }

    20A.A. 2019/2020Docente: 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 ***********************************************/

  • 21A.A. 2019/2020Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

    Tipi di DatiInteri, Caratteri, Floating point

    Tipo Bit Valore minimo Valore massimo

    short int

    unsigned short int

    intunsigned int

    long intunsigned 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 char8

    8

    -128

    0

    +127

    255

    Tipo Bit Valore minimo Valore massimo Precisione

    float

    double32

    64

    1.17549*10-38

    2.22507*10-3083.40282*1038

    1.79769*103086 cifre

    15 cifre

    22A.A. 2019/2020Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

    Astrazione sui DatiOperatore 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;

    }

  • 23A.A. 2019/2020Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

    Astrazione sui DatiOperatori aritmetici e di casting

    ØOperatore di casting: ( nome-del-tipo ) espressione

    Unario Binario

    Additivo Moltiplicativo

    + più unario + somma * moltiplicazione

    – meno unario – sottrazione / divisione

    % resto

    24A.A. 2019/2020Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

    Astrazione sui DatiConversioni 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;

    }

  • 25A.A. 2019/2020Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

    Astrazione sui DatiConversioni 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;

    }

    26A.A. 2019/2020Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

    Astrazione sui DatiConversioni 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);

    }

  • 27A.A. 2019/2020Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

    Astrazione sui DatiConversioni 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);

    }

    28A.A. 2019/2020Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

    Astrazione ProceduraleVisualizzazione 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

  • 29A.A. 2019/2020Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

    Astrazione ProceduraleChiamata a Funzioni: Stampa dati

    #include

    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 gradiOre 11: 23.21 gradiOre 11: 23 gradi

    30A.A. 2019/2020Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

    Astrazione ProceduraleChiamata a Funzioni: Acquisizione dati

    #include

    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¿

  • 31A.A. 2019/2020Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

    Astrazione ProceduraleChiamata a Funzioni: Acquisizione dati

    #include

    int main(void) {char c1, c2;scanf(“%c”, &c1);fflush(stdin);scanf(“%c”, &c2);fflush(stdin);return 0;

    }

    A¿B¿

    32A.A. 2019/2020Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

    Astrazione ProceduraleChiamata a Funzioni: Acquisizione dati

    #include

    int main(void) {char c1, c2;scanf(“ %c”, &c1);scanf(“ %c”, &c2);return 0;

    }

    A¿B¿

  • 33A.A. 2019/2020

    Esercizi in AulaScrivere 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

    34A.A. 2019/2020Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

    Astrazione sul ControlloScelta semplice e a 2 vie

    if (espressione) istruzione;

    if (espressione) {

    … /* blocco di istruzioni */

    }

    if (espressione) istruzione1; else istruzione2;

  • 35A.A. 2019/2020Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

    Astrazione sul ControlloOperatori logico-relazionali

    Simbolo Significato Precedenza>

    >=

    <

    = 5;ris = !(op1 < 10 && op1 >= 5);ris = op1 >= 10 || op1 < 5;ris = opc >= 'a' && opc = 'a' && opc = 'A' && opc

  • 37A.A. 2019/2020

    Esercizi in AulaScrivere 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

    38A.A. 2019/2020Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

    #include #include

    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 ControlloScelta semplice

  • 39A.A. 2019/2020

    Esercizi in AulaScrivere 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

    40A.A. 2019/2020Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

    Astrazione sul ControlloScelta a 2 vie

    #include #include

    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);

    elseprintf("L'anno %d non e' bisestile\n",anno);

    system("pause");return(0);

    }

  • 41A.A. 2019/2020Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

    Astrazione sul ControlloScelta 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 + breakdefault: istruzioni

    }

    42A.A. 2019/2020

    Esercizi in AulaScrivere 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

  • 43A.A. 2019/2020Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

    Astrazione sul ControlloScelta a più vie

    #include #include

    int main() {char c;

    scanf(“%c”,&c);if (c >= '0' && c = 'A' && c = 'a' && c

  • 45A.A. 2019/2020Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

    Astrazione sul ControlloIstruzione di selezione SWITCH

    #include #include

    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);

    }

    46A.A. 2019/2020

    Esercizi in AulaScrivere 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

  • 47A.A. 2019/2020

    Esercizi in AulaScrivere 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

    48A.A. 2019/2020Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

    Astrazione sul ControlloIstruzioni iterative: WHILE, DO, FOR

    • while(espressione) istruzione;

    • do istruzione; while (espressione);

    • for(exp1;exp2;exp3) istruzione;

  • 49A.A. 2019/2020

    Esercizi in AulaScrivere 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

    50A.A. 2019/2020Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

    Astrazione sul ControlloIstruzioni iterative: WHILE

    #include #include

    int main() {int i, n;

    printf(“Inserisci un intero: ”);scanf(“%d”,&n);i=1;while(i

  • 51A.A. 2019/2020

    Esercizi in AulaScrivere 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

    52A.A. 2019/2020Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

    Astrazione sul ControlloIstruzioni iterative: WHILE

    #include #include

    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);

    }

  • 53A.A. 2019/2020

    Esercizi in AulaScrivere 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

    54A.A. 2019/2020Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

    Astrazione sul ControlloIstruzioni iterative: DO

    #include #include

    int main() {int cifre = 0,n;

    printf("Inserisci un numero positivo: ");scanf("%d",&n);do {

    n = n / 10;cifre = cifre + 1;

    } while(n > 0);printf(“Numero cifre: %d”, cifre);system("pause");return(0);

    }

  • 55A.A. 2019/2020

    Esercizi in AulaScrivere 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

    56A.A. 2019/2020Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

    Astrazione sul ControlloIstruzioni iterative: DO

    #include #include

    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);

    }

  • 57A.A. 2019/2020

    Esercizi in AulaScrivere 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

    58A.A. 2019/2020

    Esercizi in AulaScrivere 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

  • 59A.A. 2019/2020

    Esercizi in AulaScrivere 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

    60A.A. 2019/2020Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

    Astrazione sul ControlloIstruzioni iterative: FOR

    #include

    #include

    int main() {

    int n, fatt = 1, i;

    printf(“Immetti il numero n:”);

    scanf(“%d”, &n);

    for (i = 2; i

  • 61A.A. 2019/2020

    Esercizi in AulaScrivere dei programmi C per svolgere i seguenti compiti

    Acquisire da tastiera un numero naturale e visualizzare i suoi divisori.

    Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

    62A.A. 2019/2020Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

    Astrazione sul ControlloIstruzioni iterative: FOR

    #include #include 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

  • 63A.A. 2019/2020

    Esercizi in AulaScrivere 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

    64A.A. 2019/2020Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

    Astrazione sul ControlloIstruzioni iterative: FOR

    #include #include 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);

    }

  • 65A.A. 2019/2020

    Esercizi in AulaScrivere 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:122333

    Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

    66A.A. 2019/2020Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

    Istruzioni iterative:

    Cicli Annidati

    #include #include

    int main() { int i,j,n;

    scanf(“%d”,&n);for (i=1; i

  • 67A.A. 2019/2020Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

    Astrazione sul ControlloIstruzioni di salto: BREAK

    scanf(“%d”, &n)for (i = 100; i > n; i--)

    if(i % n == 0) break;printf(“%d”, i);

    scanf(“%d”, &n)for(i = 100; i > n && i % n != 0; i--);

    printf(“%d”, i);

    68A.A. 2019/2020Docente: A. Saetti Elementi di Informatica e Programmazione – Università di Brescia

    Astrazione sul ControlloIstruzioni di salto: CONTINUE

    sum = n = 0;

    do {

    scanf(“%d”, &i);if (i 0) {

    sum += i;n++;

    }} while (n < 10);

  • 69A.A. 2019/2020

    Esercizi in AulaScrivere 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

    70A.A. 2019/2020

    Esercizi in AulaScrivere 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