Costanti e Literali in C++

Ciao a tutti, futuri programmatori! Oggi ci imbarcaremo in un viaggio emozionante nel mondo delle costanti e delle literali in C++. Non preoccupatevi se questi termini sembrano un po' spaventosi - alla fine di questa lezione, li userete come un professionista! Iniziamo!

C++ Constants/Literals

Cos'è una Costante e una Literale?

Prima di entrare nei dettagli, capiremo cos'è una costante e una literale. Pensate a loro come agli elementi "inalterabili" nel vostro codice - come il numero di giorni in una settimana o il valore di pi greco. Sono i compagni affidabili che rimangono sempre gli stessi, indipendentemente da ciò che sta succedendo nel vostro programma.

Literali Intere

Iniziamo con qualcosa di familiare - i numeri! In C++, quando scriviamo un numero intero direttamente nel nostro codice, lo chiamiamo una literale intera. È come scrivere un numero su un pezzo di carta - semplice e diretto.

int myAge = 25;
int numberOfPlanets = 8;
int negativeNumber = -10;

In questi esempi, 25, 8 e -10 sono literali intere. Sono lì, sono numeri, senza decimali o cose stravaganti.

Ma aspettate, c'è di più! C++ ci permette di scrivere literali intere in diversi sistemi numerici:

int decimalNumber = 42;     // Decimale (base 10)
int octalNumber = 052;      // Ottale (base 8) - inizia con 0
int hexNumber = 0x2A;       // Esadecimale (base 16) - inizia con 0x
int binaryNumber = 0b101010;// Binario (base 2) - inizia con 0b (C++14 in poi)

Non preoccupatevi se l'ottale, l'esadecimale o il binario sembrano confusi. Per ora, sappiate solo che sono modi diversi per rappresentare lo stesso numero. È come parlare diverse lingue - " quarantadue", "cuarenta y dos" e "quarante-deux" significano tutte la stessa cosa!

Literali a Virgola Mobile

Ora, aggiungiamo dei decimali alla miscela! Le literali a virgola mobile sono numeri con decimali o in notazione scientifica.

float pi = 3.14159f;
double avogadroNumber = 6.022e23;
long double veryPreciseNumber = 1.23456789L;

Qui, 3.14159f è una literale float (notate la 'f' alla fine), 6.022e23 è una literale double in notazione scientifica (e23 significa ×10^23), e 1.23456789L è una literale long double (notate la 'L' alla fine).

Literali Booleane

Le literali booleane sono le più semplici di tutte - ce ne sono solo due!

bool isAwesome = true;
bool isBoring = false;

È tutto! Solo true e false. Sono come il "sì" e il "no" del mondo della programmazione.

Literali Caratteri

Le literali caratteri rappresentano singoli caratteri e sono racchiuse tra singoli apici.

char firstInitial = 'J';
char newline = '\n';
char tab = '\t';

Gli ultimi due esempi mostrano caratteri speciali: '\n' per una nuova riga e '\t' per una tabulazione. Questi sono chiamati sequenze di escape.

Literali Stringa

Le literali stringa sono sequenze di caratteri racchiuse tra doppi apici.

std::string greeting = "Hello, World!";
std::string quote = "To be, or not to be, that is the question.";

Ricordate, le stringhe usano doppi apici, mentre i singoli caratteri usano singoli apici!

Definire Costanti

Ora che conosciamo le literali, vediamo come possiamo usarle per creare costanti - valori che non cambiano durante il nostro programma.

La Direttiva Preprocessore #define

Un modo per definire costanti è utilizzare la direttiva preprocessore #define:

#define PI 3.14159
#define MAX_STUDENTS 30

// Uso
double circleArea = PI * radius * radius;
if (numberOfStudents > MAX_STUDENTS) {
std::cout << "Class is full!";
}

La direttiva #define dice al compilatore di sostituire ogni occorrenza di PI con 3.14159 e MAX_STUDENTS con 30 prima di compilare il codice.

La Parola Chiave const

Un modo più moderno e preferito per definire costanti è utilizzare la parola chiave const:

const double PI = 3.14159;
const int MAX_STUDENTS = 30;

// L'uso è lo stesso di #define

La parola chiave const dice al compilatore che queste variabili non possono essere modificate dopo l'inizializzazione.

Mettendo Tutto Insieme

Concludiamo con un piccolo programma che utilizza vari tipi di costanti e literali:

#include <iostream>
#include <string>

#define GAME_NAME "C++ Adventure"

int main() {
const int MAX_LEVEL = 100;
const double XP_MULTIPLIER = 1.5;

int currentLevel = 1;
double currentXP = 0.0;
bool hasCompletedTutorial = false;
char playerRank = 'D';
std::string playerName = "Newbie";

std::cout << "Welcome to " << GAME_NAME << "!" << std::endl;
std::cout << "Player: " << playerName << std::endl;
std::cout << "Level: " << currentLevel << "/" << MAX_LEVEL << std::endl;
std::cout << "XP: " << currentXP << std::endl;
std::cout << "Rank: " << playerRank << std::endl;
std::cout << "Tutorial completed: " << (hasCompletedTutorial ? "Yes" : "No") << std::endl;

return 0;
}

Questo programma utilizza tutti i tipi di costanti e literali che abbiamo discusso. Definisce un nome di gioco usando #define, imposta un livello massimo e un moltiplicatore di XP usando const, e utilizza vari literali per inizializzare le statistiche del giocatore.

Conclusione

Congratulazioni! Avete appena compiuto i primi passi nel mondo delle costanti e delle literali in C++. Ricordate, queste sono le fondamenta dei vostri programmi - i valori inalterabili che utilizzerete per creare cose straordinarie. Mentre continuate il vostro viaggio di programmazione, troverete che questi concetti li userete ogni giorno. Continuate a praticare, rimanete curiosi, e buona programmazione!

Tipo di Literale Esempio Descrizione
Intero 42, -10, 0, 1000 Numeri interi
Ottale 052, 077 Numeri in base-8 (iniziano con 0)
Esadecimale 0x2A, 0xFF Numeri in base-16 (iniziano con 0x)
Binario 0b101010 Numeri in base-2 (iniziano con 0b, C++14 in poi)
A virgola mobile 3.14, 2.5f, 1e10 Numeri con decimali o in notazione scientifica
Booleana true, false Valori logici
Carattere 'A', '\n', '\t' Singoli caratteri o sequenze di escape
Stringa "Hello", "C++" Sequenze di caratteri

Credits: Image by storyset