Avolio Maria Vittoria
[email protected]
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()
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 ; dopo ogni istruzione
Istruzioni input/output (I/O)
funzione printf:
printf(" Messaggio….", valore1, valore2,…..);
La funzione printf formatta 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
controllo viene trasferita sullo
schermo, carattere per
carattere (compresi gli spazi bianchi),
salvo quando sono incontrati i
seguenti caratteri particolari:
"
(termina la stringa
di controllo)
%
(introduce
uno descrittore di
formato - da non
usare in questo
caso)
\
(introduce
una sequenza di
escape)
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: escape sequence, e
viene
interpretato
come
un
unico
carattere.
Le sequenze di escape sono usate tipicamente per specificare caratteri speciali che
non hanno il loro equivalente stampabile (come newline, carriage return, tabulazioni,
suoni ecc...), oppure caratteri, che da soli, hanno una funzione speciale, come
le virgolette o lo stesso backslash
Tipo di opzione
Descrizione
\n
Ritorno a capo
\t
Tabulazione orizzontale
\b
Tabulazione verticale
\a
Torna indietro di uno
spazio
\f
Salto pagina
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 seguita primadella printf).
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 seguenti caratteristiche:
• 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 formati possibili sono:
• Interi con o senza segno (int)
• Reali cioè numeri rappresentati in virgola
mobile (float, double)
• Stringhe di caratteri alfanumerici (char[])
• Variabili logiche (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:
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.
int i;
float aus, x, y;
double num1,num2;
TIPI di variabili più usati
Tipi di dichiarazione Rappresentazione
N. di byte
char
Carattere
1 (8 bit)
int
Numero intero
2 (16 bit)
short
Numero intero “corto”
da –32768 e +32767
2 (16 bit)
long
Numero intero “lungo”
4 (32 bit)
float
Numero reale
4 (32 bit)
double
Numero reale “lungo”
8 (64 bit)
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 un char 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. char a;
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
int main
{
/* dichiarazione di una variabile di tipo intero */
int risult;
/* assegno alla variabile il risultato dell'operazione */
risult = 134+987;
/* stampo il contenuto della variabile risult */
printf(«la somma è %d», risult);
}
ATTENZIONE!
Quando si vuole stampare il contenuto
di una
variabile il suo nome non va messo tra
virgolette ma solo tra parentesi.
I nomi delle variabili si
scelgono solitamente
in modo che sia facile intuire il
loro
contenuto.
Le variabili
Programma evoluto della somma di due numeri
int main
{
int risult;
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
Operazioni con
gli int
Simbolo
Esempio
Addizione
+
4 + 27 = 31
Sottrazione
-
Moltiplicazione
Divisione intera
76 – 23 = 53
Operazioni con i
double
Simbolo
Esempio
*
4 * 7 = 28
Addizione
+
2.5 + 14.3 = 16.8
/
10 / 3 = 3
Sottrazione
-
43.8 – 12.7 = 31.1
Moltiplicazione
*
7.5 * 3.0 = 22.5
Divisione
/
5.0 / 2.0 = 2.5
(3 è il n di volte
divisibili senza
resto)
Divisione con
modulo
%
11 %6 = 5
(5 è il resto della
divisione)
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:
Simbolo
Significato
Utilizzo
==
uguale a
a == b
!=
diverso da
a != b
<
minore
a<b
>
maggiore
a>b
<=
minore o uguale a <= b
>=
maggiore o
uguale
a >= b
A=B DIVERSO A==B
A=B IMPLICA A=AL VALORE DI B
A==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:
Simbolo
Significato
Utilizzo
&&
AND logico
a && b
||
OR logico
a || b
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:
int scanf(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>
int main()
{
int i;
scanf("%d ", &i);
printf("%d ", i);
}
Lettura di un numero
#include <stdio.h>
#include <stdlib.h>
int main(int argc, 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(int argc, 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>
Il punto di congelamento dell'acqua è di 32
int main(int argc, char *argv[])
gradi Fahrenheit, mentre il punto di
{
ebollizione si trova a 212 gradi
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);
Fahrenheit Celsius
tc=(tf-offset)*conv_FC;
congelamento
32
0
printf("Valore in gradi Celsius %f" ,tc );
printf(" \n" );
ebollizione
212
100
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" );
Un grado Fahrenheit è 5/9 di
system("PAUSE");
un grado Celsius.
return 0;
}
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
Scarica

scarica