210 likes | 340 Views
7 ottobre 2014. Laboratorio di informatica 1 (Programmazione). Avvisi:. La lezione di ieri e ’ in rete (da 10 minuti fa). 1 /* Fig. 2.5: fig02_05.c. 2 Addition program */. 3 #include <stdio.h>. 4 . 5 int main(). 6 {. 7 int integer1, integer2, sum; /* dichiarazione */.
E N D
7 ottobre 2014 Laboratorio di informatica 1 (Programmazione) Avvisi: La lezione di ieri e’ in rete (da 10 minuti fa)
1 /* Fig. 2.5: fig02_05.c 2 Addition program */ 3 #include <stdio.h> 4 5 int main() 6 { 7 int integer1, integer2, sum; /* dichiarazione */ 8 9 printf(“Scrivi il primo intero\n"); /* prompt */ 10 scanf( "%d", &integer1 ); /* legge un intero */ 11 printf("Scrivi il secondo intero\n");/* prompt*/ 12 scanf( "%d", &integer2 ); /* legge un intero */ 13 sum = integer1 + integer2; /* assegnazione */ 14 printf(“La somma e’ %d\n", sum);/*stampa somma*/ 15 16 return 0; /* il programma finisce OK */ 17 } Inizializza le variabili Input Somma Stampa Output Scrivi il primo intero 45 Scrivi il secondo intero 72 La somma e’ 117
Programma 2 : sommare due interi • int integer1, integer2, sum; • Dichiarazioni di variabili • Variabili: locazioni di memoria dove scrivere un valore • int significa che le variabili contengono valori interi (-1, 3, 0, 47) • integer1, integer2, sum nomi di variabili (identificatori) • Identificatori : lettere, cifre (non iniziare con cifra), e underscores, case sensitive • Dichiarazioni vanno prima delle istruzioni di esecuzione • Se NO, errore di sintassi • Come caso precedente • Commenti, #include <stdio.h> e main
1 /* Fig. 2.5: fig02_05.c 2 Addition program */ 3 #include <stdio.h> 4 5 int main() 6 { 7 int integer1, integer2, sum; /* dichiarazione */ 8 9 printf(“Scrivi il primo intero\n"); /* prompt */ 10 scanf( "%d", &integer1 ); /* legge un intero */ 11 printf("Scrivi il secondo intero\n");/* prompt*/ 12 scanf( "%d", &integer2 ); /* legge un intero */ 13 sum = integer1 + integer2; /* assegnazione */ 14 printf(“La somma e’ %d\n", sum);/*stampa somma*/ 15 16 return 0; /* il programma finisce OK */ 17 } Input
Programma 2 : sommare due interi • scanf( "%d", &integer1 ); • Ottiene un valore dall’utente • scanf usa standard input (di solito la tastiera) • Questo scanf ha due argomenti: • %d – indica che il dato deve essere un intero • &integer1 – locazione in memoria che contiene la variabile • & crea un po’ di confusione all’inizio • Ricorda di includerlo sempre con il nome della variabile in scanf • Sara’ discusso in seguito • Utente risponde a scanf digitando un numero, poi pressando enter (return)
Nozioni sulla Memoria • Variabili • I nomi delle variabili corrispondono alle locazioni nella memoria del computer. • Ogni variabile ha un nome, un tipo, una taglia e un valore. • Quando nuovo valore e’ assegnato a variabile (ad es. via scanf), sostituisce (e distrugge) valore precedente • Leggere una variabile dalla memoria non modifica il suo valore
1 /* Fig. 2.5: fig02_05.c 2 Addition program */ 3 #include <stdio.h> 4 5 int main() 6 { 7 int integer1, integer2, sum; /* dichiarazione */ 8 9 printf(“Scrivi il primo intero\n"); /* prompt */ 10 scanf( "%d", &integer1 ); /* legge un intero */ 11 printf("Scrivi il secondo intero\n");/* prompt*/ 12 scanf( "%d", &integer2 ); /* legge un intero */ 13 sum = integer1 + integer2; /* assegnazione */ 14 printf(“La somma e’ %d\n", sum);/*stampa somma*/ 15 16 return 0; /* il programma finisce OK */ 17 } Somma Stampa
Programma 2 : sommare due interi • = (operatore di assegnazione) • Assegna un valore ad una variabile • Operatore Binario (2 operandi) sum = variable1 + variable2; sum riceve variable1 + variable2; • Variabile riceve il valore sulla sinistra • printf( "Sum is %d\n", sum ); • Simile a scanf - %d significa che verra’ stampato un intero decimale • sum specifica quale intero verra’ stampato • I calcoli possono essere effettuati all’interno di printf printf( "Sum is %d\n", integer1 + integer2 );
integer1 45 Nozioni sulla Memoria • Una rappresentazione visuale:
Aritmetica • Calcoli aritmetici sono molto usati • Usa * per moltiplicazione e / per divisione • La divisione intera tronca il resto 7 / 5 restituisce 1 • Operatore modulo restituisce il resto 7 % 5 restituisce 2 • Precedenza tra operatori • Alcuni operatori agiscono prima di altri (es., moltiplicazione prima dell’addizione) • Usare le parentesi all’occorrenza Esempio: Trova la media tra le variabili a, b e c • NO: a + b + c / 3 • SI: (a + b + c ) / 3
Aritmetica Regole di precedenza tra operatori:
Prendere delle decisioni: operatori di uguaglianza e relazionali • Istruzioni eseguibili • Compiono azioni (calcoli, input/output di dati) • Prendono decisioni • Struttura di controllo if • Versione semplice, piu’ dettagli in seguito • Se una condizione e’ vera, allora il corpo dell’istruzione if viene eseguita • 0 e’ FALSO , non-zero e’ VERO (TRUE) • Il controllo ritorna sempre dopo la struttura if • Keywords (parole chiave) • Parole speciali risevate per il C • Non possono essere usate per gli identificatori o per le variabili.
Prendere delle decisioni: operatori di uguaglianza e relazionali
1 /* Fig. 2.13: fig02_13.c 2 Uso dell’istruzione if, degli operatori 3 relazionali e di uguaglianza */ 4 #include <stdio.h> 5 6 int main() 7 { 8 int num1, num2; 9 10 printf( “Inserisci due interi e ti diro’ \n" ); 11 printf( “la relazione che soddisfano: " ); 12 scanf( "%d%d", &num1, &num2 ); /* legge due interi */ 13 14 if ( num1 == num2 ) 15 printf( "%d e’ uguale a %d\n", num1, num2 ); 16 17 if ( num1 != num2 ) 18 printf("%d e’ diverso da %d\n",num1,num2 ); 19 20 if ( num1 < num2 ) 21 printf( "%d e’ minore di %d\n", num1, num2 ); 22 23 if ( num1 > num2 ) 24 printf("%d e’ maggiore di %d\n",num1,num2 ); 25 Dichiara le variabili Input Istruzione if Stampa
29 30 if ( num1 >= num2 ) 31 printf( "%d e’ maggiore o uguale a %d\n", 32 num1, num2 ); 33 34 return 0; /* indica che il programma finisce con successo */ 35 } 26 if ( num1 <= num2 ) 27 printf( "%d e’ minore o uguale a %d\n", 28 num1, num2 ); 3.1 Esce da main Output Inserisci due interi e ti diro’ la relazione che soddisfano: 3 7 3 e’ diverso da 7 3 e’ minore di 7 3 e’ minore o uguale a 7 Inserisci due interi e ti diro’ la relazione che soddisfano: 22 12 22 e’ diverso da 12 22 e’ maggiore di 12 22 e’ maggiore o uguale a 12
Attenzione…. Errori in vista! if ( num1 = num2 ) printf( "%d e’ uguale a %d\n", num1, num2 ); NO! if ( num1 == num2); printf( "%d e’ uguale a %d\n", num1, num2 ); NO! if ( num1 == num2) printf( "%d e’ uguale a %d" \n, num1, num2 ); NO! if ( num1 == num2) printf( “&d e’ uguale a &d \n ", num1, num2 ); NO! if ( num1 == num2 ) printf( "%d e’ uguale a %d\n", num1, num2 );
Esercizi: • Esercizio 2.23 Usando solo le tecniche viste finora, scrivere un programma che prenda in input cinque numeri interi e quindi determini e visualizzi il maggiore e il minore all’interno del gruppo.
Esercizi: • Esercizio 2.30 Usando solo le tecniche viste finora, scrivere un programma che prenda in input un numero di cinque cifre e le visualizzi ognuna separata dall’altra da tre spazi. Per esempio, se l’utente digitasse 24614, il programma dovrebbe visulizzare: 2 4 6 1 4
Esercizi: • Esercizio 2.31 Usando solo le tecniche viste finora, scrivere un programma che calcoli i quadrati e i cubi dei numeri da 1 a 10 e utilizzi le tabulazioni (\t) per visualizzare la seguente tabella di valori: numero quadrato cubo 0 0 0 1 1 1 2 4 8 . . . . . . 10 100 1000