1
Linguaggio C Linguaggio C Linguaggio C Linguaggio C
Fondamenti
2
L’obiettivo di oggi è quello di introdurre gli elementi di base che caratterizzano i programmi scritti in linguaggio C:
Le Variabili
Le Costanti
Elementi di BaseElementi di BaseElementi di BaseElementi di Base
3
Con il Termine Variabile intendiamo un’area circoscritta della Memoria Centrale RAM del calcolatore in grado di conservare un valore per un determinato tempo il quale però può essere cambiato durante l’esecuzione del programma.
Le VariabiliLe VariabiliLe VariabiliLe Variabili
4
Per poter fare riferimento alla Varibile dobbiamo associarvi un nome (identificatore), tale nome non può essere composto da caratteri qualsiasi ma deve soddisfare determinati requisiti.
Le VariabiliLe VariabiliLe VariabiliLe Variabili
5
Un Identificatore è una sequenza di una o più lettere (maiuscole o minuscole), cifre o caratteri di sottolineatura (underscore “_”).
N.B. Un Identificatore può iniziare con una lettera o con un Underscore ma non con una cifra.
IdentificatoriIdentificatoriIdentificatoriIdentificatori
6
Esempi:
Corretti: Errati:
calcola somma/numeri
somma_numeri somma numeri
Area3 3Area
IdentificatoriIdentificatoriIdentificatoriIdentificatori
7
Il compilatore C è “Case Sensitive” cioè considera le lettere minuscole diverse da quelle maiuscole permettendo così di creare Identificatori con lo stesso nome ma distinti poiché differiscono fra loro per il formato di una o più lettere.
IdentificatoriIdentificatoriIdentificatoriIdentificatori
8
Non è sufficiente attribuire un nome (Identificatore) ad una variabile per potervi memorizzare un valore, è necessario indicarne anche il tipo.
Le VariabiliLe VariabiliLe VariabiliLe Variabili
9
Per Tipo di Dato si intende un insieme di valori e un insieme di operazioni ch possono essere applicati ad essi.
Ciascun Tipo di Dato ha una sua propria rappresentazione in memoria, ossia sfrutta un certo numero di celle di memoria.
Tipi di DatoTipi di DatoTipi di DatoTipi di Dato
10
I Tipi di Dato si dividono in :
-Tipi Semplici
-Tipi Strutturati
Classificazione dei Tipi di DatoClassificazione dei Tipi di DatoClassificazione dei Tipi di DatoClassificazione dei Tipi di Dato
11
Si dicono Tipi Semplici quei dati di cui è conosciuta a priori dal programmatore l’occupazione in byte in memoria.
Tipi SempliciTipi SempliciTipi SempliciTipi Semplici
12
Si dicono Tipi Strutturati quei dati di cui non è conosciuta a priori dal programmatore l’occupazione in byte in memoria.
Tipi StrutturatiTipi StrutturatiTipi StrutturatiTipi Strutturati
13
Tipi FondamentaliTipi FondamentaliTipi FondamentaliTipi FondamentaliCiascun Tipo Fondamentale di variabili consente di memorizzare dati appartenenti a insiemi diversi (interi, reali, caratteri, ecc.). Ad esempio alcuni tipi sono:
char -128 +127 1 byte
int -32768 + 32767 2 byte
float 1.175494351E-3815 3.402823466E+38 4 byte 14
Il C consente al programmatore di definire dei nuovi Tipi di Dato detti tipi definiti dall’utente (user defined) da affiancare a quelli già preesistenti (built in). Ciò permette quindi di poter definire un nuovo tipo di dato per ogni categoria di informazione (ad es. date, fatture, stipendi, ecc.)
Tipi di DatoTipi di DatoTipi di DatoTipi di Dato
15
Le CostantiLe CostantiLe CostantiLe Costanti
Una Costante è un qualsiasi numero, carattere o stringa di caratteri che può essere utilizzata come valore in un programma.
N.B. Una Costante non può
essere modificata.
16
Le CostantiLe CostantiLe CostantiLe Costanti
Il linguaggio C possiede quattro tipi di costanti:
Costanti Intere
Costanti in virgola mobile
Costanti costituite da stringhe di caratteri
17
Le Parole Chiave sono degli Identificatori Predefiniti poiché sono associati a priori a qualche elemento del linguaggio, ossia hanno un particolare significato per il compilatore C.
Ad esmpio:Printf, scanf, if, char, int,…..
Parole ChiaveParole ChiaveParole ChiaveParole Chiave
18
Un programma C deve contenere nell’ordine:
- Una parte contenente direttive per il compilatore
- La parte dichiarativa- La parte esecutiva, racchiusa tra { }
Struttura di un programma CStruttura di un programma CStruttura di un programma CStruttura di un programma C
19
Le istruzioni che utilizziamo all’interno di un programma C sono delle funzioni il cui codice si trova in librerie esterne al software che stiamo scrivendo, quindi è nostro compito notificare al compilatore quali sono le librerie che dovranno essere incluse per poter codificare correttamente le istruzioni utilizzate.
Direttive per il CompilatoreDirettive per il CompilatoreDirettive per il CompilatoreDirettive per il Compilatore
20
Il modo più semplice per notificare al compilatore quali sono le librerie che dovranno essere incluse è il seguente:
#include <nomelibreria.h>
Questa istruzione inserisce il codice contenuto nella libreria “nomelibreria.h” all’interno del nostro programma eseguibile.
Direttive per il CompilatoreDirettive per il CompilatoreDirettive per il CompilatoreDirettive per il Compilatore
21
La parte dichiarativa di un programma elenca tutti gli elementi che fanno parte di quest’ultima e ha la seguente forma:
Tipo identificatore
DichiarazioneDichiarazioneDichiarazioneDichiarazione
22
Vi troviamo quindi :- la dichiarazione delle costanti Ad esempio:
const float pigreco = 3,14;- la dichiarazione delle variabiliAd esempio:
float pigreco;Oppure
float pigreco = 3,14;
DichiarazioneDichiarazioneDichiarazioneDichiarazione
23
In un programma le dichiarazioni delle variabili e delle costanti devono precedere le istruzioni eseguibili poiché altrimenti i compilatore nell’utilizzare tali dati non sarebbe in grado di determinare quale tipo di dato stia trattando.
DichiarazioneDichiarazioneDichiarazioneDichiarazione
24
Gli Operatori sono simboli (sia singoli caratteri che loro combinazioni) che specificano come devono essere manipolati gli operandi dell’espressione.
Gli OperatoriGli OperatoriGli OperatoriGli Operatori
25
Nell’operazione di assegnamento il valore a destra delll’operatore “ = “ è memorizzato (assegnato) nella variabile specificata dall’operando di sinistra .
L’Operatore di AssegnamentoL’Operatore di AssegnamentoL’Operatore di AssegnamentoL’Operatore di Assegnamento
26
L’Operatore di Divisione “ / “ effettua la divisione tra il primo operando e il secondo, il risultato è indipendente dal tipo di dati che stiamo considerando e viene approssimato in base alle seguenti regole:
Gli Operatori Aritmetici :Gli Operatori Aritmetici :Gli Operatori Aritmetici :Gli Operatori Aritmetici :L’Operatore di Divisione /.L’Operatore di Divisione /.L’Operatore di Divisione /.L’Operatore di Divisione /.
27
- se entrambi gli operandi sono positivi, il risultato sarà troncato:Esempio: ½ vale 0,5 ma per quanto detto il valore finale sarà : 0.- se entrambi gli operandi sono negativi l’approssimazione del risultato dipende dal Compilatore.
Gli Operatori Aritmetici :Gli Operatori Aritmetici :Gli Operatori Aritmetici :Gli Operatori Aritmetici :L’Operatore di Divisione /.L’Operatore di Divisione /.L’Operatore di Divisione /.L’Operatore di Divisione /.
28
Altri tipi di operatori aritmetici sono:-addizione “ + “-moltiplicazione “ * “-sottrazione “ – “
Gli operandi di questi operatori possono essere di qualunque tipo fondamentale, anche diverso uno dall’altro.
Gli Operatori Aritmetici.Gli Operatori Aritmetici.Gli Operatori Aritmetici.Gli Operatori Aritmetici.
29
L’operatore resto ( o modulo ) (%) permette di calcolare il resto di una divisione fra i suoi due operandi .
Esempio :Quoto = Dividendo / Divisore ;Resto = Dividendo % Divisore ;
Gli Operatori Aritmetici.Gli Operatori Aritmetici.Gli Operatori Aritmetici.Gli Operatori Aritmetici.
30
L’operatore incremento ( ++ ) somma 1 al suo operando, l’operatore decremento ( -- ) sottrae 1 al suo operando.Esempio:
y = ++x ; y = x++ ;Equivale a :
x = x+1 ; y = x ;y = x; x = x+1 ;
Gli Operatori Aritmetici.Gli Operatori Aritmetici.Gli Operatori Aritmetici.Gli Operatori Aritmetici.
31
Gli operatori logici sono :-&& ( And )-|| ( Or )-! ( Not )-> ( Maggiore )->= ( Maggiore o Uguale )-< ( Minore )-<= ( Minore o Uguale )-== ( Uguale )-!= ( Diverso )
Gli Operatori Logici.Gli Operatori Logici.Gli Operatori Logici.Gli Operatori Logici.
32
Linguaggio C Linguaggio C Linguaggio C Linguaggio C
Un primo semplice esempio:Calcolo dello spazio di frenata di
un’automobile
33
Vogliamo determinare lo spazio (in metri) necessario ad arrestare un’automobile che viaggia ad una data velocità (in km/h), ipotizzando la decelerazione costante ed uguale a 7,8 m/s2
1. Analisi del problema1. Analisi del problema1. Analisi del problema1. Analisi del problema
34
Una prima rappresentazione in pseudocodice potrebbe essere la seguente:
Richiedi la velocità iniziale in km/h
Calcola lo spazio di frenata
Comunica il risultato in metri
{
}
2. Scrittura dell’algoritmo2. Scrittura dell’algoritmo2. Scrittura dell’algoritmo2. Scrittura dell’algoritmo
35
Secondo l’analisi TOP-DOWN, ogni fase può essere considerata un sottoproblema e pertanto elaborata ulteriormente. Mentre la prima e l’ultima fase sono in una forma sufficientemente semplice, per scomporre la fase Calcola lo spazio di frenata è necessario conoscere le leggi
della cinematica relativa ai moti uniformemente decelerati
Il Metodo TOPIl Metodo TOPIl Metodo TOPIl Metodo TOP----DOWNDOWNDOWNDOWN
36
Il modello matematico (formula) che descrive il fenomeno del moto decelerato è il seguente:
dVs i
2
21=
dove:s è lo spazio necessario all’arresto (in metri)Vi è la velocità iniziale (in m/s)d è la decelerazione (7,8 m/s2)
37
Nel nostro caso, per poter applicare la formula precedente è necessario convertire la velocità iniziale da km/h a m/s. Chiamando ViKmh la velocità in km/h e con Vi quella in m/s si ha:
6,3iKmh
iVV =
38
In conclusione, la fase Calcola lo spazio di frenata può essere vista come:
Conversione della velocità da km/h a m/s
Calcola lo spazio di frenata
Calcolo dello spazio
{
}
39
e, in ulteriore dettaglio:
8,72
1
6,32i
iKmhi
Vs
VV
←
←
Calcola lo spazio di frenata{
}
40
L’algoritmo complessivo rimane comunque
molto semplice, la sola struttura di controllo
utilizzata è la SEQUENZA. Si vedrà adesso
come si passa dall’algoritmo (in questo caso in
pseudocodice) al programma in linguaggio C
41
Ogni programma C deve sempre avere una (ed una sola) funzione main dalla quale inizia l’esecuzione del programma:
3. Scrittura del programma3. Scrittura del programma3. Scrittura del programma3. Scrittura del programma
void main()
...
...
{
}
42
Per funzione si intende un insieme di dati ed
istruzioni, delimitato da una parentesi graffa
aperta ({) e da una parentesi graffa chiusa (}),
a cui è associato un nome. La parola void che
precede il nome della funzione sta ad indicare
che questa non ha un valore
43
La traduzione del primo enunciato del nostro algoritmo:
Richiedi la velocità iniziale in km/h
sottintende, implicitamente due fasi distinte:
1. deve essere presentato sullo schermo un messaggio esplicativo affinché l’utente sia a conoscenza del dato di cui necessitail programma e dell’istante in cuiimmetterlo. Ad esempio:
Dammi la velocità iniziale [km/h]:
44
2. Il dato deve essere effettivamente acquisito e memorizzato al fine di poterloutilizzare in un momento successivo
I linguaggi C non possiedono alcuna istruzione per la comunicazione e l’acquisizione dei dati ma, insieme al compilatore, vengono solitamente fornite un insieme di funzioni che consentono di supplire a questa mancanza. Questo insieme prende il nome di libreria standard
45
Una di queste, la funzione printf, può essere utilizzata per visualizzare messaggi e dati sullo schermo.Scrivendo il seguente programma:
void main()
printf("Dammi la velocità iniziale [km/h]: ");
{
}
al momento della sua esecuzione sullo schermo comparirà il messaggio scritto tra virgolette
#include <stdio.h>
46
Il carattere punto e virgola (;) ha lo scopo
di indicare al compilatore la fine
dell’istruzione. Se viene omesso, il
compilatore interpreterà tutti i caratteri che
seguono come appartenenti ad un’unica
istruzione, con risultati spesso imprevedibili
47
#include <stdio.h>, non è
un'istruzione C ma una direttiva,
un'indicazione diretta al compilatore,
necessaria in questo caso per la corretta
utilizzazione della funzione della libreria
standard, printf
48
A questo punto è necessario che il
programma possa acquisire e memorizzare il
valore della velocità dell’automobile.
In generale, per acquisizione si intende
l’operazione mediante la quale un dato
proveniente da un’unità d’ingresso (in questo
caso la tastiera) viene ricopiato in una
variabile
49
In questo caso, ad esempio, la variabile che
contiene la velocità iniziale dell'automobile,
espressa in km/h, potrebbe essere chiamata arbitrariamente ViKmh. Nulla vieterebbe di
chiamarla con un altro nome, ad esempio x,
ma è consigliato l'uso di un nome mnemonico
poiché permette di ricordare più facilmente il
dato che rappresenta50
Chiamiamo la velocità iniziale dell’automobile ViKmh e, supponendo sia un
valore appartenente all’insieme dei numeri reali, associarle il tipo float:
float ViKmh;
51
In un programma, le dichiarazioni devono precedere le istruzioni eseguibili. La dichiarazione della variabile ViKmh si scriverà quindi prima della funzione main:
#include <stdio.h>
float ViKmh;
void main(){
printf("Dammi la velocità iniziale [km/h]: ");...
} 52
A questo punto si può acquisire il valore della velocità fornito dall’utente mediante la tastiera e memorizzarlo nella variabile ViKmh. Per farlo è necessario fare ricorso ad
una delle funzioni della libreria standard, la funzione scanf. Questa funzione legge i
caratteri battuti sulla tastiera, li converte secondo il formato specificato e ne ricopia il risultato all’indirizzo di memoria indicato
53
Nel nostro esempio:
scanf("%f", &ViKmh);
%f viene detto specificatore di formato e determina in che modo dovranno essere convertiti i caratteri acquisiti (in questo caso in un float)
&ViKmh rappresenta l’indirizzo di memoria in cui andrà ricopiato il dato. Il carattere &(ampersand) che precede l’identificatore ViKmh sta a significare: indirizzo di 54
Specificatore Formato
%c Carattere singolo(char)%d Intero decimale (int)%f Valore reale (float)
La tabella che segue elenca gli specificatori di
formato per i tipi fondamentali:
55
L’enunciato Richiedi la velocità iniziale in km/h dell’algoritmo di partenza potrà adesso essere completamente tradotto nel seguente programma:
#include <stdio.h>
float ViKmh;
void main(){
printf("Dammi la velocità iniziale [km/h]: ");scanf("%f", &ViKmh);
}
56
Si può adesso passare alla fase Calcola lo spazio di frenata di cui riportiamo per comodità qui sotto l'algoritmo:
8,72
1
6,32i
iKmhi
Vs
VV
←
←
Calcola lo spazio di frenata{
}
57
La prima espressione:
6,3iKmh
i
VV ←
In C può essere tradotta in nel seguente modo:
Vi = ViKmh / 3.6
58
Il formalismo è molto simile a quello delle
normali espressioni aritmetiche. Nel
linguaggio C anche la modalità di scrittura,
così come i criteri adottati nella valutazione
delle espressioni, hanno origine dall'aritmetica
tradizionale
59
L'importanza delle espressioni nel linguaggio
C è rappresentata dal fatto che una qualsiasi
espressione terminata dal carattere punto e
virgola ; costituisce un’istruzione. L'azione
che ne deriva consiste semplicemente nella
valutazione dell'espressione
60
In generale, un'espressione è una
combinazione qualsiasi di operandi e
operatori che dà origine a un valore. Un
operando è uno dei valori (costante o variabile)
che viene manipolato nell'espressione.
Poiché un'operando ha un valore, ne segue
che anche gli operandi sono espressioni
61
Quindi:
Sono tutte espressioni in quanto ognuna
di esse rappresenta un valore
ViKmh
ViKmh / 3.6
3.6
62
Gli operatori sono simboli (sia singoli
caratteri che loro combinazioni) che
specificano come devono essere manipolati
gli operandi dell'espressione. Ad esempio,
nel rapporto:
ViKmh e 3.6 sono gli operandi ed il carattere
/ (slash) costituisce l'operatore di divisione
ViKmh / 3.6
63
La valutazione di un'espressione avviene eseguendo le operazioni indicate dagli operatori sui loro operandi secondo le regole di precedenza degli operatori, di norma uguali a quelle dell'aritmetica tradizionale. Ad esempio, nell'espressione:
4 + 10 / 2
come consueto, sarà prima eseguita la divisione e poi l'addizione
64
Il segno = usato nell'espressione:
invece, ha lo stesso significato del segno ←←←←solitamente impiegato negli algoritmi per rappresentare l'operazione di assegnamento.Mediante questo operatore il valore a destra dell'operatore = (rvalue) è memorizzato (assegnato) nell'operando di sinistra (lvalue); quest'ultimo, pertanto deve riferirsi a una locazione di memoria modificabile
Vi = ViKmh / 3.6
65
È quindi lecito scrivere:
se x è il nome di una variabile, mentre sicuramente non avrebbe nessun senso il contrario:
x = 10
10 = x
perché 10 è un valore costante e non può essere modificato
66
E` bene osservare che l'operatore di assegnamento non ha lo stesso significato del segno uguale usato in aritmetica. Pertanto, espressioni del tipo:
x = y e y = x
con x diverso da y, non sono assolutamente equivalenti: nella prima il valore di y è memorizzato nella variabile x; nella seconda, invece, sarà il valore di x ad essere assegnato a y
67
Analogamente, mentre in aritmetica non è
corretto scrivere:
x = x + 5
in C è perfettamente lecito e assume il
significato di: somma alla variabile x il
numero 5 e memorizzane il risultato (ancora)
nella variabile x68
Nell’espressione:
Vi = ViKmh / 3.6
compaiono quindi tre operandi e due operatori,
quello di assegnamento e quello di divisione.
Poiché quest'ultimo ha priorità maggiore del
primo verrà subito effettuata la divisione tra ViKmh e 3.6 e, successivamente, il risultato
sarà memorizzato nella variabile Vi
69
8,72
1 2iVs ←
s = 1 / 2 * Vi * Vi / 7.8
Si vedrà, adesso, come tradurre la seconda espressione dell'algoritmo Calcola lo spazio di frenata:
In C l'operatore di moltiplicazione si indica con l'asterisco *. Non esiste, invece, nessun operatore per l'elevazione al quadrato. Pertanto, la suddetta espressione si scriverà:
70
1 / 2
Nonostante sembri corretta, il valore di questa espressione sarà, tuttavia, sempre zero. Il perché di questa singolarità sta nell'espressione:
Per valutare correttamente un'espressione, il compilatore deve conoscere il tipo di ogni operando coinvolto:
71
nel caso di variabili, il tipo è quello attribuitogli al momento della loro dichiarazione; nel caso di operandi costanti, invece, il tipo viene automaticamente assegnato in base al loro valore e di come questo è stato specificato. Ad esempio le costanti:
10234-56789
vengono automaticamente assimilate a tipi int; 72
vengono considerate dei numeri reali: la prima eccede il massimo valore per una variabile di tipo int, la seconda è chiaramente un valore reale mentre la terza, benché possa essere correttamente rappresentata da una variabile di tipo int, essendo stata specificata con una cifra decimale (anche se zero), viene considerata un valore reale
mentre le costanti:4567898586-567.489.0
73
In base a queste considerazioni, nell'espressione 1/2 le costanti 1 e 2 sono quindi interpretate come operandi di tipo int.
L'operatore binario / effettua la divisione del
primo operando per il secondo.
74
viene considerato come una divisione tra interi positivi ed il risultato, ottenuto da quello reale (0,5) per troncamento è,
pertanto, zero
Quindi, per le considerazioni precedentemente fatte, il rapporto:
1 / 2
75
Il modo più semplice per ovviare a questo inconveniente è quello di trasformare una o entrambe le costanti coinvolte in costanti reali, ad esempio:
1 / 2.0
Se gli operandi coinvolti in un'espressione sono differenti, molti operatori effettuano automaticamente delle conversioni per portarli ad un tipo comune
76
Solitamente, durante questa operazione, l'operando di tipo inferiore viene convertito in quello di tipo superiore (che può rappresentare dei valori più alti).Ad esempio nel rapporto precedente sono coinvolti un operando di tipo intero (1) ed uno reale (2.0). Essendo di tipo differente, prima della divisione, il primo (di tipo inferiore) verrà automaticamente convertito nello stesso tipo dell'altro, (di tipo superiore). Il risultato della divisione sarà ancora del tipo comune, in questo caso un reale
77
È possibile adesso aggiornare il programma che assume una forma quasi definitiva:
#include <stdio.h>
float ViKmh;
float Vi;
float s;
void main()
{
printf("Dammi la velocità iniziale [km/h]: ");
scanf("%f", &ViKmh);
Vi = ViKmh / 3.6;
s = (1 / 2.0) * (Vi * Vi) / 7.8;
...
}78
A questo punto, manca solo la traduzione dell'algoritmo Comunica il risultato in metri che consentirà di far conoscere
all'utente il risultato dell'elaborazione (memorizzato nella variabile s). Ciò può
avvenire utilizzando ancora la funzione printf che, grazie alla sua versatilità,
consente di presentare sullo schermo anche dati e messaggi combinati assieme
79
Ad esempio, se il valore memorizzato nella variabile s fosse 48,5, scrivendo:
printf("Lo spazio per il suo arresto e di %f metri", s);
sullo schermo apparirebbe:
Lo spazio per il suo arresto e di 48.500000 metri
Come si nota, al posto della combinazione di caratteri %f è stato stampato il valore della variabile s (di tipo float), elencato dopo la
virgola80
Come nel caso della funzione scanf, %f è
uno specificatore di formato ed ha lo scopo di
indicare il tipo di dato ed il modo nel quale
dovrà essere presentato sullo schermo.
La printf consente di presentare i dati in
uscita anche con differente precisione e
formato. Ad esempio se ne può stabilire
l'allineamento, il numero di decimali,...
81
Infine, ecco il listato completo del programma:#include <stdio.h>
float ViKmh;
float Vi;
float s;
void main()
{
printf("Dammi la velocità iniziale [km/h]: ");
scanf("%f", &ViKmh);
Vi = ViKmh / 3.6;
s = (1 / 2.0) * (Vi * Vi) / 7.8;
printf("Lo spazio per il suo arresto e di %f metri", s);
}82
Benché questo programma risulti
sostanzialmente corretto, al fine di
aumentarne la leggibilità da parte di altri
programmatori (ed anche di noi stessi, dopo
un certo periodo di tempo), è bene dotarlo di
appositi commenti che lo documentino in
modo appropriato
83
Nel linguaggio C un commento inizia con la
sequenza di caratteri /* e termina con la
sequenza */:
All'interno di un commento è ammesso qualunque carattere con l'esclusione della combinazione */ che determina la fine del
commento stesso
/* Questo è un commento */
84
I commenti possono occupare anche più di
una linea di programma.
Ecco alcuni esempi di commenti:
/* I commenti possono documentare un programma*/
/*
I commenti di questo tipo, in C,
possono occupare diverse righe
*/
85
I commenti non influenzano né la dimensione
né la velocità del programma eseguibile. E`
bene quindi, utilizzarli frequentemente al fine
di rendere più leggibile un programma. Spesso
in un programma ben scritto, i caratteri
utilizzati per i commenti sono addirittura
maggiori di quelli utilizzati per le istruzioni86
Affinché il programma appena scritto possa
essere eseguito, è necessario prima tradurlo in
una forma comprensibile al calcolatore.
Questo compito può essere svolto da appositi
programmi che fanno parte del cosiddetto
software di base. I passi da seguire possono
essere schematizzati dal diagramma di flusso
che segue:
87
Programmasorgente
Editor
Compilatore
LinkerLibrerie
Programmaeseguibile
Esempio: programma per ilcalcolo dello spazio di frenata
File sorgenteEsempio: frenata.c
.obj
.lib
File eseguibileEsempio: frenata.exe
88
I programmi descritti possono differire a
seconda delle implementazioni.
Esistono anche delle versioni che racchiudono,
nello stesso ambiente di sviluppo, le
funzionalità di tutti questi strumenti. Esempi
tipici sono gli ambienti IDE (Integrated
Development Enviroment) Microsoft Visual
C++ e Borland C++