Introduzione al C++, La breve guida di Metal H sul C++ - Capitolo I

« Older   Newer »
  Share  
Metal H
view post Posted on 21/11/2005, 14:14




Ricordo che è possibile riportare quanto scritto qui in altri siti o forum, chi lo fa è però pregato di inserire il mio nick nei riconoscimenti.

Bene: iniziamo!
Allora, la prima cosa da fare per programmare in C++ è procurarsi un IDE, un Integrated Development Environment, ossia un pacchetto software contenente tutti gli strumenti necessari al programmatore: editor, compilatore, debugger, etc.
Uno dei più famosi è certamente Microsoft Visual Studio, che è molto completo (consente di programmare in C++, VB e altri linguaggi), ma è molto costoso.
Un IDE freeware molto valido è scaricabile da qui.
Bene, quando ve lo sarete procurati e lo avrete installato, fate clic (dal menu) su File > Nuovo Progetto e scegliete Console Application, linguaggio C++. Salvate il file del progetto in una cartella qualsiasi, non importa quale, ma è meglio che tutti i files che compongono un progetto si trovino nella stessa directory.
L'unico file che finora ci interessa è main.cpp, il file principale del programma.
Non si deve chiamare necessariamente così, rinominatelo pure.
Cancellate poi quello che c'è al suo interno e scriveteci questo, poi salvate il file.
CODICE
// main.cpp

#include <iostream>

using std::cout;

int main ( )
{
    cout << "Questo è un semplice programma.";
    return 0;
}


Edited by Metal H - 14/12/2007, 13:48
 
Top
Metal H
view post Posted on 30/11/2005, 21:45




Per eseguire il programma, aprite il progetto, e schiacciate il pulsante Compila & Esegui (F9).
Se tutto va bene, dovrebbe comparire una finestra nera per una frazione di secondo.
Per visualizzare l'output evitando che il programma si chiuda così velocemente, modificate il programma:
CODICE
// main.cpp

#include <iostream>
using std::cout;

int main ( )
{
   cout << "Questo è un semplice programma.";
   system ( "pause" );
   return 0;
}


Edited by Metal H - 14/12/2007, 13:50
 
Top
Metal H
view post Posted on 1/12/2005, 14:25




Bene, cominciamo ad analizzare il prgramma che abbiamo scritto:
la riga
CODICE
// main.cpp

è solo un commento, e ci serve a capire il nome del file. Si può omettere, oppure si può scrivere qualche altra cosa al posto del nome del file.
Ricordate, però, che TUTTO quello posto su riga singola dopo
CODICE
//

o su riga multipla tra
CODICE
/*

e
CODICE
*/

è considerato un commento, ed è ignorato dal compilatore (parte dell'IDE che controlla errori di programmazione nei file e li predispone al linking).
Poi, c'è una riga bianca, che viene ignorata anch'essa dal compilatore, ma migliora la leggibilità del programma.
La riga di codice
CODICE
#include <iostream>

Segnala al compilatore che deve includere nel progetto il file "iostream". Questo file serve per usare il manipolatore cout, ed è un file della LIBRERIA STANDARD DEL C++, una raccolta di file inclusi in tutti gli IDE, molto utile.
Per ora, ignorate la riga di codice
CODICE
using std::cout;

potrete comprendere il suo significato solo quando avremo trattato lo scope nei file.
Passiamo ora a
CODICE
int main ( )

Questa riga dichiara la funzione main. Una funzione è un insieme di istruzioni, come vedremo più avanti. Comunque, quando un programma viene avviato, si parte sempre, nell'esecuzione, dalla prima riga di codice della funzione main, non MAIN o Main, perché il C++ è un linguaggio case-sensitive, e distingue maiuscole da minuscole.
Nel nostro caso la nostra istruzione
CODICE
cout << "Questo è un semplice programma.";

si serve del manipolatore di stream cout e dell'operatore di inserimento nello stream di output
CODICE
<<

per inviare in output la stringa (insieme di caratteri), posta tra i doppi apici ("").
Dopo, il programma ferma l'output sullo schermo mettendo in pausa il prompt fino alla pressione su un tasto con l'istruzione
CODICE
system ( "pause" );

e infine termina l'esecuzione con successo con l'istruzione
CODICE
return 0;

Notare che tutto il programma è compreso tra
CODICE
{

e
CODICE
}

che indicano il corpo di main.
REGOLA FONDAMENTALE: PRATICAMENTE OGNI ISTRUZIONE È SEGUITA DAL PUNTO E VIRGOLA.

Edited by Metal H - 14/12/2007, 13:57
 
Top
Metal H
view post Posted on 3/12/2005, 16:42




Anche se fino ad adesso abbiamo fatto pratica con il codice nei programmi C++, ritengo opportuno vedere una parte teorica del linguaggio prima di proseguire.
In questa lezione, infatti, vedremo come fa il nostro IDE a creare l'eseguibile da noi desiderato.
Innanzitutto, occorre precisare che l'IDE è un INSIEME DI TOOLS necessari al programmatore, che però possono essere anche separati.
Vediamo ora le parti dell'IDE, che corrispondono alle fasi di creazione del nostro programma.

PRIMA FASE: EDITOR
Il programma viene scritto con un editor.
Se possedete un IDE, probabilmente l'editor evidenzierà il vostro codice in modo opportuno e indenterà automaticamente le rige nel file, ma ribadisco che un IDE non è strettamente necessario, e un file può essere benissimo scritto con un semplice word processor, come ad esempio Blocco Note.

SECONDA FASE: PREPROCESSORE
Durante questa fase, il programma viene elaborato prima della compilazione. Se nel file sono scritte delle direttive al preprocessore, come ad esempio
CODICE
#include <iostream>

il codice necessario per eseguirle viene manipolato dal preprocessore.

TERZA FASE: COMPILATORE
Questa è una fase fondamentale nella creazione di un programma. Il compilatore, dopo aver accertato che il programma non contiene errori di sintassi (faremo in seguito la distinzione tra errori di sintassi ed errori logici), crea il codice oggetto, ossia il codice che contiene tutte le informazioni necessarie alla creazione del programma. Questo codice si differenzia dal codice sorgente per il fatto che non è modificabile.

QUARTA FASE: LINKER
Siamo ormai giunti alla fine della creazione del nostro programma. Il linker lega (o linka) tutti i file del progetto. In questa fase, il nostro IDE ha bisogno solo del codice oggetto del nostro programma (file .obj) e, se esistono, dei file di intestazione del programma (file .h o .hpp), mentre non ha bisogno dei file sorgente (file .cpp).

ULTIMA FASE: CREAZIONE DELL'ESEGUIBILE
Viene creato il programma eseguibile, pronto per essere avviato.

Edited by Metal H - 16/12/2007, 15:06
 
Top
Metal H
view post Posted on 3/12/2005, 22:56




Bene, vediamo un altro semplice programmino, dopo il quale saremo pronti per lo studio delle variabili.
CODICE
// main.cpp

#include <iostream>
using std::cout;

int main ( )
{
   cout << "\"Campanello\a\"\nBello, eh?\n";
   system ( "pause" );
   return 0;
}

L'output dovrebbe assomigliare a questo:
CODICE
"Campanello"
Bello, eh?
Premere un tasto per continuare...

Inoltre, dovreste sentire un beep.
Cerchiamo di capire perché succede.
Il programma è uguale al primo, a parte il fatto che qui, in mezzo alla stringa inviata in output, si trovano delle sequenze di escape, particolari combinazioni di caratteri, ciascuna con un effetto diverso. Esse possono essere inserite liberamente in mezzo alle stringhe.
CODICE
\a  campanello
\t  carattere di tabulazione
\n  spazio
\\  barra rovesciata (\)
\"  doppi apici (")
\'  apice singolo (')

Senza le sequenze di escape, non potreste visualizzare produrre questi effetti o visualizzare questi simboli.

Edited by Metal H - 16/12/2007, 15:10
 
Top
Metal H
view post Posted on 4/12/2005, 14:11




Bene, allora passiamo a una delle basi del C++: le variabili, presenti in quasi tutti i programmi.
Innanzitutto, occorre definire una variabile:
CITAZIONE
Una variabile è un valore che può cambiare durante l'esecuzione del programma. Essa è identificata da un nome, un indirizzo di memoria e un valore.

Ad esempio, se all'indirizzo di memoria a è memorizzato il valore 5, quell'indirizzo assume il valore 5, ed è riferibile come una variabile.
Esistono diversi TIPI di variabili:

int | variabili che contengono un numero intero con segno (es. +1335)
char | variabili che contengono un carattere, posto tra singoli apici (es. '%')
float | numeri decimali a virgola fissa (es. 45.12)
double | numeri a virgola mobile (maggiore precisione di float, es. 45.12456)


Questi sono i tipi principali di variabili, ritorneremo diverse volte su di essi.
Intanto, creiamo un altro semplice programmino:
CODICE
// main.cpp

#include <iostream>  
using std::cout;

int main ( )
{
  int var1 = 10;
  cout << var1;
  system ( "pause" );
  return 0;
}

Il programma è uguale agli altri, tranne per il fatto che qui viene istanziata la variabile var1, dichiarata come int. Notare che per dichiarare una variabile è necessario scrivere il suo nome preceduto dal suo tipo. Successivamente la variabile viene inizializzzata direttamente (var1 = 10).
Una variabile può anche essere inizializzata fuori dalla sua dichiarazione, ma ricordatevi sempre di effettuare l'inizializzazione, ossia l'assegnamento di un primo valore alla variabile SEMPRE, qualunque sia il suo tipo.
Analizziamo ora la riga
CODICE
cout << var1;

Ovviamente, invia in output 10, il valore di var1, ma non poniamo var1 tra i doppi apici, perché non si tratta di una stringa, mentre invece dobbiamo farlo se vogliamo inviare in output 10 come stringa e non come variabile.
Infatti, se scriviamo
CODICE
cout << "10";

Il programma non vede 10 come un numero intero, ma come un insieme di caratteri A tale che A = {'1','0','\0'}, cioè come una stringa dove '\0' è il terminatore nullo, che non viene visualizzato e che indica la fine di ogni stringa.

Edited by Metal H - 16/12/2007, 15:13
 
Top
Metal H
view post Posted on 5/12/2005, 13:54




Allora, vediamo come si opera con le variabili.
CODICE
// main.cpp

#include <iostream>  
using std::cout;
using std::cin;

int main ( )
{
 int var1 = 0;
 int var2 = 0;
 cout << "Addendo 1? ";
 cin >> var1;
 cout << "Addendo 2? ";
 cin >> var2;
 cout << "Somma: "
        << var1 + var2;
 system ( "pause" );
 return 0;
}

In questo programma, vediamo che c'è un nuovo manipolatore di stream, cin, seguito da >>, l'operatore di inserimento su stream in output.
Cin serve per leggere un dato da una periferica, in questo caso dalla tastiera.
Con l'istruzione
CODICE
cin >> var1;

assegniamo a var1 il valore immesso dall'utente prima di premere il tasto Invio.
Successivamente, ripetiamo il procedimento con var2 e, infine, inviamo in output l'intera operazione var1 + var2, con cout, che visualizza la somma delle due variabili.

Edited by Metal H - 31/8/2007, 13:53
 
Top
Metal H
view post Posted on 5/12/2005, 20:53




Bene, vediamo adesso altre operazioni con le variabili numeriche.
Oltre all'addizione, possiamo fare il prodotto di due o più variabili (simbolo *), la differenza (simbolo -), e la divisione (simbolo /). La precedenza più alta, in istruzioni a cascata, è delle moltiplicazioni e delle divisioni.
Inoltre, esiste l'operazione modulo (simbolo %), che restituisce il resto della divisione tra due variabili.
Ricordate però che:
tra variabili, siano esse int, double o float, TUTTE (tranne una, vedi sotto) le operazioni sopra descritte sono possibili, cioè nessuna di esse genera errori fatali a run-time (vale a dire errori in memoria che terminano istantaneamente il programma in fase di esecuzione).
Però, è possibile incappare in errori logici, cioè errori non segnalati dal compilatore, che però conducono il programma a risultati errati, diversi da quelli desiderati.
Ad esempio, i limiti delle variabili: le variabili int non comprendono tutti i numeri interi, ma è possibile assegnare loro valori tra circa -2000000000 e 2000000000, su una macchina a 32 bit. Se si sconfina, ad esempio con
CODICE
var1= 25645445454 * 4545455;

allora la variabile verrà visualizzata come 0, e il suo valore reale resterà indefinito.
Dunque fate attenzione ai limiti fisici della vostra macchina, e alla DIVISIONE PER ZERO, l'unica operazione veramente IMPOSSIBILE. Se tentate di dividere un nuero per zero direttamete, il compilatore probabilmente NON vi segnalerà un errore di sintassi, ma il programma terminerà in fase di debug.

Edited by Metal H - 31/8/2007, 13:55
 
Top
Metal H
view post Posted on 7/1/2008, 19:40




Capitolo completo, ma comunque passibile di modifiche.
Ultimo aggiornamento: lunedì 7 gennaio 2007.
Per domande o dubbi sugli argomenti trattati nel topic, si prega di aprire nuovi thread dai titoli precisi.
 
Top
8 replies since 21/11/2005, 14:14   2112 views
  Share