Benvenuto! Per postare e godere delle funzionalità del forum registrati, occorrono pochi secondi ed è gratis!

[Guida] Il C++ [CH.01: creiamo progetto, ciao mondo]
(Questo messaggio è stato modificato l'ultima volta il: 14/03/2011, 20:38 da digger.)

Il criceto mannaro
Messaggi: 3,536
Discussioni: 201
Registrato: 03-2011
Mix: 3,737
Ciao a tutti,
visto che le hack di warrock sono fatte in C++ e che molti aspiranti coders non sanno
nemmeno cosa sia il C++, mi è sembrato giusto nell'area coder di partire con una mini-guida
su questo linguaggio.

Non prendetelo come un corso approfondito, mi limiterò a dire lo stretto indispensabile
perché chi è a zero riesca a ad avere l'infarinatura base per partire

Ma cominciamo subito
premetto subito che prenderò molto spunto dal mio libro preferito,
Il linguaggio C autori Kernighan & Ritchie, gli inventori del C

(nota, il libro parla di C, NON di C++, il secondo è una evoluzione del primo)

== [P] Premessa, CREARE UN PROGETTO C++ CONSOLE ==

Tutti i programmini che seguiranno sono di tipo "console" ovvero non hanno interfaccia
grafica, niente finestre, eseguendoli si aprirà una schermata nera (console) dove potrete

vedere l'output del vostro programma e dove potrete ricevere l'input da elaborare.
Niente Finestre, niente textbox, niente mouse, niente di niente.
perché ? perché per iniziare va bene cosi, il minimo indispensabile, niente che confonda e
basta.
E poi le hacks girano senza alcun tipo di input e output visivo quindi va bene cosi.

Vediamo come si crea un progetto con Visual C++ 2008
1. Aprite visual C++
2. Menu File-New-Project
3. a sinistra, project type, selezionate "Win32"
4. a destra tra i templates selezionate "Win32 Console Application"
5. sotto nel campo "name" scrivete il nome del progetto, es. "Test1"
6. sotto ancora, campo location, mettete il percorso in cui creare il progetto (o
selezionarlo con il pulsante a destra "browse", as es. potete scrivere c:\sviluppo\vc\
quindi premete OK

(il risultato sarà in questo caso che in C:\Sviluppo\vc\ verrà creata una cartella nuova di
nome "Test1" e dentro ci troverete i files che andrete a creare per il progetto)

7. vi compare una nuova finestra, "Application settings", selezionate "console application"
e flaggate "Empty project" e premete "Finish"
8. cercate la finestra "Solution Explorer" dovrebbe essere a destra, se non la trovate
andate nel menu View-Solution Explorer
9. tasto destro sulla cartella "Source Files" poi Add-New Item
10. nella finestra che esce dovete scegliere il tipo di file, quindi click sull'icona "C++
File(.cpp)" e in basso nel campo "name" mettete il nome da dare al file, diciamo "main.cpp"
perché sarà il file principale (main) del nostro progetto
11.CLicckiamo Add
Ok, adesso il cursore lampeggia nella schermata bianca grande centrale, che altro non è che
il nostro editor dove andare a scrivere il programma. In alto vedete il nome del file che
state editando al momento, appunto, main.cpp

Diciamo che il programma è scritto, testato etc e vogliamo salvare e uscire:

12. Menu File-Save all (salviamo tutte le modifiche in tutti i files aperti, sorgenti .cpp e
anche files di progetto
13. MEnu File-Exit e siamo usciti da Visual C++ , possiamo andare a fare altro

== [1] Il mio primo programma che fa... NIENTE!! ahaha ==

di solito si inizia con un bel "ciao mondo" ma preferisco con questo perché cosi semplifico
al massimo il primo programma che farete.
Allora, segui le istruzioni per creare un nuovo progetto, invece di Test1 chiamiamolo
"faccioNiente"

Quando siamo arrivati al punto che stiamo editando il file main.cpp dovremo scrivere questo:



    C++ Programming
  1. void main()
  2. {
  3. }





finito

Spieghiamolo un po'
I programmi in C sono composti da Funzioni e Variabili.
Le funzioni altro non sono che blocchi di codice che fa qualcosa che voi potete chiamare da
varie parti del programma ogni volta che ne avete bisogno. Ad esempio RadiceQuadrata
potrebbe essere una funzione, a cui voi passate un numero e lei vi ritorna appunto la radice
quadrata di quel numero, facile no.
Normalmente in C potete dare alla funzioni il nome che preferite (purchè non ne esista già
un'altra con lo stesso nome) però "main" è un'eccezione.
"main" è il nome della funzione DA CUI PARTONO TUTTI I PROGRAMMI C
Ovvero, se abbiamo un programma con 10 funzioni, quando lo eseguite, come fa a sapere quale
deve chiamare per prima? con che ordine eseguirle?
Semplice, PRIMA CHIAMA main , poi qui dentro ci saranno le chiamate a tutte le altre
funzioni.

NOTA: il C è case-sensitive, vuol dire che main e Main sono due cose diverse!!
cosi come una variabile pippo e una PIPPO sono 2 variabili diverse!
quindi occhio alle maiuscole.

E le parentesi graffe?
Servono a delimitare un BLOCCO DI CODICE, ovvero quando aprite la graffa state iniziando un
blocco di codice, quando la chiudete state terminando un blocco di codice.
NEl caso della funzione main abbiamo aperto e chiuso per dire "qui inizia e qui finisce la
funzione main"

E "void" che cavolo è?
semplice, prima del nome della funzione ci si mette il "tipo" di valore che viene tornato
dalla funzione stessa alla fine della sua esecuzione.
Tutte le funzioni infatti dovrebbeeo tornarnarci un valore dopo che sono state eseguite no?
come RadiceQuadrata che ci doveva tornare appunto la radice quadrata.
Beh, che succede se vogliamo fare una funzione che NON TORNA NIENTE? ovvero che fa delle
operazioni, ad esempio visualizzare una scritta, ma non tornare nulla?
appunto, ci mettiamo "void"

quindi

void main()

va letta cosi:

"main" è una funzione che non accetta nessun parametro (parentesi vuote) e che non torna niente (il void davanti)


Ora dobbiamo convertire il nostro sorgente in codice macchina in modo che possa essere
eseguito, come? con l'operazione di "compilazione" con la quale appunto Visual C++ converte
le nostre istruzioni C in istruzioni macchina che il PC capisce e può eseguire.

quindi:

Menu "Build" - "Build solution"

se tutto è andato bene nella finestra di output esce una cosa tipo:

1>------ Build started: Project: CiaoMondo, Configuration: Debug Win32 ------
1>Compiling...
1>main.cpp
1>Linking...
1>Embedding manifest...
1>Build log was saved at "file://e:\sviluppo\vc\faccioNiente\Debug\BuildLog.htm"
1>faccioNiente - 0 error(s), 0 warning(s)
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========


Quello che ci interessa di tutto ciò è quella scritta "Build: 1 succeeded"
vuol dire che è tutto ok e la compilazione è riuscita.

Bene, vogliamo eseguirlo? MEnu "Debug" "Start debugging"
Che succede? si apre una finestra nera (console) e si chiude... perché?
perché il programma non fa nulla! quindi parte, e termina. Bello eh?

Se vi interessa, avete creato il vostro primo eseguibile .exe
Andate a eseguirlo da windows, aprite la cartella (se avete fatto come nella guida) :
c:\sviluppo\vc\faccioNiente\Debug\

ci troverete un "faccioNiente.exe", fate doppio click e vedrete che farà la stessa cosa,
apre schermata nera e la chiude
Ottimo! siete riusciti a creare il primo programma inutile!

== [2] Il mio secondo programma che fa... scrive "ciao mondo" ==

Partite da capo, create un nuovo progetto e chiamatelo "CiaoMondo"

Quando siete all'editor scrivete:



    C++ Programming
  1. #include <stdio.h>
  2. #include <conio.h>
  3. void main()
  4. {
  5. printf("Ciao Mondo!");
  6. }





lo stesso di prima no?
cosa abbiamo aggiunto?

Abbiamo aggiunto che nel blocco di codice che definisce la funzione main ora stiamo facendo

qualcosa, stiamo chiamando un'altra funzione che si chiama "printf"
Cosa fa? fa che visualizza nella console la stringa (testo) che gli passiamo.
Quindi siccome gli stiamo passando la stringa "Ciao Mondo", l'effetto sarà che a video

comparirà la scritta "Ciao Mondo!" chiaro no?

Ora fate il Build e poi Run come prima.
Che succede? si apre la schermata e si chiude... oops non abbiamo visto niente.
Il problema è che è troppo veloce e poi si chiude.
Dobbiamo fermarlo in qualche modo, come?
Ci mettiamo un'altra funzione, che ferma l'esecuzione finchè non premiamo un tasto:



    C++ Programming
  1. #include <stdio.h>
  2. #include <conio.h>
  3. void main()
  4. {
  5. printf("Ciao Mondo!\n");
  6. int ch = getch();
  7. }






Build e poi Run

ok! ora si che ci siamo, compare "ciao mondo! " e poi si ferma
Se premiamo Invio prosegue e chiude finestra e applicazione.

Non preoccupiamoci per ora di getch che ci serviva solo per fermare l'esecuzione.

Visto ? il nostro programma ha fatto qualcosa, ha scritto a video !

Però ci manca di spiegare qualcosa qui...

Che cavolo sono quei #include ?

Bene, il C++ non si inventa quasi niente, siccome "printf" non è un costrutto del linguaggio
C++ ma è una funzione di utilità comune che è stata creata per aiutare il programmatore,
bisogna dire al compilatore DOVE ANDARE A PRENDERE quella funzione.
Se no il compilatore non la conosce e non sa come compilarla.
Bene,

#include <nomefile.h>

fa questo, dice al compilatore, in questo punto (dove c'è l'include) INSERISCI il file
"nomefile.h" e compilalo insieme a tutto il resto del codice scritto dal programmatore.
E siccome in stdio.h guarda caso ci sta il printf ecco che compila anche la funzione printf.

PEr "conio.h" vale lo stesso, è un altro file "include" (si chiamano cosi) che conterrà
altre funzioni utili (nel nostro caso l'ho messo per il getch)

Fate una prova, cancellate la riga #include <stdio.h> e rifate il Build e vedete cosa
succede.

Notate le estensioni:

.cpp <-- codice C++
.h <-- file "header" ovvero file include

Spero si capisca qualcosa
Va bene per oggi direi che può bastare, alla prossima

Digger



digger
13/03/2011, 0:37
#1
Cerca


Messaggi in questa discussione
Il C++ [CH.01: creiamo progetto, ciao mondo] - da digger - 13/03/2011, 0:37
[Nessun oggetto] - da ZioPaperino - 13/03/2011, 0:39

Discussioni simili
Discussione Autore Risposte Letto Ultimo messaggio
  [Guida] CE02 - Cheat Engine - Creiamo un Trainer (.exe) digger 5 3,973 05/09/2012, 0:30
Ultimo messaggio: Pocciox
  progetto mio hack warrock!!! Pocciox 24 6,518 02/02/2012, 15:16
Ultimo messaggio: Pocciox
  [PROGETTO] Lista hack sempre aggiornate! ZioPaperino 22 7,225 26/03/2011, 17:07
Ultimo messaggio: frenky



Utenti che stanno guardando questa discussione: 1 Ospite(i)