UNIVERSITA' DEGLI STUDI DI ROMA "LA SAPIENZA"
FACOLTA' DI INGEGNERIA
Guida all'uso del TurboC/C++ per la programmazione in C
ANNO ACCADEMICO 2000/01
1. Ambiente TurboC/C++
Il TurboC/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++.
1.1. L'Ambiente di sviluppo programmi
Lanciando il TurboC/C++ viene visualizzata la schermata seguente:
Tramite i menù è possibile selezionare i comandi
desiderati. Questo può avvenire sia utilizzando il mouse sia
posizionandosi con le frecce sul comando desiderato e premendo quindi il tasto
invio. Ad un comando può inoltre essere associato un tasto F
(F1...F10) oppure la combinazione Alt-TASTO F, oppure una
sequenza costituita dal tasto Alt seguito da una lettera.
La linea in fondo allo schermo indica alcuni comandi eseguibili direttamente
con i tasti F. Tra questi il comando F1
per richiedere aiuto (help), cioè spiegazioni sulle operazioni
eseguibili nel contesto in cui si lavora ed il comando F10 per
spostare il cursore sulla barra dei menù (linea superiore dello
schermo).
Se si vuole uscire definitivamente dal TurboC/C++ basta eseguire il comando
Quit del menù File (Alt-f e poi q).
Se invece si vuole abbandonare temporaneamente l'ambiente TurboC/C++ si usa il
comando DOS shell del menù File. Per rientrare in
TurboC/C++ si usa il comando DOS exit.
Lo schermo iniziale è diviso in più parti, corrispondenti a
finestre denominate:
<noname00.c/cpp> (sempre presente), <Output>,
<Message>... La finestra di output è quella in cui
vengono mostrati i risultati dell'esecuzione dei programmi. La finestra
noname00.c/cpp è quella in cui viene scritto il testo del
programma, e si chiama finestra di edit. E' possibile ingrandire e
spostare queste finestre, se ne possono inserire di nuove e chiudere quelle
già aperte. Per aprire finestre vedi: menù File comando
Open o New, per spostarle, ingrandirle, chiuderle:
menù Window comando Zoom, Size/Move,
Close. Tutte le finestre che l'utente apre vengono messe una sotto
l'altra, e resta visibile di esse solo il nome (noname00.c/cpp o
Output) ed il numero di controllo. Il numero di controllo è
quel numero che sta a destra del nome della finestra (ad
es. nomame00.c/cpp ha il numero di controllo 1 mentre
Output ha il numero di controllo 2) . Solo l'ultima finestra
aperta è completamente visibile e tutti i comandi o le
funzionalità che si attivano si riferiscono ad essa. Si dice che tale
finestra è attiva. Per rendere attiva una finestra si usa
Alt-n, con n numero di controllo della finestra che si vuole
attivare. Per cambiare finestra attiva, basta premere il tasto F6.
1.2. Come assicurarsi che le compilazioni avvengano tramite il compilatore
ANSI C (e non il compilatore C++)
- Memorizzare il programma sorgente C in un file avente
estensione .C (e non .CPP).
Allo scopo di rendere automatico
l'uso dell'estensione .c si può intervenire
sulla finestra Editor options
specificando il suffisso c
come Default extension (e non CPP).
Tale finestra è accessibile selezionando dal menù
Options la voce Editor e
nel sottomenù risultante la voce Editor
- Verificare nella finestra C++ options che
la scelta corrispondente a Use C++ Compiler sia CPP
extension e non C++ always. Tale finestra è
accessibile tramite selezionando dal menù Options
la voce Compiler e nel sottomenù risultante la voce
C++ options.
- Infine, per fare riferimento allo standard
ANSI del linguaggio C, è opportuno scegliere
nella finestra Source options le Keywords ANSI.
Tale finestra è accessibile tramite selezionando dal menù
Options la voce Compiler e nel sottomenù
risultante la voce Source.
2. Realizzazione di un programma
Mostriamo le operazioni principali da effettuare per redigere, compilare,
eseguire e memorizzare su disco un programma C.
Apertura della finestra di editor
Si esegue il comando Open del menù File (F3),
si inserisce nella casella name il nome di un file (cone estensione
.c). In questo modo si crea un file con il nome specificato in cui
verrà memorizzato il testo del programma (vedi comando Save
più avanti). Se il file già esiste in memoria di massa e deve
essere modificato, occorre specificarne il nome, ed il direttorio se esso si
trova in un direttorio diverso da quello corrente. Viene quindi aperta una
finestra col nome specificato, in cui compare il testo del programma contenuto
nel file.
Scrittura del programma
Per i comandi dell'editor si rimanda al menù Edit per le
operazioni di inserimento e cancellazione del testo ed al menù
Search per la ricerca e sostituzione di parti del testo. Si ricorda
che le frecce consentono di posizionare il cursore nel punto sul quale si
intende lavorare. Quando si ritiene completato il testo del programma questo
può essere salvato nel file associato alla finestra tramite il comando
Save del menù File (F2). Se si vuole salvare
su un nuovo file il comando da utilizzare è Save as, che ne
richiede il nome; in questo caso il file di partenza rimane inalterato.
Compilazione del programma
Tramite il comando Compile del menù Compile
(Alt-c e poi c). Se la compilazione ha successo, il
compilatore segnala Success e premendo un tasto ci si riporta
sulla finestra di edit.
Se invece ci sono errori o avvertimenti, la finestra di compilazione segnala Errors o
Warnings in basso a sinistra. Premendo un tasto, appare la
finestra Messages con i messaggi di avvertimento o errore. I messaggi possono
essere evidenziati con i tasti freccia. Quando un messaggio è
evidenziato, premendo F1 si ottiene una spiegazione estesa
dell'errore (ESC per chiudere la finestra). Premendo invio, il
cursore si posiziona automaticamente sulla parte di programma in cui
è stato commesso l'errore, facilitando così la correzione.
Una volta corretto l'errore si deve ricompilare di nuovo il programma, e
così via fino a ottenere il messaggio Success. A questo
punto conviene salvare nuovamente il programma su file.
Esecuzione del programma
Il comando Run del menù Run (Alt-r
seguito da r) compila il programma e, se non vengono individuati
errori, lo esegue. L'input e l'output dei dati avvengono nella finestra
Output.
Per vedere il risultato dell'esecuzione del programma occorre quindi rendere
tale finestra attiva. Per interrompere il programma (ad esempio nei casi
di non terminazione) si usano i tasti
Ctrl-Pausa.
Creazione di una versione eseguibile del programma
Se il programma viene considerato corretto si può costruire una versione
eseguibile del programma una versione cioè, che si possa utilizzare
senza entrare in TurboC/C++ mandandola in esecuzione direttamente dal DOS. Per
fare ciò, si utilizza il comando Make del menù
Compile (Alt-c seguito da m). In risposta a tale
comando il compilatore memorizza nel direttorio corrente (cioè sul disco
rigido o sul floppy) la versione eseguibile del programma (cioè in
linguaggio macchina che è direttamente comprensibile dal calcolatore).
Si può verificare che nel direttorio corrente viene incluso un file col
nome del programma ed estensione exe.
3. Individuazione degli errori
Uno degli aspetti più importanti dell'ambiente di programmazione
riguarda gli strumenti per l'individuazione degli errori logici contenuti
nei programmi. A questo proposito risulta molto utile fare uso degli strumenti
offerti dall'ambiente di programmazione.
3.1. 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.
Consideriamo il programma seguente che somma n interi specificati
dall'utente.
#include <stdio.h>
int main(void)
{
int i,m,n;
int somma = 0;
printf("Numero dati da sommare = ");
scanf("%d", &n);
for (i = 1; i <= n; i++) {
printf("Prossimo dato = ");
scanf("%d", &m);
somma = somma + m;
}
printf("Somma = %d\n", somma);
return 0;
}
Premendo più volte F7 si esegue il programma passo
passo. Quando si arriva all'istruzione sottolineata, vengono chiesti dati di
input, mostrando la finestra Output, e, per proseguire, occorre
inserirli. Nella finiestra Output si può anche verificare
l'effetto delle istruzioni di output. Il comando Step over del
menù Run (F8), consente di eseguire in un unico passo
l'istruzione corrente, durante l'esecuzione istruzione per istruzione. In
particolare quindi, quando si esegue la chiamata ad una funzione in questa
modalità, non se ne esegue il flusso completo. Ad esempio:
#include <stdio.h>
int fattoriale(int x)
{
int i;
int somma = 1;
for (i = x; i >= 1; i--)
somma = somma * i;
return somma;
}
int main(void)
{
int numero, fatt;
printf("Numero = ");
scanf("%d", &numero);
fatt = fattoriale(numero);
printf("Il fattoriale di %d e' %d", numero, fatt);
return 0;
}
Eseguendo il programma passo passo, arrivati all'istruzione sottolineata dando
il comando Step over il sistema restituisce il valore del fattoriale
senza eseguire la funzione istruzione per istruzione come invece avrebbe fatto
con Trace into.
3.2. Ispezione delle variabili
Durante l'esecuzione passp passo è molto utile verificare
il valore delle variabili del programma. A questo scopo occorre specificare le
variabili di cui si vuole controllare il valore. Per fare ciò si apre il
menù Debug (Alt-d;) e si esegue il comando
Watches. Così facendo si attiva un sottomenù nel quale
si deve scegliere Add watch. Add watch chiede le Watch
Expression, cioè il nome delle variabili di cui si vuole
controllare il flusso (si può attivare direttamente l'opzione Add
watch premendo Ctrl-F7). Facendo riferimento al programma
precedente che somma n interi, può essere utile controllare il valore che assumeranno
istruzione dopo istruzione le variabili somma ed n: queste
sono le Watch Expression che vanno inserite. Per vedere il valore di
tali variabili occorre attivare la finestra Watch, tramite il
menù Windows (Alt-w) e si esegue il comando
Watch. In tale finestra compaiono i valori che assumono le variabili
specificate in precedenza. Se il programma ancora non è stato mandato in
esecuzione nella finestra Watch accanto al nome della generica
variabile ci sarà: Unknown symbol. Non appena si manda in
esecuzione passo passo il programma le variabili assumono i valori determinati
dall'esecuzione del programma. Si noti che quando ci sono due variabili
con lo
stesso nome in due blocchi diversi, viene mostrato il valore della variabile
visibile nella parte di programma in esecuzione.
Durante l'esecuzione passo passo, si può anche effettuare un
controllo più fine sulle variabili mediante il comando Inspect...
dal menù Debug. Questa modalità di ispezione, che
funziona solo quando il programma è in esecuzione, permette di
visualizzare, oltre al valore di una variabile, anche il tipo dichiarato,
e l'indirizzo a partire dal quale essa è memorizzata. Questo
è molto utile quando si hanno assegnazioni inaspettate, dovute ad indirizzi
fuori controllo. Si consideri il seguente programma, che contiene un errore
molto comune in C:
#include <stdio.h>
int main(void)
{
int a = 5;
int b[3];
int i;
for (i = 0; i <= 3; i++)
b[i] = 1;
printf("valore di a = %d; valori di b = [%d, %d, %d]",
a, b[0], b[1], b[2]);
return 0;
}
il programma stampa:
valore di a = 1; valori di b = [1, 1, 1]
e quindi ha cambiato anche il valore di a; perché?
La risposta si
può trovare usando l'esecuzione passo passo, e, dopo aver passato le
dichiarazioni, facendo Inspect... sia di a, che di b. Osservate
che ispezionare un vettore significa ispezionare tutte le sue componenti.
L'indirizzo di a è visibile in alto a sinistra nella
finestra di Inspect. Nell'installazione in Laboratorio, esso è DS:FFF4;
(DS sta per Data Segment; si veda lo Help per maggiori dettagli)
quello di b[0], è DS:FFEE (entrambi in notazione
esadecimale). Poiché un intero in TurboC occupa due byte, b[1] ha
indirizzo DS:FFF0, b[2] DS:FFF2. Quando i giunge a 3, b[3] ha indirizzo
DS:FFF4, che è lo stesso di a, e quindi, assegnando 1 a
b[3], in realtà assegna 1 ad a.
3.2.1 Finestre durante l'esecuzione passo passo con ispezione
In questa fase è utile posizionare le finestre in modo da avere
sempre sotto gli occhi la finestra Watch, e quella del programma da
controllare. Per ridimensionare una finestra si usa il comando Tile
del menù Windows. In alternativa si può usare il comando
Size/Move del menù Windows: muovendo il mouse o usando
le frecce la finestra attiva si sposta e si può organizzare lo schermo a
proprio piacimento. Le finestre di Inspect sono invece
visibili durante l'esecuzione passo passo, e vengono automaticamete chiuse
alla fine dell'esecuzione.
3.3. Punti di arresto
L'esecuzione istruzione per istruzione risulta impraticabile non appena le
dimensioni dei programmi e dei dati diventano significative. Si può per
questo eseguire il comando Go to cursor del menù 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 fino all'ultima istruzione
eseguita.
Si può infine richiedere l'arresto dell'esecuzione del programma solo
in determinati punti usando i comandi Toggle breakpoint e
Breakpoint del menù Debug.
Toggle Breakpoint attiva e disattiva punti di arresto
incondizionato, mentre Breakpoint permette di definire e controllare i
punti di arresto. All'esecuzione di tale comando si apre una finestra in cui
c'è l'elenco dei punti di arresto, la condizione ed il passaggio a cui
tale punto di arresto si attiva. Se sono presenti dei punti di arresto
incondizionati, cioè inseriti col comando Toggle breakpoint non
c'è né la condizione che li determina nè il passaggio in
cui vengono attivati. Se si vuole inserire un punto di arresto, si deve
scegliere l'opzione Edit con Alt-e : si apre così una
finestra di dialogo in cui si possono inserire le seguenti informazioni:
Condition - condizione
Pass Count - numero di passaggio prima dell'attivazione
File Name - nome del file
Line Number - numero della riga del punto d'arresto
3.4. La pila delle attivazioni
La pila delle attivazioni (chiamate) di funzione può essere molto
utile per esaminare l'esecuzione del programma. Per vedere la pila delle
chiamate di funzione si deve esegue il comando Call stack nel
menù Debug, durante l'esecuzione passo passo. Questo comando
apre una finestra in cui è mostrata la pila delle attivazioni nello
stato corrente del programma. Si consideri il seguente programma che contiene
una procedura ricorsiva per il calcolo del fattoriale.
#include<stdio.h>
void fattoriale(int* totale, int numero)
{
if (numero > 1) {
*totale = numero * (*totale);
fattoriale(totale, numero-1);
}
}
int main(void)
{
int fatt = 1;
int n;
printf("Inserisci un numero: ");
scanf("%d", &n);
fattoriale(&fatt, n);
printf("Il fattoriale e' %d\n", fatt);
return 0;
}
Supponendo che al programma venga fornito il valore 4, eseguendo il
comando Call stack subito dopo la quarta chiamanta alla funzione
fattoriale() si ottiene:
fattoriale(1,DS:FFF4)
fattoriale(2,DS:FFF4)
fattoriale(3,DS:FFF4)
fattoriale(4,DS:FFF4)
main()
Si noti che l'ordine dei parametri è invertito rispetto a come essi sono
dichiarati nell'intestazione della funzione. Si noti inoltre che tutte
attivazioni della funzione fattoriale() hanno il parametro
totale pari a DS:FFF4 perchè tutte le chiamate fanno
riferimento alla stessa locazione di memoria (la locazione memorizzata nel
parametro totale, che è un puntatore).
4. I comandi dei menù
4.1. Menù File
- New
Apre una nuova finestra di edit con il nome fittizio nomamexx.c/cpp
(xx è un numero da 00 a 99) ed
automaticamente rende la finestra attiva.
- Open
Questo comando introduce ad una "finestra di dialogo". In essa troviamo
una casella, Name, in cui va inserito il nome del file da
caricare. Premendo il tasto freccia in giù compare una finestra in cui
ci sono tutti i file che sono stati aperti dall'inizio della sessione di
lavoro, e che quindi possono essere facilmente richiamati. Sotto la casella
Name c'è la finestra Files. Essa contiene il nome dei
file nel direttorio corrente e che quindi è possibile caricare. Per
entrare nella finestra si deve premere Alt-f, e poi spostarsi sul file
che interessa attraverso le frecce. Premendo invio si apre il file
selezionato. Le operazioni possibili in questa "finestra di dialogo"
sono: Open apre una nuova finestra di edit e mette il file selezionato
in questa finestra. Replace invece di aprire una nuova finestra
sostituisce il file nella finestra attiva con il file selezionato.
- Save
Salva il file che è nella finestra attiva su disco. Se il file ha il
nome fittizio nonamexx.c/cpp allora viene automaticamente aperta la
finestra (Save as).
- Save as
Non appena viene aperto questo sottomenù, il cursore si trova nella
casella Save File As in cui si deve inserire il nome con il quale si
vuole registrare il programma. Al di sotto di questa casella c'è una finestra
Files in cui appare la lista dei file presenti nel direttorio
corrente. Ancora al di sotto c'è un'ultima finestra (blu) nella quale vengono
date informazioni sui file già esistenti nel direttorio corrente (ad
es. nome, data di esecuzione, memoria occupata) e sulla maschera di
visualizzazione (se ad esempio appare la maschera A:\*.CPP, si
visualizzeranno solo i file che terminano con CPP).
- Save all
Salva tutti i file nelle finestre aperte.
- Change dir
Il comando Change dir conduce ad un sottomenù
nel quale è possibile cambiare il direttorio corrente.
- Print
Stampa il contenuto della finestra attiva.
- Dos Shell
Questo programma permette di abbandonare temporaneamente il TurboC/C++
ed eseguire comandi MS-DOS e programmi. Digitando Exit si rientra
nell'ambiente TurboC/C++.
- Quit
Serve ad uscire dal TurboC/C++.
4.2.Menù Edit
4.3. Menù Search
- Find
Nella riga Text to Find va inserita la stringa da ricercare. Per
iniziare la ricerca va scelto OK altrimenti va scelto Cancel
per tornare alla finestra attiva. Se si vuole inserire una stringa che
si è già ricercato si preme la freccia verso il basso e viene
mostrata l'History list, cioè la lista di tutte le ricerche
fatte da inizio sessione di lavoro. Attraverso le frecce è possibile
selezionare la stringa desiderata, premendo invio si avvia la ricerca.
Se non si vuole ricercare una stringa già cercata basta digitarla
e premere invio. Va notato che inizialmente nella riga del Text to
Find compare la parola su cui si trova il cursore nella finestra di
Edit attiva. In Text to find ho varie opzioni:
- Options
- Case sensitive
Selezionandola il TurboC/C++ fa differenza tra maiuscole e minuscole.
- Whole word only
Cerca solo le parole intere (e non sotto-stringhe).
- Regular expression
Riconosce i caratteri []\*.$^.
- Scope
- Global
Ci si riferisce al testo globale.
- Selected text
Ci si riferisce al testo selezionato.
- Direction
- Forward
La direzione della ricerca va dall'origine alla fine.
- Backward
La direzione della ricerca è opposta.
- Origin
- From cursor
La ricerca inizia da dove è il cursore fino alla fine.
- Entire scope
La ricerca copre l'intero testo.
- Replace
Mostra una finestra di dialogo che consente di introdurre un testo da ricercare
ed il testo da sostituirgli. Ha tutte le opzioni del comando text to find ,in
più c'è un'opzione Prompt on replace la quale se
attivata fa sì che TurboC/C++. prima di operare la sostituzione chieda
un'ulteriore conferma. Si può inoltre sfruttare la funzionalità
Change all che consente di cambiare tutte le corrispondenze trovate (e
non solo la prima).
- Search again
Ripete l'ultimo comando Find o Replace eseguito.
- Go to line number
Sposta il cursore sulla linea di cui si è indicato il numero.
- Previous error
Sposta il cursore sulla linea in cui si è commesso l'errore precedente.
- Next error
Sposta il cursore sulla linea in cui si è commesso l'errore successivo.
- Locate function
Attivo soltanto durante una fase di debugging, apre una finestra di dialogo
in cui si può inserire il nome della funzione da ricercare.
4.4. Menù Run
- Run
Esegue il programma fino al successivo punto d'arresto, o fino
alla fine se non ce ne sono.
- Program reset
Ferma l'attuale sessione di debug, rilascia la memoria
allocata, chiude ogni file aperto che il programma stava usando.
- Go to cursor
Serve per far eseguire al TurboC/C++ tutte le istruzioni dal inizio
della funzione main() fino al punto in cui è posizionato il
cursore.
- Trace into
Esegue il programma una riga per volta.
- Step over
Consente di eseguire in un unico passo la chiamata ad una
procedura, o funzione, senza cioè seguire il flusso completo della
procedura.
- Arguments
Permette di passare argomenti al programma da eseguire come
se fossero scritti nella riga di comando DOS.
4.5. Menù Compile
- Compile
Compila il programma nella finestra di Edit attiva.
- Make
Compila il programma nella finestra di Edit attiva,
generando un file eseguibile, con il nome della finestra e l'estensione
exe. Tale file viene memorizzato nel direttorio corrente.
- Link
Non trattato (serve se definiamo un progetto -
programma C/C++ diviso su più file).
- Build all
Non trattato (serve se definiamo un progetto -
programma C/C++ diviso su più file).
4.6. Menù Debug
- Inspect
Permette di visualizzare l'indirizzo, il tipo, il valore in
decimale ed in esadecimale di una variabile. Se la variabile
è strutturata, si visualizzano tutte le componenti.
Funziona solo nel mentre il programma è in esecuzione,
quindi si può usare solo nell'esecuzione passo passo o con
punti d'arresto.
- Evaluate/modify
Calcola il valore di una variabile, o di un'espressione, lo visualizza e
permette all' utente di cambiarlo.
- Call stack
Apre una finestra che mostra la pila di chiamate a funzioni con i
relativi parametri dalla più recente alla più vecchia. In fondo
c'è quindi la funzione main(). Ovviamente la finestra è
visibile solo se si sono predisposti punti di arresto, o si sta eseguendo il
programma passo passo.
- Watches
Apre un menù per la gestione dei punti di osservazione,
cioè delle variabili di cui si vuole controllare l'evoluzione.
- Add watches
Inserisce un punto di osservazione; attivando questo comando
compare una finestra di dialogo in cui bisogna inserire l' identificatore
del punto di osservazione e premere invio. Inizialmente nella finestra
compare la parola su cui è posizionato il cursore; è anche
disponibile un elenco delle watches inserite dall'inizio della sessione
di lavoro (si attiva premendo la freccia verso il basso).
- Delete watch
Cancella un punto di osservazione.
- Edit watch
Serve per modificare l'espressione attiva nella finestra
Watch. Selezionando questo comando compare una finestra di dialogo in cui
c'è l'espressione che si vuole modificare.
- Remove all watches
Cancella tutte le espressioni di controllo.
- Toggle breakpoint
Attiva e disattiva punti di arresto incondizionato.
- Breakpoint
Permette di gestire i punti di arresto.
4.7. Menù Project
Non trattato (serve per definire un progetto - programma C/C++ diviso su più file).
4.8. Menù Options
Non trattato. Qui ricordiamo solo che per lavorare con il compilatore ANSI C si
devono selezionare le seguenti opzioni:
- Per rendere automatico l'uso dell'estensione .c per i file
contenente i programmi sorgenti, (estensione necessaria per compilare
con il compilatore C), specificare nella finestra
Editor options il suffisso
c come Default extension (e non CPP).
Tale finestra è accessibile selezionando dal menù
Options la voce Editor e
nel sottomenù risultante la voce Editor
- Per evitare che venga chiamanto indipendentemente dall'estensione il compilatore C++, selezionare nella finestra C++ options
alla voce Use C++ Compiler l'opzione CPP
extension e non C++ always. Tale finestra è
accessibile tramite selezionando dal menù Options
la voce Compiler e nel sottomenù risultante la voce
C++ options.
- Per fare riferimento allo standard
ANSI del linguaggio C, è opportuno selezionare
nella finestra Source options alla voce Keywords
l'opzione ANSI. Tale finestra è
accessibile tramite selezionando dal menù Options
la voce Compiler e nel sottomenù risultante la voce
Source.
4.9. Menù Window
- Size/Move
Usando le frecce si può cambiare la posizione
della finestra attiva (la cui cornice diventa azzurra). Scelta la posizione
si preme invio.
- Zoom
Consente di ingrandire al massimo la finestra
attiva. Se essa è già stata zoomata tale comando la riporta allo
stato precedente.
- Cascade
E' il modulo attivo quando si entra in TurboC/C++: le finestre
sono accatastate ed è visibile solo la finestra attiva, delle altre
si vede solo il nome e il numero.
- Tile
Serve a vedere contemporaneamente tutte le finestre di editing
aperte. Tutte le finestre sono grandi uguali e messe una accanto all'altra
senza sovrapposizioni.
- Next
Rende attiva la finestra successiva.
- Close
Chiude la finestra attiva.
- Close all
Chiude tutte la finestre.
- Message
Apre la finestra Message e la rende attiva.
- Output
Apre la finestra Output e la rende attiva.
- Watch
Apre la finestra Watch e la rende attiva.
- User screen
Consente di vedere l'output di un programma a schermo pieno (tasti
Alt-F5).
- Register
Apre la finestra Register che mostra i registri della CPU.
- List all
Serve per ottenere un elenco di tutte le finestre aperte.
4.10. Menù Help
- Index
Visualizza l'elenco di tutte le parole chiave, le librerie, gli operatori,
le direttive, etc., del TurboC. Molto utile come manuale di
riferimento in linea, per
richiamare la sintassi delle istruzioni, le precedenze tra operatori, e
approfondire aspetti particolari del TurboC, (ad es., l'intervallo dei valori
di int). Il cursore si posiziona sulle parole le cui lettere
sono premute da tastiera (ad es., per trovare il while, basta
immettere "wh").
- Altri comandi
Non trattati.
5. Ambiente TurboC/C++: Domande poste frequentemente (FAQ)
- D: Come entro nell'ambiente TurboC/C++?
R: Cliccando sull'icona presente sullo schermo. In alternativa si
può lanciare il comando tc da una finestra DOS. Se tale comando
non viene riconosciuto, ci si deve prima portare nel sotto-direttorio
bin del direttorio di istallazione del TurboC/C++.
- D: Come esco dall'ambiente TurboC/C++?
R: Usando il menu a tendina File,
e scegliendo Quit.
- D: Come esco temporaneamente al DOS?
R: Usando il menu a tendina File, e scegliendo DOS.
- D: Sono in DOS. Come ritorno all'ambiente TurboC/C++?
R: Con il comando DOS exit.
- D: Come faccio a visualizzare la finestra del TurboC/C++ a schermo intero?
R: Con il comando Alt-invio. Per farla ritornare di
dimensioni normali premere Alt-invio nuovamente.
- D: Come faccio a visualizzare la finestra del TurboC/C++ con 43/50 linee invece di 25?
R: Selezionando dal menù Options la voce
Enviroment e nel menù risultante la voce Preference, e
ponendo l'opzione Screen Size a 43/50 lines.
- D: Come attivo i menu a tendina?
R: Premendo il tasto Alt e l'iniziale del menù
richiesto (ad
es. f per File, w per Windows,
etc.). Nella tendina sono attivi
i tasti cursore.
- D: Non trovo sulla tastiera un carattere (ad esempio
{). Come lo posso digitare?
R: E' possibile comporre un carattere eseguendo in sequenza i
seguenti passi:
- verificare che l'indicatore "Num Lock" sia acceso, se non lo
fosse, accenderlo premendo il tasto "Num Lock"
- premere il tasto Alt, o il tasto Alt Gr
- (senza lasciare il tasto Alt/Alt Gr)
comporre il codice ASCII del carattere con il tastierino numerico sulla destra
- rilasciare il tasto Alt/Alt Gr.
I codici ASCII più usati sono i seguenti:
- 35 per #
- 91 per [
- 93 per ]
- 123 per {
- 125 per }
- 126 per ~
- D: Come passo da una finestra all'altra?
R: Il menu Windows (Alt-w) fornisce tutti i comandi per le
finestre. I più usati sono:
- Alt-F3 per chiudere una finestra
- F5 per lo "zoom" (allargare se è piccola, rimpicciolire se
è grande)
- F6 per passare dall'una all'altra
- D: Come carico un file?
R: Tramite il menu a tendina File (in alternativa, tasto
F3).
- D: Non vedo il file nomefile.txt. Come mai?
R: Per default il TurboC/C++ assume che i file abbiano estensione
.c/.cpp (ciò si può verificare notando il contenuto
della finestra dove si inserisce il nome del file). Per scegliere
file con estensione diversa, va modificata tale estensione (si
ricorda che l'estensione .* è valida per tutti i file).
- D: Dove devo salvare i miei file?
R: Conviene crearsi un direttorio personale, dove salvare tutti i
propri file. Ad esempio, si può creare il direttorio C:\MIO_DIR,
tramite il comando DOS mkdir.
Conviene inoltre fissare come direttorio corrente del TurboC/C++ il direttorio
così creato, scegliendo Current directory dal menu a tendina
File.
- D: Come si compilano e si eseguono i programmi?
R: Si possono usare i menu a tendina. In alternativa, si possono
usare i tasti Alt-F9 per la compilazione e Ctrl-F9 per
l'esecuzione.
- D: Come posso vedere i risultati dell'elaborazione del mio
programma?
R: La maniera più semplice è aprire una finestra per
l'output,
scegliendo Output nel menu a tendina Windows. A questo punto posso
passare dalla finestra del programma a quella dove viene visualizzato
l'output, e viceversa.
- D: Esiste un modo per "pulire" la finestra di output?
R: Occorre includere nel programma C/C++ la direttiva #include<conio.h>. La funzione per pulire lo schermo è clrscr().
- D: Ho fatto eseguire un programma ed il computer si è
bloccato. Cosa devo fare?
R: Probabilmente si è acceduta un'area di memoria riservata
(ad esempio attraverso un puntatore), oppure il programma è
entrato in un ciclo
infinito. Si possono provare i seguenti metodi (nell'ordine):
- Premere Ctrl-Pausa o Ctrl-z per abortire il programma.
- Premere Ctrl-Alt-Canc per fare ripartire il calcolatore.
- Spegnere l'interruttore del calcolatore, attendere 10 secondi, e
riaccenderlo.
Il presente documento è stato redatto da Giuseppe De
Giacomo e Francesco M. Donini, Dipartimento di Informatica e Sistemistica,
Universita' di Roma "La Sapienza", ed è basato sul materiale di diversi
colleghi, in particolare Marco Cadoli, Diego Calvanese, Fabrizio D'Amore, Carla
Limongelli, Marco Temperini.