Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- * Validazione dell'input dell'utente
- * Utente inserisce età e vogliamo continuare a chiedere in input l'eta finche l'utente non la mette valida ( ovvero >= 0 )
- */
- #include <iostream>
- int main() {
- /*
- char <= short <= int <= long <= (long long)
- unsigned o meno
- */
- using namespace std;
- cout << sizeof(char) << " " // 1
- << sizeof(short) << " " // 2
- << sizeof(int) << " " // 4
- << sizeof(long) << " " // 4
- << sizeof(long long) << endl; // 8
- // Mia macchina è a 64 bit
- // Deduco che
- // char ( ascii 8 bit ) => output 1 = 1 byte = 8bit
- // short tende ad essere metà di un int (32bit) / 2 = 16bit
- // int tende ad essere 32 bit se possibile ma non vuole essere grande come tutto il registro del processore
- // Mi aspetto 32 bit su una macchina a 64bit
- // Long è più grande dell'int se l'int non è riuscito ad essere a 32 bit ma in questo
- // caso ci è riuscito quindi mi aspetto che long e int siano della stessa dimensione
- // long long cerca di usare più bit possibile quindi nel mio caso 64
- /// Leggo l'input e ripeto la lettura finche l'utente non mi da un positivo accetabile diciamo tra 0 <= input <= 130
- int age;
- // Segnaposto che si ricorda l'indirizzo di memoria a cui risiede questa riga di codice ( proprio in ram )
- label_inizio_lettura:
- cout << "Sono arrivato a riga inizio lettura" << endl;
- cout << "Inserire l'eta' compresa tra 0 e 130: ";
- cin >> age;
- // controlla se ho sbagliato ad inserire un età valida
- if (age >= 0 && age <= 130) {
- cout << "Eta' valida" << endl;
- } else {
- cout << "Eta' non valida" << endl;
- goto label_inizio_lettura;
- }
- // Il goto salta ad un indirizzo di memoria identificato da un etichetta (label)
- // Non si usa perché rende il codice difficile da leggere e propenso ad errori
- // E perché esistono costrutti iterativi che svolgono il suo lavoro
- // Come il while è implementato sotto il cofano
- /**
- while ( condizione ) {
- SE vero eseguo e ripeto
- }
- se falso esco e proseguo senza tornare più indietro
- */
- int i = 0;
- INIZIO_WHILE:
- if(age >= 0 && age <= 130) {
- // MIO CODICE
- cout << i++ << endl;
- goto INIZIO_WHILE;
- }
- /// Equivalente semanticamente (Comportamento di un linguaggio di programmazione si chiama semantica)
- int i = 0;
- while (age >= 0 && age <= 130)
- cout << i++ << endl;
- // // Passiamo alla nostra missione di validare l'input dell'utente
- int age;
- cout << "Inserisci eta (tra 0 e 130)";
- cin >> age;
- while (age < 0 || age > 130) {
- cout << "Inserisci eta (tra 0 e 130)";
- cin >> age;
- }
- cout << "Mi hai detto di avere " << age << " anni" << endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement