Lezione 2. Basi di C++, programma "Ciao, come ti chiami e quanti anni hai?": integers, strings e variables

C-immagine1Ciò che in informatica viene chiamato OBJECT è una regione della memoria del computer in cui il TYPE specifica che tipo di informazione può essere posizionata in quella data porzione di memoria. Il momento in cui l’object ha un nome viene chiamato variabile o VARIABLE.

Gli INTEGERS, o numeri interi vengono posti nelle INT VARIABLES, in cui int è semplicemente la contrazione di integer: le int variables, quindi, sono l’oggetto, o regione della memoria del pc, in cui vengono localizzati i numeri interi. Quando invece ci riferiamo ad una stringa di caratteri la regione a cui ci riferiamo è chiamata STRING VARIABLES.

Stroustrup suggerisce di pensare all’object come ad un box in cui posizioniamo un valore dell’informazione, o type, dell’oggetto come nello schema sottostante:

Ogg.1

Ovvero, qui, abbiamo un TYPE INT, nominato età, che contiene l’INTEGER OBJECT 27. Non si possono mettere valori, o VALUES, di un type sbagliato nella variabile: per esempio, non posso scrivere un numero dove, invece, andrebbe una stringa di caratteri o vice versa.

Quindi sarebbe sbagliato scrivere:

string name = 27            //errore: 27 non è una stringa
int age = “Anna”            //errore: “Anna” non è un numero intero

Ora, proviamo a scrivere un mini-programma, o meglio ad implementare il primo “Hello World!” che abbiamo scritto facendogli chiedere il nostro nome.

A seconda della libreria che decidiamo di usare il codice da scrivere risulterà leggermente diverso: qui mostrerò il programma utilizzando iostream, libreria già predefinita su VisualStudio.

Personalmente ho scelto di usare Visual Studio 2013 come compiler sia perché mi piaceva sia perché è scaricabile gratuitamente per studenti, collaboratori open source e piccoli team, al link https://www.visualstudio.com/products/visual-studio-community-vs.

Come avevo già accennato in un articolo precedente (http://wp.me/p6l3wz-1B) quando si programma in C++ l’uso di un compiler è necessario: esso traduce da linguaggio a linguaggio rendendo possibile l’esecuzione di ciò che si è scritto.

Un consiglio spassionato per chi si approccia alla programmazione per la prima volta è evitare di copiare ed incollare i codici ma di scriverli da sé per poterli memorizzare ed imparare ad utilizzare al meglio.

Ora, utilizzando la libreria iostream su Visual Studio oppure, se preferite iniziare senza scaricare nessun programma, potete provare ad usare C++ shell all’indirizzo cpp.sh.

//Leggi nome ed età
#include "iostream"
#include "string"
int main()
{
       int i;    //i è una variabile di integer
       std::cout << "Quanti anni hai? ";
       std::cin >> i;   //leggi l'integer inserito in cout
       std::cout << "Hai " << i << " anni.\n";
       std::string mystr;   //mystr è una variabile di type string
       std::cout << "Come ti chiami? (followed by 'enter'):\n";
       std::cin >> mystr; //legge i caratteri di mystr
       std::cout << "Ciao " << mystr << " (anni " << i <<")!\n";
}

Come già accennato nell’articolo precedente dedicato a C++ quando scriviamo un programma dobbiamo specificare la libreria che utilizziamo postponendola al comando #include e scrivendola tra virgolette (vanno bene sia le classiche “ ” che < >).

Nel caso di questo esercizio, inoltre, stiamo richiedendo di utilizzare come object un numero intero (la nostra età) e poi una stringa di caratteri, ovvero il nostro nome. Ogni volta che vogliamo usare string variables dobbiamo ricordarci di dire al nostro programma non solo di includere la libreria ma anche di tenere conto della regione di memoria utilizzata dal nostro type: ciò significa che oltre a scrivere #include “iostream” (o #include <iostream>) sotto aggiungeremo anche #include “string” (o #include <string>). Non sempre #include “string” è necessario: per esempio su Visual Studio viene richiesto altrimenti ci dà errore mentre su C++ shell si può anche non scrivere ed il programma funziona comunque ma è consigliabile metterlo sempre.

Int main è la funzione utilizzata che dice al programma quando iniziare ad eseguire. All’interno della parentesi graffe { } abbiamo il corpo della funzione che mette in lista tutte le azioni che il programma deve performare: in questo caso è molto semplice, esso deve solo chiederci il nostro nome e la nostra età e, una volta inseriti, salutarci.

Come possiamo notare il programma è diviso in due parti: una dedicata all’età ed all’uso dell’integer (int i) e l’altra all’uso di caratteri e, quindi, alla stringa (string mystr) in cui mystr significa, semplicemente, “my string” (la mia stringa).

I messaggi come std::cout << “Please enter your first name (followed by ‘enter’):\n>>, viene chiamato PROMPT (in inglese significa “suggerimento”) perché sollecitano l’utente a fare un’azione che, in questo caso, è scrivere il proprio nome. Come si potrà notare in seguito, quando si proverà a far partire il proprio programma ciò che è scritto tra le parentesi tonde, all’interno delle virgolette, non viene letto ma è semplicemente un comando che serve a ordinare al pc di attendere fino a che non viene dato l’Invio dall’utente, inoltre \n segnala al cursore di venire posto alla fine della frase.

Il comando std:string mystr, logicamente dice al programma che la variabile del tipo di stringa che ci interessa è quella denominata mystr. Mentre, std::cin >> mystr suggerisce al programma di leggere i caratteri utilizzati da mystr, CIN in particolare si riferisce allo standard input stream definito dalla libreria.

L’operatore >> (get from, prendi da) specifica dove l’input dato deve leggere, nel nostro caso il mystr inserito dall’utente quando richiesto.

L’inserimento di un altro std::cout segnala l’arrivo di un nuovo messaggio da parte del programma per interagire con l’utente che risulterà essere “Ciao + nome inserito + età”.

Si può notare come l’uso delle virgolette “ “ viene fatto in “Ciao” ma non per mystr questo perché le virgolette si usano solamente per le stringhe letterali quando, invece, ci si riferisce al valore di qualcosa come, per esempio, un nome non vengono utilizzate. L’operatore << che viene ripetuto più volte nel corso di questa linea di comando è semplicemente un’abbreviazione per non dover ripetere una riga sotto l’altra la dicitura cout. In altre parole anziché:

cout << "Ciao, ";
cin >> mystr;
cout << "(anni ";
cin >> i;
cout << ")!\n";

Scriviamo semplicemente:

cout <<"Ciao, " << mystr << "(anni " << i << ")!\n";

Come sempre: controllare di non aver dimenticato punti e virgola da qualche parte, errore comunissimo, o di aver scritto qualcosa sbagliato o scordato di chiudere qualche parentesi.

Altra nota importante: se non vi piace o non volete utilizzare sempre std:: potete evitarlo scrivendo prima della funzione principale l’ordine using namespace std;

Qui l’esempio riproposto con tale cambiamento che, sicuramente, risulta più semplice ed immediato rispetto al primo:

//Leggi nome ed età
#include "iostream"
#include "string"
using namespace std;
int main()
{
       int i;        //i è una variabile di integer
       cout << "Quanti anni hai? ";
       cin >> i;     //leggi l'integer inserito in count
       cout << "Hai " << i << " anni. \n";
       string mystr; //mystr è una variabile di type string
       cout << "Come ti chiami? \n";
       cin >> mystr; //leggi la variabile inserita in count
       cout << "Ciao, " << mystr << "(anni " << i << ")!\n";
}
Share the love

Mostra i commenti

Unisciti alla discussione

7 risposte a “Lezione 2. Basi di C++, programma "Ciao, come ti chiami e quanti anni hai?": integers, strings e variables”

  1. Il mio collega, ottimo articolo!!

  2. Ci sono pochi software valenti e di qualità per poter scrivere e creare programmi, anzi, alcuni non sono minimamente all’altezza.

    1. Anairesis dice:Autore

      Grazie mille per i complimenti fatti poco fa, son felice di sapere che il mio articolo sia stato apprezzato! 🙂
      Concordo e aggiungerei che dipende grandemente anche da cosa vuoi/devi programmare. Personalmente mi trovo bene, come ho scritto sul blog, con Visual Studio, di solito lo consiglio sia perché c’è la possibilità di scaricarne la versione completa e gratuita sia per delle features che ha (debugger, third party tools, built in profiler, etc.) anche se penso che per i principianti sia un tantino più difficile da utilizzare di altri.
      Come software open-source è anche interessante QTcode, non so se l’hai mai provato. Tu cosa preferisci?

      1. Ho sempre adorato anche io Visual Studio, poi per fortuna ci sono tanti programmi freeware facilmente scovabili su Google, ne ho provati davvero tanti, Programming Hub od Aide-Ide mi sembrano i migliori! 😉

        1. Anairesis dice:Autore

          Per chi è interessato se ho capito bene, come te, a sviluppare app per smartphone Programming Hub e Aide-Ide son sicuramente buoni ed anche più adatti di VS per iniziare ad imparare (ma anche per chi è già esperto)! Poi, alla fine, ho notato che la maggior parte di programmatori resta innamorato del primo software con cui ha iniziato a lavorare e tendenzialmente non lo abbandona più 😉

          1. Vedo che ci capiamo molto bene!

          2. Vedo che ci capiamo molto bene! 😀

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.