La base fondamentale di ogni programma: scopri come memorizzare e gestire i dati.
🖥️ In pratica con Windows Forms: Variabili, tipi di dato e operatori.
Introduzione alle Variabili
In C#, come in ogni linguaggio di programmazione, le variabili sono i contenitori fondamentali che permettono di memorizzare dati durante l'esecuzione del programma. C# è un linguaggio fortemente tipizzato, il che significa che ogni variabile deve avere un tipo di dato specificato che determina quale genere di informazione può contenere.
Cosa Sono le Variabili?
Immagina le variabili come scatole etichettate nella memoria del computer. Ogni scatola ha un nome (il nome della variabile) e può contenere un tipo specifico di oggetto (il tipo di dato). Una volta creata, puoi leggere o modificare il contenuto della scatola.
Dichiarazione e Assegnazione
Per utilizzare una variabile in C# è necessario dichiararla (crearla) e successivamente assegnarle un valore. La sintassi generale è:
Sintassi Base
// Dichiarazione
tipoDato nomeVariabile;
// Assegnazione
nomeVariabile = valore;
// Dichiarazione e assegnazione insieme (consigliato)
tipoDato nomeVariabile = valore;
📌 Convenzioni di Naming (Regole per i Nomi)
❌ NON possono
- Contenere spazi
- Iniziare con un numero
- Essere parole chiave (es.
int,class)
✅ SI deve
- Usare camelCase:
nomeStudente - Scegliere nomi descrittivi
- Evitare abbreviazioni oscure
Esempi Pratici
// ✅ CORRETTO
int numeroStudenti = 25;
string nomeCompleto = "Mario Rossi";
double mediaPrezzi = 19.99;
// ❌ ERRATO
int 123numero; // Non può iniziare con numero
string nome studente; // Non può contenere spazi
int class; // 'class' è parola chiave riservata
Tipi di Dato Fondamentali
Tipi Numerici Interi
I tipi interi memorizzano numeri senza decimali. La scelta del tipo dipende dall'intervallo di valori che devi rappresentare.
| Tipo | Descrizione | Intervallo | Esempio |
|---|---|---|---|
int |
Tipo più comune per numeri interi | -2,147,483,648 a 2,147,483,647 | int età = 25; |
long |
Per numeri interi molto grandi | ±9 quintilioni circa | long popolazione = 7800000000; |
short |
Per numeri interi piccoli | -32,768 a 32,767 | short livello = 4; |
byte |
Per valori da 0 a 255 | 0 a 255 | byte canale = 12; |
Tipi Numerici con Decimali
Per i numeri con la virgola, C# offre tre tipi principali con diverse caratteristiche di precisione.
| Tipo | Descrizione | Precisione | Esempio |
|---|---|---|---|
float |
Precisione singola (7 cifre) | ~6-9 cifre significative | float altezza = 1.75f; |
double |
Precisione doppia (15-16 cifre) | ~15-17 cifre significative | double pi = 3.14159265359; |
decimal |
Alta precisione per calcoli finanziari | 28-29 cifre significative | decimal prezzo = 19.99m; |
💰 Quando Usare decimal?
Usa decimal quando lavori con denaro o calcoli finanziari dove la precisione
è fondamentale. Per la grafica 3D o calcoli scientifici, double è più veloce
e sufficiente. float è raramente necessario nel codice moderno.
Altri Tipi Fondamentali
| Tipo | Descrizione | Esempio |
|---|---|---|
bool |
Valore booleano (vero o falso) | bool isAttivo = true; |
char |
Singolo carattere Unicode | char lettera = 'A'; |
string |
Sequenza di caratteri (testo) | string nome = "Mario"; |
Esempi con bool, char e string
// bool - per condizioni vero/falso
bool isLoggato = true;
bool haComprato = false;
// char - per un singolo carattere (usa apici singoli!)
char iniziale = 'M';
char simbolo = '@';
// string - per testo (usa apici doppi!)
string messaggio = "Benvenuto!";
string email = "mario@example.com";
L'inferenza di Tipo con var
C# offre anche la possibilità di utilizzare la parola chiave var, che permette
al compilatore di inferire automaticamente il tipo di dato in base al valore assegnato.
Utilizzo di var
var messaggio = "Ciao mondo"; // Il compilatore capisce: string
var numero = 42; // Il compilatore capisce: int
var pi = 3.14; // Il compilatore capisce: double
var isAttivo = true; // Il compilatore capisce: bool
⚠️ IMPORTANTE su var
varNON rende C# un linguaggio a tipizzazione dinamica- Il tipo viene determinato in fase di compilazione
- Una volta assegnato, il tipo non può cambiare
varrichiede sempre inizializzazione immediata
var - Cosa Funziona e Cosa No
// ✅ CORRETTO
var nome = "Mario";
nome = "Luigi"; // OK, sempre string
// ❌ ERRATO
var eta; // ERRORE: var richiede valore immediato
var x = 10;
x = "ciao"; // ERRORE: x è int, non può diventare string
📚 Quando Usare var?
Usa var quando il tipo è ovvio dal valore assegnato (es. var nome = "Mario";).
Preferisci il tipo esplicito quando migliora la leggibilità del codice (es. int contatore = 0;).
Costanti con const
Quando si ha bisogno di un valore che non deve mai cambiare durante l'esecuzione
del programma, si utilizzano le costanti con la parola chiave const.
Dichiarazione Costanti
const double TASSO_IVA = 0.22;
const string MESSAGGIO_BENVENUTO = "Benvenuti al corso di C#!";
const int MAX_TENTATIVI = 3;
const double PI_GRECO = 3.14159265359;
📌 Caratteristiche delle Costanti
✅ Vantaggi
- Valore immutabile
- Maggiore sicurezza
- Codice più leggibile
📝 Convenzioni
- Usa UPPER_SNAKE_CASE
- Nomi descrittivi
- Valore al momento della dichiarazione
Esempio Pratico con Costanti
const double PREZZO_BASE = 100.0;
const double SCONTO_STUDENTI = 0.15; // 15%
double prezzoFinale = PREZZO_BASE * (1 - SCONTO_STUDENTI);
Console.WriteLine($"Prezzo finale: {prezzoFinale}€");
// Output: Prezzo finale: 85€
Esempio Pratico Completo
Vediamo ora un programma completo che utilizza variabili di diversi tipi per gestire le informazioni di uno studente universitario.
Program.cs - Gestione Studente
using System;
class Program
{
static void Main()
{
// Dichiarazione e inizializzazione variabili
string nomeStudente = "Mario Rossi";
int eta = 22;
double mediaVoti = 28.5;
bool isLaureato = false;
char votoLaurea = 'A'; // Voto previsto
// Output informazioni iniziali
Console.WriteLine("=== SCHEDA STUDENTE ===");
Console.WriteLine($"Nome: {nomeStudente}");
Console.WriteLine($"Età: {eta}");
Console.WriteLine($"Media voti: {mediaVoti:F1}");
Console.WriteLine($"Laureato: {isLaureato}");
Console.WriteLine($"Voto previsto: {votoLaurea}");
// Modifica dei valori (simulazione aggiornamento)
eta = 23;
isLaureato = true;
mediaVoti = 29.8;
// Output aggiornato
Console.WriteLine("\n=== DOPO LAUREA ===");
Console.WriteLine($"Età: {eta}");
Console.WriteLine($"Laureato: {isLaureato}");
Console.WriteLine($"Media finale: {mediaVoti:F1}");
// Calcolo con costante
const double BONUS_LODE = 1.2;
if (mediaVoti >= 29.0)
{
Console.WriteLine($"Bonus lode: {BONUS_LODE}");
}
}
}
💡 Analisi del Codice
{nomeStudente}- Interpolazione di stringhe con il simbolo ${mediaVoti:F1}- Formattazione a 1 decimale\n- Carattere di nuova lineaconst- Il bonus non cambia mai
Esercizi Pratici
Esercizio 1: Negozio Online
Crea un programma che simula un sistema di e-commerce. Dichiara variabili per:
- Nome prodotto (string)
- Prezzo base (decimal)
- Quantità disponibile (int)
- È in sconto? (bool)
- Percentuale sconto (double)
Calcola e visualizza il prezzo finale considerando lo sconto se presente.
Mostra la soluzione
Soluzione Esercizio 1
using System;
class Program
{
static void Main()
{
// Dichiarazione variabili prodotto
string nomeProdotto = "Laptop Gaming";
decimal prezzoBase = 999.99m;
int quantita = 15;
bool isInSconto = true;
double percentualeSconto = 0.20; // 20%
// Calcolo prezzo finale
decimal prezzoFinale = prezzoBase;
if (isInSconto)
{
prezzoFinale = prezzoBase * (decimal)(1 - percentualeSconto);
}
// Output
Console.WriteLine($"Prodotto: {nomeProdotto}");
Console.WriteLine($"Prezzo base: {prezzoBase}€");
Console.WriteLine($"Sconto: {isInSconto}");
Console.WriteLine($"Prezzo finale: {prezzoFinale:F2}€");
Console.WriteLine($"Disponibilità: {quantita} pezzi");
}
}
Esercizio 2: Calcolatrice IMC
Crea un programma che calcola l'Indice di Massa Corporea (IMC). Usa:
- Nome persona (string)
- Peso in kg (double)
- Altezza in metri (double)
Formula IMC: peso / (altezza * altezza)
Mostra la soluzione
Soluzione Esercizio 2
using System;
class Program
{
static void Main()
{
// Dati persona
string nome = "Mario Rossi";
double peso = 75.5; // kg
double altezza = 1.75; // metri
// Calcolo IMC
double imc = peso / (altezza * altezza);
// Output
Console.WriteLine($"Nome: {nome}");
Console.WriteLine($"Peso: {peso} kg");
Console.WriteLine($"Altezza: {altezza} m");
Console.WriteLine($"IMC: {imc:F2}");
// Valutazione (opzionale)
if (imc < 18.5)
Console.WriteLine("Sottopeso");
else if (imc < 25)
Console.WriteLine("Normopeso");
else
Console.WriteLine("Sovrappeso");
}
}
🎯 Riepilogo Lezione
Hai imparato:
- Dichiarazione variabili
- Tipi di dato fondamentali
- Inferenza con var
- Costanti con const
Prossimi passi:
- Operatori matematici
- Casting tra tipi
- Manipolazione stringhe
- Input utente