Anteprima
Vedrai una selezione di 7 pagine su 29
Programmazione C, Informatica Pag. 1 Programmazione C, Informatica Pag. 2
Anteprima di 7 pagg. su 29.
Scarica il documento per vederlo tutto.
Programmazione C, Informatica Pag. 6
Anteprima di 7 pagg. su 29.
Scarica il documento per vederlo tutto.
Programmazione C, Informatica Pag. 11
Anteprima di 7 pagg. su 29.
Scarica il documento per vederlo tutto.
Programmazione C, Informatica Pag. 16
Anteprima di 7 pagg. su 29.
Scarica il documento per vederlo tutto.
Programmazione C, Informatica Pag. 21
Anteprima di 7 pagg. su 29.
Scarica il documento per vederlo tutto.
Programmazione C, Informatica Pag. 26
1 su 29
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

Esempi:

int a; è possibile separare, nel caso in cui si dovessero dichiarare diverse

int b,c[10],d[2][5]; variabili che contengono lo stesso tipo di dato, mediante la virgola.

char e,f; Attenzione! Per come sono scritti “e” e “f” possono contenere UN

float g; SOLO carattere. Nel caso di h[5], esso può contenere un massimo di 5

caratteri, ma il caso delle stringhe lo vedremo più avanti

(c[10] e d[2][5] sono rispettivamente un array e una matrice, che

studieremo più avanti)

Attenzione! Non è possibile assegnare a variabili un nome che appartiene ad una funzione o ad

una parola chiave del linguaggio (ad esempio int, float ecc. sono parole chiave); le parole chiave

sono facilmente identificabili perché il compilatore le mette in evidenza applicando loro il

grassetto.

Una variabile può essere di due tipi diversi:

- Globale: se viene dichiarata al di fuori delle funzioni; in questo caso può essere letta e

modificata da qualsiasi sottoprogramma (sinonimo di funzione) scritta nel codice

- Locale: se dichiarata all’interno di una funzione; così facendo può essere letta e modificata

solo da quel particolare sottoprogramma in cui è definita.

A volte si richiede di dover passare uno o più valori da una funzione ad un’altra.

Nel corso non sono state svolte le funzioni e passaggio di variabili da una funzione ad un’altra

Solitamente una variabile locale viene dichiarata a inizio funzione (ricorda che il main è anch’esso

una funzione), ma ciò non toglie che si possa dichiarare in qualsiasi altro punto del codice.

Attenzione! Per essere utilizzata una variabile deve essere dichiarata in un punto precedente alla

riga di codice in cui si utilizza.

Una variabile può essere anche inizializzata (gli si può affidare un valore) direttamente nella sua

dichiarazione.

Esempi:

int a,b,c; Corretto: ogni variabile è stata dichiarata prima di essere utilizzata

c=b+a; Sbagliato: il compilatore restituirà un errore perché non sono state

inizializzate le variabili a e b (non sa cosa inserire nella variabile c)

int a=5,b=4; Corretto: a e b sono state inizializzate

c=a*b; Sbagliato: la variabile c è stata dichiarata dopo essere stata utilizzata, di

int c; conseguenza verrà visualizzato un messaggio di errore

Vedremo più avanti come non sia necessario stabilire un valore (numero o carattere) per una

variabile in quanto può essere richiesta l’immissione da parte di un operatore (richiesta a video).

Se nel programma abbiamo bisogno di un valore definito possiamo sfruttare la #define. Questa è

particolarmente utile in fase di scrittura e test del programma, perché ci permette di sostituire

valori alti che ci farebbero perdere tempo testando il programma (= provando ad eseguirlo) con

valori molto ridotti controllando quindi se ci sono grossi errori strutturali; il tutto senza dover

cercare e cambiare nel programma numero a numero.

Define: #define nome valore

Attenzione! Non devono esserci né operatori di assegnamento (=) né punti e virgola (;).

Errori comuni

Qui NON tratteremo di array, matrici, stringhe o strutture, in quanto non ancora trattati come

argomenti

È importante sapere come dichiarare le variabili e ancora di più cosa succede operando con queste

ultime se di tipo diverso.

Le variabili int sono numeri interi, quindi se inizializzate con un numero decimale, o comunque se

venisse effettuata un’istruzione di assegnamento da un numero float a uno decimale risulterebbe

troncata la parte decimale.

Attenzione! Operazioni tra int (float) restituiscono int (float). Operazioni tra int e float

restituiscono un valore float.

Attenzione! Il fatto che venga restituito un valore float non implica che venga salvato come tale: se

la variabile a cui si assegna il valore è una variabile di tipo int, la parte decimale viene troncata.

Esempi:

int a=3,b=5,c; Al termine dell’esecuzione “c” assume il valore 5/3=1 perché, essendo

c=b/a; un’operazione diretta tra due numeri interi, le cifre decimali vengono troncate

int a=3,b=5; Come prima, solo che, essendo “c” una variabile di tipo float, il valore finale

float c; non sarà 1, bensì 1.0

c=b/a;

float c=5/3.0; “c” assume il valore 1.6666 perché è il risultato di un’operazione tra un intero e

un float e la variabile stessa è dichiarata come float (quindi non viene troncata

la parte decimale)

Per quanto riguarda l’inizializzazione di variabili char, esse vengono dichiarate ponendo IL

carattere tra due apici:

Dichiarazione char: char NomeVariabile = ’lettera’;

dove in “lettera” va messa un’unica lettera.

Esempi:

char a=’b’; Corretto: inserita un’unica lettera e tra apostrofi

char a=”b”; Errato: non si può inizializzarla tra virgolette

char a=’bb’; Errato: non possono essere inserite due o più lettere

char a=’\n’; Attenzione! Corretto: i caratteri di escape sono considerati come un carattere

char a=’7’; “a” contiene il settimo carattere della tabella ASCII

Attenzione! Incrementando una variabile char di uno (o decrementandola), viene modificata

assumendo il valore della tabella ASCII successivo (o precedente)

Printf

Il comando printf() è un comando di stampa a video, e serve per visualizzare a chi manda in

esecuzione il programma cosa sta succedendo, ovvero ad esempio cosa deve inserire o cosa gli è

stato mandato a video.

Senza nemmeno un comando di stampa a video l’operatore non avrebbe traccia né modo di

conoscere ciò che sia successo o comunque se i calcoli che ha eseguito siano andati a buon fine.

Stampa a video: printf ( “ messaggio stampato a video “ );

Attenzione! Vanno messe le virgolette e non gli apostrofi. Verrà stampato solo ciò che è tra esso

compreso.

Esistono dei caratteri speciali (caratteri di escape), formati da un backslash e da una lettera;

ognuno ha compiti diversi. I principali sono:

\n Manda a capo per la stampa di testo successivo

\t Sposta il testo che segue di una tabulazione

Esempi:

printf(“Hello World\n”); stampa la scritta Hello World e poi manda a capo

printf(“ \n Hello World”); manda a capo e poi stampa la scritta Hello World

printf(‘Hello World’); Sbagliato: non si possono usare gli apostrofi

printf(“Hello \n World”); stampa Hello, manda a capo e poi scrive World

printf(“Hello\n”); scrittura equivalente a quella precedente, solo che abbiamo

printf(“World”); utilizzato due istruzioni, aumentando la lunghezza del codice

All’interno del printf() si può aggiungere la stampa di una o più variabili.

In base al tipo di dato viene utilizzato un codice diverso:

%d Stampa di un decimale (un solo numero); d=decimale

%f Stampa di un reale; f=float

%c Stampa di un carattere (uno solo); c=char

%s Stampa di una stringa (non abbiamo ancora visto cosa sia una stringa, ma è bene

segnarlo qui per completezza delle informazioni)

Questi vanno inseriti all’interno delle virgolette, e successivamente, dopo alla chiusura di queste

ultime, va messa una virgola alla quale seguono la o le variabili relative a ciò che si vuole stampare.

Attenzione! L’ordine delle variabili deve essere quello in cui compaiono i %d, %f, %c o %s inseriti

nel printf, altrimenti il compilatore segnalerà il relativo errore (se mettiamo il %d a un char ad

esempio).

Stampa con variabili: printf( “ Messaggio %Tipo1 %Tipo2 “ , Variabile1 , Variabile2 );

Attenzione! Tipo1 e Tipo2 vanno sostituiti con d, f, c o s in base al tipo della variabile, mentre al

posto di Variabile1 e Variabile2 vanno messi i nomi delle variabili da voler stampare

Esempio:

int a=1,b=5; corretto: se avessi per caso invertito “a” e “b” non mi

char c=’m’; avrebbe segnalato un errore, ma avrebbe semplicemente

scambiato di posto i valori stampati a monitor. Se invece

printf(“Variabili: %d %d %c\n”,a,b,c); avessi messo “c” al primo o secondo posto sarebbe stato

visualizzato un messaggio di errore

Per quanto riguarda la stampa delle variabili esistono delle modifiche apportabili per rendere più

gradevole la visualizzazione del testo stampato a terminale (monitor).

Per quanto riguarda il %d possiamo inserire tra il % e la d un numero, che indica il numero di cifre

riservate per la stampa del numero; insorgono problemi quando il numero di queste ultime è

maggiore dello spazio indicato nel codice. Se invece il numero risulta più “corto” dello spazio

dedicato a lui, esso verrà allineato a destra

Esempio:

int a=534; Stampa il numero 534 riservandogli spazio per massimo 5 cifre, che

printf(“a= %5d\n”,a); verranno allineate a destra, quindi visualizzeremo due spazi vuoti tra

l’uguale e la prima cifra del numero.

Per il %f anziché decidere quanto spazio riservargli, possiamo stabilire quante cifre decimali

lasciare; otteniamo ciò interponendo tra il % e la f un numero (il numero di cifre decimale

desiderate) precedute dal punto.

Esempio:

float pi= Stampa pi greco con solo le prime due cifre decimali, in quanto tra % e f

3,141592;

printf(“%.2f\n”,pi); abbiamo inserito .2. Se avessimo inserito ad esempio .4 avrebbe

stampato 3.1415

Scanf

La scanf() è l’istruzione complementare al printf(); serve a leggere dati immessi da tastiera per

poterli poi utilizzare nello svolgimento del programma.

Se non esistesse lo scanf() non potremmo ad esempio sviluppare applicazioni che permettono

anche solo di svolgere la somma tra due numeri richiesti a monitor dall’utente.

Acquisizione dati: scanf ( “ %TipoVaribile “ , &NomeVariabile );

Attenzione! Al posto di TipoVariabile va inserito appunto il tipo della variabile (d, f, c o s), mentre

al posto di NomeVariabile va messo il nome della variabile nella quale deve essere salvato il valore

immesso da tastiera. Ricorda che la variabile deve essere stata dichiarata in precedenza.

Attenzione! se il tipo di variabile è una stringa (%s) non va messa la e commerciale (&).

È buona norma prima di mettere uno scanf() inserire un printf() nel quale illustrare l’utente su

cosa deve inserire (perché se ci sono più inserimenti non si può sapere quale sia il dato immesso, e

oltretutto se non si vengono a verificare errori nell’acquisizione di dati).

Esempi:

int numero; Acquisizione intero

scanf(“%d”,&numero);

float numDec; Acquisizione decimale

scanf(“%f”,&numDec);

char stringa[30]; Acquisizione stringa. Nota che prima di stringa NON c’è la e

scanf(“%s”,stringa); c

Dettagli
Publisher
A.A. 2013-2014
29 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Andrea.M di informazioni apprese con la frequenza delle lezioni di Informatica e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Politecnico di Milano o del prof Masseroli Marco.