Presentazione di PowerPoint - Università degli Studi di Parma

Variabile


Variabile
E‟ un‟astrazione della cella di memoria
Formalmente, è un simbolo associato ad un
indirizzo fisico (posizione all‟interno della
memoria della cella o delle celle associate al
simbolo)

L‟indirizzo fisico di una variabile è fisso e
immutabile all‟interno del programma; può
cambiare il suo contenuto, cioè il valore della
variabile

esempio:
...
Simbolo indirizzo
x
1328
x=4;
1328
4
...
FI - Algoritmi e Programmazione
1
Definizione di variabile
FI - Algoritmi e Programmazione
Esempi


2
Definizione di una variabile
E‟ la frase che introduce una nuova variabile
<tipo><identificatore>


identificata da un simbolo
int x;
/* deve denotare un valore intero*/
float y; /* deve denotare un valore reale*/
char ch; /* deve denotare un valore carattere*/
atta a denotare valori di un ben preciso tipo
FI - Algoritmi e Programmazione
3
FI - Algoritmi e Programmazione
4
1
Inizializzazione di variabili

Caratteristiche delle variabili
E‟ possibile specificare il valore iniziale di una
variabile quando la si dichiara
<tipo><identificatore> = <espr> ;
int x = 32;
double speed = 124.6;
double time = 71.6;
double km = speed*time;
/* inizializzazione mediante una
espressione*/

FI - Algoritmi e Programmazione


Campo d’azione (scope): è la parte di programma
(unità di codifica) entro cui la variabile è nota e può
essere usata

Tipo: specifica la classe di valori che la variabile
può assumere (e quindi gli operatori applicabili)

Tempo di vita: l‟intervallo di tempo in cui rimane
valida l‟associazione simbolo/cella di memoria

Valore: è rappresentato (secondo la codifica
adottata per il tipo cui la variabile appartiene)
nell‟area di memoria associata alla variabile.
5
Esempio


FI - Algoritmi e Programmazione
6
Esempio: algoritmo di risoluzione
Data una temperatura c espressa in gradi Celsius,
calcolare il corrispondente valore f espresso in
Fahrenheit
Approccio:
 si parte dal problema e dalle proprietà nel dominio dei
dati per descrivere poi la soluzione in modo astratto
Specifica della soluzione:
 relazione tra grandezze esistenti nello specifico
dominio applicativo
 C * 9/5 = F - 32
FI - Algoritmi e Programmazione
7


Dato la temperatura in Celsius C
calcolare la temperatura in Fahreneit F
sfruttando la relazione
F = 32 + C *9/5
Solo a questo punto (una volta definito
l‟algoritmo) si effettua la codifica
FI - Algoritmi e Programmazione
8
2
Dipartimento di Ingegneria dell’Informazione
Un possibile programma in C
Università degli Studi di Parma
main()
{
float c;
/* Celsius */
scanf(“%f”, &c);
/* legge il valore di c */
float f = 32 + c * 9/5;
printf ( “Temperatura (F): %f \n”, f);
/* stampa il valore di f */
}
Fondamenti di Informatica
Laurea in
Ingegneria Civile e Ingegneria per l’ambiente e il territorio
Ambienti di programmazione
NB l‟impaginazione (indentazione) serve solo per rendere
più leggibile il programma: in C le istruzioni sono separate
da “;”
FI - Algoritmi e Programmazione
Stefano Cagnoni e Monica Mordonini
9
Costruzione di una applicazione



Perché?
Si deve compilare il file (o i file) che contiene
(contengono) il testo del programma (file sorgente,
estensione .c)
Il risultato sono uno o più file oggetto (estensione .o
(Unix) o .obj (Windows))
si devono poi collegare (linking) i file oggetto l‟uno
con l‟altro e con le librerie di sistema al fine di
creare un unico file eseguibile (estensione .exe
(Windows); nome a piacere o a.out se non si
specifica il nome (Unix))
FI - Algoritmi e Programmazione
11

L‟elaboratore capisce solo il linguaggio macchina
della CPU utilizzata

il nostro programma, definito in un linguaggio di
programmazione simile al linguaggio naturale, opera
su una macchina astratta, „rivestita‟ del sistema
operativo che controlla le periferiche (stampante,
memoria di massa, ecc.)

alcune istruzioni del linguaggio di programmazione
sono dei brevi programmi forniti insieme al
compilatore, che può inglobarli nel programma
eseguibile nella fase di link
FI - Algoritmi e Programmazione
12
3
Librerie di sistema
Eseguire un programma



Insieme di componenti software che consentono di
interfacciarsi col sistema operativo, usare le risorse
gestite da quest‟ultimo e realizzare alcune “istruzioni
complesse” del linguaggio
In pratica, insieme di funzioni „preconfezionate‟,
utilizzabili all‟interno di un file sorgente
FI - Algoritmi e Programmazione



E se non funziona?
 Debugger: strumento in grado di eseguire passo
passo il programma, mostrando i valori delle variabili
e la loro evoluzione e tenendo traccia delle funzioni
via via chiamate
13
Ambienti integrati di programmazione
Una volta scritto, compilato (con il compilatore) e
collegato (con il linker) lo si può eseguire
sull‟elaboratore
FI - Algoritmi e Programmazione
14
Ambiente BorlandC/C++
Automatizzano la procedura di compilazione e
linking dei file
Possono lanciare il programma sulla macchina e
visualizzarne l‟output a video
Incorporano le funzioni di debug

Il BorlandC/C++ è un ambiente integrato per la
messa a punto di programmi in C e in C++.

In questo ambiente è possibile creare,
correggere, compilare, mandare in esecuzione e
memorizzare su disco programmi C/C++.
Noi utilizzeremo il BorlandC
presente nei laboratori di informatica base
FI - Algoritmi e Programmazione
15
ambiente turbo C
16
4
L'Ambiente di sviluppo programmi
Utilizzare il BorlandC/C++ in C

Memorizzare il programma sorgente C in un file
avente estensione .C (e non .CPP).

Dal menù Options:


ambiente turbo C
17
Realizzazione di un programma





per fare riferimento allo standard ANSI del
linguaggio C, è opportuno scegliere nella finestra
Source options le Keywords ANSI.
ambiente turbo C
18
Istruzioni di I/O: printf()
Apertura della finestra di editor
Scrittura del programma e suo salvataggio (F2)
Compilazione del programma (success, warnings,
errors)
Esecuzione del programma (run)
 L‟input e l‟output dei dati avvengono nella finestra
output
Creazione di una versione eseguibile del programma
 make: viene creato un .exe nella cartella corrente
ambiente turbo C
Verificare nella finestra C++ options che la scelta
corrispondente a Use C++ Compiler sia C++
extension e non C++ always
19
printf(stringa di formato
[,lista di espressioni])



per visualizzare dati sullo standard output (monitor)
lista di espressioni  espressione {,espressione}
 sono le espressioni il cui valore deve essere visualizzato
stringa di formato: contiene i caratteri da visualizzare ed i
simboli di formato che rappresentano i valori delle espressioni
da visualizzare, specificate nella lista di espressioni:
 %d
per la visualizzazione di un numero intero
 %f
per la visualizzazione di un numero reale
 %c
per la visualizzazione di un carattere
 %s
per la visualizzazione di una stringa
ambiente turbo C
20
5
Istruzioni di I/O: printf()
Istruzioni di I/O: scanf()
printf (“Questa è una frase di prova\n”);
scanf (stringa di formato ,
lista indirizzi di variabili)
printf (“La somma di
%d\n”, m, n, m+n);

%d
e
%d
risulta:
printf
(“Il
codice
ASCII
%d\nviene
visualizzato come %c\n”,61,61);
Quando viene eseguita produce il seguente output:
Il codice ASCII 61
viene visualizzato come A
ambiente turbo C

Esempio
scanf (“%d %f %c”, &n, &x, &c);
21
Istruzioni di I/O: printf() e scanf()
ambiente turbo C
22
Debugger
printf (“Inserisci un intero, un float e un
carattere: \n”);
scanf (“%d %f %c”, &n, &x, &c);
printf (“Adesso n vale: %d \n”, n);
printf (“
x vale: %f \n”, x);
printf (“ c è il carattere %c”, c);
printf (“e ha %d come codice ASCII \n”, c);
Inserisci un intero, un float e un carattere:
12 3.14 A
(dati che si suppone vengano inseriti)
Adesso n vale 12
x vale 3.14
c è il carattere A e ha 61 come codice ASCII
ambiente turbo C
consente la lettura di dati dallo standard input e la loro
assegnazione alle variabili di cui si specificano gli
indirizzi
lista indirizzi di variabili  indirizzo {,indirizzo}
indirizzo  &variabile
stringa di formato come per printf
23

Consente di




eseguire il programma riga per riga visualizzando
anche il codice delle funzioni chiamate
Interrompere l‟esecuzione del codice in
corrispondenza di una certa riga
controllare istante per istante il valore assunto da
una variabile
vedere istante per istante quali siano le funzioni
attive
FI - Algoritmi e Programmazione
24
6
Individuazione degli errori

Ispezione delle variabili
Esecuzione del programma istruzione per istruzione

Per ottenere una esecuzione istruzione per
istruzione del programma occorre eseguire il
comando Trace into del menù Run. Il programma
viene compilato e viene posta la barra di
esecuzione all'inizio della funzione main(). Ogni
volta che si preme F7 viene eseguita l'istruzione
successiva.
ambiente turbo C


Add watch chiede le Watch Expression, cioè il nome
delle variabili di cui si vuole controllare il succedersi
dei valori

Per vedere il valore di tali variabili occorre attivare la
finestra Watch, tramite il menù Windows (Alt-w) e
attivando Watch. Verranno mostrati i valori delle
variabili quando il programma sarà in fase di
esecuzione (run)
ambiente turbo C
26
Punti d’arresto (breakpoint)
L'esecuzione istruzione per istruzione risulta
impraticabile se il programma da eseguire è
complesso o richiede comunque l‟esecuzione di
numerose istruzioni (es. ciclo da ripetere 1000
volte).
Si può per questo eseguire il comando Go to cursor
del menu Run, che provoca l'esecuzione di tutte le
istruzioni da quella corrente fino al punto in cui è
posizionato il cursore. Nella finestra Watch
compaiono i valori delle variabili aggiornate al
momento dell'ultima istruzione eseguita.
ambiente turbo C
Dal menu Debug (Alt-d) si accede al sottomenu
Watches e si attiva Add watch
25
Punti d’arresto (breakpoint)



E‟ anche possibile specificare a priori dei punti di
arresto (comando set breakpoint) per indicare dove
il debugger deve fermare l‟esecuzione del
programma. Questo può servire:


27
per verificare i valori assunti da una variabile
per valutare un‟espressione logica da cui dipende un
„istruzione condizionale e quindi le istruzioni da
eseguire successivamente, ecc
ambiente turbo C
28
7