300 likes | 436 Views
Avolio Maria V ittoria avoliomv@unical.it. IL PRIMO PROGRAMMA IN C. #include < stdio.h > #include < stdlib.h > int main ( int argc , char * argv []) { system ("PAUSE"); return 0; }. ATTENZIONE: OGNI PROGRAMMA C DEVE CONTENERE UNA E UNA SOLA FUNZIONE int main ()
E N D
Avolio Maria Vittoria avoliomv@unical.it
IL PRIMO PROGRAMMA IN C #include <stdio.h> #include <stdlib.h> intmain(intargc, char *argv[]) { system("PAUSE"); return 0; }
ATTENZIONE: OGNI PROGRAMMA C DEVE CONTENERE UNA E UNA SOLA FUNZIONE intmain() Rappresenta il programma principale, ed è il punto di inizio dell'esecuzione del programma. · La parentesi graffa aperta { indica l'inizio di un blocco di istruzioni. · La parentesi graffa chiusa } indica la fine di un blocco di istruzioni · Per ogni parentesi graffa aperta { deve essercene una chiusa } · I commenti possono essere posti ovunque, l'inizio del commento è dato dalla coppia /*, la fine del commento è indicata da */ (oppure //) · Non si puo' inserire un commento in un altro (vietato l'annidamento dei commenti. In C ci vuole un ; dopoogniistruzione
Istruzioni input/output (I/O) funzione printf: printf(" Messaggio….", valore1, valore2,…..); La funzione printfformatta e scrive una serie di caratteri e valori sul dispositivo standard di output (stdout), e restituisce al programma chiamante il numero di caratteri effettivamente scritti (oppure un numero negativo in caso di errore).Quando si usa la funzione printf bisogna prima includere il file header <stdio.h>
Istruzioni input/output (I/O) Argomenti della funzione printf La funzione printf riceve dal programma chiamante uno o piùargomenti. Solo il primo è obbligatorio e deve essere una stringa, che si chiama stringa di controllo. Scrittura della stringa di controllo sullo schermo Quando printf è chiamata con un solo argomento, la striga di controlloviene trasferita sullo schermo, carattere per carattere (compresi gli spazi bianchi), salvo quando sono incontrati i seguenti caratteri particolari:
Istruzioni input/output (I/O) Principali sequenze di escape Il carattere \ (backslash) non viene trasferito sullo schermo, ma utilizzato in combinazione con i caratteri successivi (un solo carattere se si tratta di una lettera, oppure una sequenza di cifre numeriche); l'insieme viene detto: escapesequence, e viene interpretato come un unicocarattere.Le sequenze di escape sono usate tipicamente per specificare caratteri speciali che non hanno il loro equivalente stampabile (come newline, carriagereturn, tabulazioni, suoni ecc...), oppure caratteri, che da soli, hanno una funzione speciale, come le virgolette o lo stesso backslash
Istruzioni input/output (I/O) Eventuali altri argomenti successivi alla stringa di controllo , nella chiamata a printf, rappresentano i dati da formattare e scrivere, e possono essere costituiti da costanti, variabili, espressioni, o altre funzioni (in questo caso in realtà l'argomento è il valore di ritorno della funzione, la quale viene seguitaprimadellaprintf). Descrittore di formato %type Principali descrittori di formato type può assumere uno dei seguenti valori: • %f, % e valori floating, notazione normale o esponenziale • % g come f o e (sceglie il più comodo) • % d, % i valori interi relativi, base decimale • % c carattere • % s stringa di caratteri • ………..
Istruzioni input/output (I/O) funzione printf: printf(" Messaggio….", valore1, valore2,…..); Esempio: printf("Colore%s, numero1 %d, numero2 %d, float %f.\n", "rosso", 123456, 89, 3.14); stamperà la seguente linea (incluso il carattere di nuova linea, \n): Colore rosso, numero1 123456, numero2 89, float 3.14.
Istruzioni input/output (I/O) funzione printf: printf(" Messaggio….", valore1, valore2,…..); printf("Ci sono %d iscritti a questo corso!\n Temevo fossero solo %d!",3215+1, 2); scrive su video la frase: Ci sono 3216 iscritti a questo corso! Temevo fossero solo 2!
LE VARIABILI • Una variabile è una porzione della memoria che contiene dati (di ingresso o di uscita) codificati in un qualche modo. • Nei linguaggi evoluti, sono identificate da un nome, nei linguaggi macchina da un indirizzo. • Posseggono le seguenticaratteristiche: • • Tipo: specifica il tipo di codifica usato • • Dimensione: indica la quantità di memoria occupata • • Modo di allocazione: indica la strategia usata per riservare lo spazio in memoria • • Scope (visibilità): indica quali pezzi di un programma possono vedere (e usare) una variabile. • • Valore iniziale: il valore della variabile all’inizio dell’esecuzione del programma.
Variabili I formatipossibilisono: • Interi con o senza segno (int) • Reali cioè numeri rappresentati in virgola mobile (float, double) • Stringhe di caratterialfanumerici (char[]) • Variabililogiche(bool) • Tipi composti(array) • Rappresentazioni definite dall’utente…
Cos’è una variabile • Le variabili, in un linguaggio di programmazione, sono dei contenitori. • Possono essere riempiti con un valore che poi può essere riletto oppure sostituito.
Le variabili • Formalmente ogni variabile è una porzione della memoria del computer in cui è possibile memorizzare un valore da utilizzare all’interno di un programma. • Tutte le variabili devono avere un nome e un tipo.
Variabili • Tutte le variabili devono essere dichiarate prima di essere usate. La dichiarazione delle variabili è così fatta: • Tipo ElencoVariabili; • Esempi: • int i; • float aus, x, y; • double num1,num2; Il programmatore deve essere sicuro che tutte le parti di un programma che utilizzano una data variabile siano d’accordo sul suo tipo; in caso contrario i risultati saranno imprevedibili.
Le variabili NOTA:Le variabili dichiarate double occupano più spazio di quelle dichiarate float. Solo quando si utilizzano un gran numero di variabili ha senso preoccuparsi di risparmiare sullo spazio valutando al meglio il tipo di variabile sufficiente allo scopo.
TIPI di variabili Il tipo char può contenere qualsiasi carattere definito secondo lo standard ASCII, quindi qualsiasi lettera (maiuscola o minuscola), cifra (da 0 a 9) e simbolo previsto dalla codifica. È molto importante ricordare che unchar può contenere uno ed un solo carattere. Per memorizzare una successione di caratteri si utilizza un array di char. L’array è un contenitore di variabili dello stesso tipo e ne approfondiremo la conoscenza più avanti. • Per dichiarare una variabile char, ad esempio inizializzandola con la lettera ‘r‘, basta scrivere: • es. chara; • a= 'r';
TIPI di variabili I numeri interi, rappresentati da int, sono quelli “senza la virgola” o parti frazionate. ESEMPIO con gli interi int x = 7; int y = 3; int z; z = x / y; // z vale 2, cioè la parte intera della divisione tra 7 e 3 I tipi float e double sono i cosiddetti numeri in virgola mobile, che rappresentano l’insieme dei numeri reali: con essi possiamo rappresentare numeri molto piccoli o numeri molto grandi, positivi e negativi e naturalmente con e senza decimali. ESEMPIO con i double double x = 7.0;double y = 2.0;double z;z = x / y;// z vale 3.5
Le variabili Primo programma con variabili, somma di due numeri intmain { /* dichiarazione di una variabile di tipo intero */ intrisult; /* assegno alla variabile il risultato dell'operazione */ risult = 134+987; /* stampo il contenuto della variabile risult */ printf(«la somma è %d», risult); } I nomi delle variabili si scelgono solitamente in modo che sia facile intuire il loro contenuto. ATTENZIONE! Quando si vuole stampare il contenuto di una variabile il suo nome non va messo tra virgolette ma solo tra parentesi.
Le variabili Programma evoluto della somma di due numeri intmain { intrisult; int num1, num2; num1=134, num2=987; risult = num1+num2; /* stampo il contenuto della variabile risult */ printf("la somma di num1= %d e di num2 =%d è ", num1, num2, risult); }
GLI operatori • Operatori aritmetici. Comprendono somma, sottrazione, moltiplicazione, divisione intera, divisione con modulo ecc. • Operatori di confronto. Operatori che permettono di verificare determinate condizioni, come ad esempio l’uguaglianza o la disuguaglianza. • Operatori logici. Da utilizzare con le istruzioni condizionali ed iterative.
GLI operatori Aritmetici Un operatore binario fondamentale è l’operatore di assegnazione=. a=2 indica che alla variabile a è assegnato il valore 2 k=k+1 vuol dire assegna a k il suo valore incrementato di 1
Operatori di confronto Gli operatori di confronto permettono di verificare determinate condizioni, come ad esempio l’uguaglianza, la disuguaglianza, o semplicemente se un elemento è maggiore di un’altro; la seguente tabella mostra nel dettaglio gli operatori di confronto e la loro funzione:
a=b diverso a==bA=B implica A=al valore di bA==B mi domando se a è uguale a b
Operatori logici Anche gli operatori logici vengono utilizzati con le istruzioni condizionali ed iterative, e permettono di fare l’AND e l’OR tra due operandi; nella tabella mostriamo i simboli usati e il loro utilizzo:
La funzione scanf() serve per leggere dallo stdin (generalmente la tastiera) una sequenza di caratteri (lettere o cifre) che verranno memorizzate all’interno di opportune variabili. Scanf è, quindi, definita come segue: intscanf(char *formato, lista argomenti ...) A differenza di printf(), però la variabile deve essere messa preceduta dal simbolo &, perché in realtà tra gli argomenti non dobbiamo passare il nome della variabile, ma il suo indirizzo. PRIMO ESEMPIO CON SCANF #include <stdio.h> intmain() { int i; scanf("%d ", &i); printf("%d ", i); }
Lettura di un numero #include <stdio.h> #include <stdlib.h> int main(intargc, char *argv[]) { int numero; printf("Inserisci un numero intero.\n"); scanf("%d", &numero); printf("Il numero inserito e' %d",numero); printf("\n"); system("PAUSE"); return 0; }
Conversione di lire in euro //convertitore lire/euro #include <stdio.h> #include <stdlib.h> int main(intargc, char *argv[]) { int lire; float euro; float FattConvLireEuro = 1936.27; Printf("Programma di converione Lire->Euro.\n" ); Printf(" Inserisci il valore in Lire da convertire in Euro: \n"); scanf("%d ", &lire); euro = lire / FattConvLireEuro; printf("Il valore corrispondente in Euro e': %f" , euro ); printf("\n"); system("PAUSE"); return 0; }
Conversione di unità di misura #include <stdio.h> #include <stdlib.h> int main(intargc, char *argv[]) { double tc, tf, offset, conv_FC,conv_CF; offset=32.; conv_FC=5./9.; printf(Inserisci il valore in gradi Fahrenheit \n); scanf("%f, & tf); tc=(tf-offset)*conv_FC; printf("Valore in gradi Celsius %f" ,tc ); printf(" \n" ); conv_CF=9./5.; printf("Inserisci il valore in gradi celsius ); printf(" \n" ); scanf("%f, & tc); tf=tc*conv+offset; printf( "Valore in gradi fahrenheit %f ", tf); printf(" \n" ); system("PAUSE"); return 0; } Il punto di congelamento dell'acqua è di 32 gradi Fahrenheit, mentre il punto di ebollizione si trova a 212 gradi Un grado Fahrenheit è 5/9 di un gradoCelsius.
ATTENZIONE: Le costanti 32., 9. e 5. sono tutte seguite dal . ad indicare che i relativi numeri sono usati nella rappresentazione in virgola mobile. Una costante razionale la cui parte decimale sia nulla va comunque scritta con il punto decimale, altrimenti sarà interpretata come intera