1 / 11

Informatica B

Informatica B. Allievi Elettrici - AA 2000-01 Fondamenti della programmazione in linguaggio C (III). Anche i cicli si possono annidare. #include <stdio.h> main() { int n, m, i, j; printf(“Inserisci n:”); scanf (“%d”,&n); /*input */ printf(“Inserisci m:”); scanf (“%d”,&m); /*input */

lucius
Télécharger la présentation

Informatica B

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Informatica B Allievi Elettrici - AA 2000-01 Fondamenti della programmazione in linguaggio C (III)

  2. Anche i cicli si possono annidare #include <stdio.h> main() { int n, m, i, j; printf(“Inserisci n:”); scanf (“%d”,&n); /*input */ printf(“Inserisci m:”); scanf (“%d”,&m); /*input */ for(i=1; i<=n; i++) for(j=1; j<=m; j++) printf(“i:%d j: %d \n”, i, j); } • Esercizio: provare a vedere cosa si visualizza per n=4 ed m=3.

  3. Salti • break: serve a saltare alla prima istruzione fuori dal ciclo (non si ritorna più nel ciclo). • continue: serve a saltare le istruzioni che restano del blocco del ciclo e a ritornare a una nuova iterazione. • exit: serve a saltare fuori dal programma e ritorna il controllo al sistema operativo (fa parte della libreria standard del C stdlib.h).

  4. Uso del break (pessimo!!!) #include <stdio.h> /* Calcolo n fattoriale */ main() { int n, fatt, m; printf(“Inserisci n:”); scanf (“%d”,&n); /*input */ if n > 0 /* Verifica dati d’ingresso */ {fatt = n; for (m=n; m--) /* exp2 in questo caso è vuota:*/ /* equivale a true */ {if (m<1) break; fatt = fatt * (m-1);} printf(“\Il fattoriale di %d è:%d\n”,n,fatt); } } N.B. : nel caso di cicli annidati l’istruzione break provoca l’uscita solo dal ciclo più interno!!!

  5. Ancora sulla dichiarazione dei dati: le costanti const int modelloauto = 156; const float pigreco = 3.14159265; • si inizializza in fase di dichiarazione • non si può modificare nel corso del programma • non provoca allocazione di memoria N.B.: Esiste un altro modo di definire un valore una volta per tutte:la direttiva define

  6. Sostituzione di macro: #define PIGRECO 3.14159265 • è una delle direttive al precompilatore • non si può modificare (ma si può annullare) nel corso del programma • non provoca allocazione di memoria • non viene terminata dal punto e virgola (non è una istruzione C!) #define VERO 1 #define FALSO 0 printf(“%d %d %d”, FALSO,VERO,VERO+1); visualizza: 0 1 2 • si possono costruire macro a partire da altre macro: #define UNO 1 #define DUE UNO+UNO

  7. Altre direttive al precompilatore Abbiamo già visto: #include <stdio.h> serve a richiamare librerie (comanda al preprocessore di leggere anche da un altro file sorgente) Altre direttive frequentemente usate: #undef VERO serve a rimuovere il nome della macro (da questo punto in poi la costante VERO non è più definita) #error ATTENZIONE DIVISIONE PER 0 serve a visualizzare messaggi di errore (il messaggio non è racchiuso tra doppi apici)

  8. Dichiarazione dei dati: altri tipi semplici • Diversi tipi di intero: si possono aggiungere dei qualificatori: • long, shortsi possono aggiungere a int o a double • unsigned si aggiunge a int o a char • Variabili enumerative: enum PAPERO {QUI,QUO,QUA}; enum mese{gennaio,febbraio,marzo,aprile, maggio,giugno,luglio,agosto,settembre, ottobre,novembre,dicembre};

  9. Dichiarazione dei dati: dati complessi o strutturati • Array: vettore di elementi indicizzati, omogenei, memorizzati in modo contiguo: int A[20]; (A e’ un array di 20 elementi di tipo Int)

  10. Inizializzazione: for(i=0;i<=19;i++) A[i] = 0; oppure: for(i=0;i<=19;i++) {printf(“inser.intero:\n”); scanf(“%d”,&A[i]);} Ricerca del massimo: max = A[0]; for(i=1;i<=19;i++) if (A[i] > max) max = A[i]; Calcolo della media: media= A[0]; for(i=1;i<=19;i++) media = media + A[i]; media = media/20; Nota: In C l’indice inferiore dei vettori e’ sempre 0 !!! Esempi sugli array

  11. Esempi sugli array • Massimo, minimo e media: max= A[0]; min= A[0]; media= A[0]; for(i=1;i<=19;i++) {media = media + A[i]; if (A[i] > max) max = A[i]; if (A[i] < min) min = A[i]} media = media/20;

More Related