Le Basi del Linguaggio C++ PDF

Summary

Questo documento fornisce una introduzione al linguaggio di programmazione C++. Descrive la struttura di un programma e come creare un programma C++. I concetti di algoritmi e di linguaggi di programmazione sono descritti. Offre una introduzione di base al linguaggio.

Full Transcript

# Le basi del linguaggio C++ ## Obiettivi di apprendimento * apprendere la sintassi del linguaggio di programmazione C++ per strutturare un programma * riconoscere i tipi di dato del linguaggio C++ per dichiarare le variabili * distinguere e utilizzare gli operatori in C++ ## 1 Dall'algoritmo al...

# Le basi del linguaggio C++ ## Obiettivi di apprendimento * apprendere la sintassi del linguaggio di programmazione C++ per strutturare un programma * riconoscere i tipi di dato del linguaggio C++ per dichiarare le variabili * distinguere e utilizzare gli operatori in C++ ## 1 Dall'algoritmo al programma Per risolvere un problema è necessario individuare la strategia risolutiva e de- scriverla in una sequenza di passaggi elementari, costruendo un algoritmo. Tuttavia, poiché l'algoritmo non è direttamente eseguibile dall'esecutore, è necessario rappresentarlo in un sistema formale che consenta di renderlo leggibile dal computer. Questo significa trasformare l'algoritmo concettuale in un insieme di istruzioni ben definite, che devono essere scritte in modo chiaro e non ambiguo. Nel caso dei computer, il sistema formale che permette di codificare l'algoritmo risolutivo, cioè di tradurlo nel linguaggio adottato, è il linguaggio di programmazione. L'attività di codifica viene anche indicata con il termine **implementazione**, molto usato in informatica con il significato di rendere concreta un'astrazione. Un algoritmo tradotto in un linguaggio di programmazione prende il nome di **programma**. La disciplina che si occupa di rendere automatici i processi risolutivi dei problemi è detta **programmazione**. | PROBLEMA | Analisi | Codifica in un linguaggio di programmazione | |---|---|---| | | ↓ | | | Algoritmo | | | | | | | | Programma | | | ## 2 I linguaggi di programmazione I linguaggi di programmazione sono sistemi volti a rappresentare gli algoritmi in una forma rigorosa sia dal punto di vista sintattico (cioè occorre rispettare la forma con cui si scrivono le istruzioni) sia da quello semantico (cioè deve verificarsi un corretto utilizzo delle istruzioni). ## 3 Come creare un programma Per creare ed eseguire un programma, occorre seguire alcuni semplici passaggi. * Scrivere un **programma sorgente**, cioè una serie di istruzioni rispettando le regole sintattico-semantiche del linguaggio, che verranno analizzate più avanti. * **Compilare** il programma, cioè tradurlo in un linguaggio comprensibile al microprocessore. * **Collegare** in maniera automatica, tramite il linker, il file oggetto alle librerie standard del linguaggio dichiarate nel codice sorgente: si ottiene così un file eseguibile con estensione exe. * Mandare in esecuzione il **file eseguibile** (si dice lanciare o eseguire il file). | File sorgente | Compilazione | Linker | File eseguibile | |---|---|---|---| | xxxx.cpp | | | xxxx.exe | Queste fasi producono file intermedi differenti a seconda del linguaggio utilizzato. In tutti i casi, al termine si ottiene il file finale (.exe) per l'esecuzione del programma. Per utilizzare il linguaggio C++ è possibile optare fra due strategie differenti: si può utilizzare uno dei tanti compilatori disponibili su Internet direttamente all'inter- no del browser (attraverso una web app) oppure si può installare un ambiente di sviluppo sul proprio PC. Pur con qualche differenza sostanziale, entrambe le soluzioni garantiscono lo stesso risultato finale. Un compilatore tramite web app non necessita di installazione, ma di contro richiede una costante connessione a Internet. ## 4 La struttura di un programma in C++ In un programma scritto in C++ vi è una funzione che deve essere sempre presente, dal momento che il compilatore inizia l'esecuzione proprio da essa. Si tratta della funzione **main()**, alla quale è assegnato il compito di gestire il controllo generale dell'attività del codice. La seguente figura illustra, con un esempio, le parti che compongono un programma. | Direttive iniziali | Funzione main() | Sezione dichiarativa | |---|---|---| | Indicano al compilatore quali librerie dovranno essere usate nel programma. | È la funzione principale di ogni programma C++ e, come tale, deve sempre essere presente. Le parentesi tonde poste dopo il nome *main* rappresentano il simbolo di riconoscimento di una funzione (pertanto, sono sempre presenti accanto a tutti i nomi di funzione). | È la sezione dove si dichiarano le variabili che saranno usate dalle istruzioni presenti nella funzione *main()*. Nel linguaggio C++, a differenza di altri linguaggi di programmazione, non è obbligatorio dichiarare le variabili in una sezione specifica del programma, così come stiamo indicando, ma è comunque buona norma dichiararle all'inizio, in modo da ottenere un codice ordinato che faciliterà la ricerca e la correzione degli errori. | ```c++ #include <iostream> using namespace std; int main() { int a, b, somma; cout << "Inserisci il primo numero: "; cin >> a; cout << "Inserisci il secondo numero: "; cin >> b; somma = a + b; cout << "La somma è " << somma; return 0; } ``` * Le parentesi graffe racchiudono l'intero blocco di codice * **Direttive iniziali** * Indicano al compilatore quali librerie dovranno essere usate nel programma. * **Funzione main()** * È la funzione principale di ogni programma C++ e, come tale, deve sempre essere presente. * Le parentesi tonde poste dopo il nome *main* rappresentano il simbolo di riconoscimento di una funzione (pertanto, sono sempre presenti accanto a tutti i nomi di funzione). * **Sezione dichiarativa** * È la sezione dove si dichiarano le variabili che saranno usate dalle istruzioni presenti nella funzione *main()*. * Nel linguaggio C++, a differenza di altri linguaggi di programmazione, non è obbligatorio dichiarare le variabili in una sezione specifica del programma, così come stiamo indicando, ma è comunque buona norma dichiararle all'inizio, in modo da ottenere un codice ordinato che faciliterà la ricerca e la correzione degli errori. * **Sezione esecutiva (o corpo del programma)** * È la zona in cui vengono scritte le istruzioni che devono essere eseguite. * Ogni istruzione termina con un punto e virgola (;). * Per garantire una buona leggibilità del codice, è utile: * scrivere una sola istruzione per riga; * introdurre nelle istruzioni opportuni spazi (che vengono ignorati dal compilatore). * Le istruzioni lunghe possono essere scritte su più righe successive, dato che è il punto e virgola a segnalare al compilatore la fine dell'istruzione. ## 5 Il primo programma Iniziare a scrivere un primo programma è un modo utile per prendere confidenza con il linguaggio. L'obiettivo è quello di mostrare a video una frase di benvenuto. Per eseguire il programma occorre sottoporlo alla fase di compilazione, che lo trasforma in programma eseguibile. Il programma C++ prevede all'inizio una sezione in cui inserire le **direttive**. In questo caso la direttiva è **#include**, che richiama specifici "file di intestazione" contenenti informazioni necessarie al programma, che solitamente compren- dono le librerie standard del linguaggio. Nello specifico, **iostream** definisce le istruzioni per la gestione delle istruzioni di input/output proprie di C++. Il concetto di **namespace** (spazi dei nomi) indica lo spazio all'interno del quale trovano il proprio raggio di azione i vari identifica- tori (variabili, strutture, oggetti, ecc.) utilizzati nel programma; in questo caso è necessario utilizzare quello standard (std). ```c++ #include <iostream> using namespace std; int main() { cout << "Benvenuto in C++"; return 0; } ``` * L'istruzione **return 0** è legata al concetto di funzione. Per ora basti sapere che è necessaria al buon funzionamento di un programma C++. ## 6 Gli identificatori Gli identificatori sono i nomi definiti dal programmatore per riferirsi in modo univoco a oggetti di categorie diverse: * **variabili** * **costanti** * **funzioni** * **Variabili**: sono contenitori di valori; ogni variabile può contenere un singolo valore, che può cambiare nel tempo. Ogni variabile ha un "tipo", che viene stabilito all'inizio e non può essere cambiato nel corso del programma. * **Costanti**: servono a identificare valori che non cambiano nel tempo; per tale motivo non possono essere considerate propriamente dei contenitori, ma solo come nomi utilizzati per identificare un valore costante per tutta la durata del programma. * **Funzioni**: rappresentano i sottoprogrammi, cioè porzioni autonome di programmi richiamabili. **Tutti gli identificatori devono iniziare con una lettera o con un underscore ( _ ).** * **Non possono iniziare con un carattere numerico.** * **Possono contenere una composizione qualsiasi di lettere, cifre o underscore, ma non spazi.** Per esempio, i seguenti nomi **NON sono identificatori validi**: * 2parole spazio aperto * @mio_mobile * 100 € Mentre lo sono i seguenti: * X * spazio_aperto * sopra * SOTTO * utentel * _primo * SeCoNdO * euro100 Tutti gli identificatori presenti in un programma devono essere diversi tra loro, indipendentemente dalla categoria a cui appartengono. Un identificatore non può avere lo stesso nome di una parola chiave del linguaggio. Inoltre, C++ è case sensitive (cioè tiene conto del maiuscolo o minuscolo), pertanto la variabile *Alfa* è differente da *alfa*, che a sua volta è differente da *ALFA*. ## 7 Dichiarare le variabili Per utilizzare le variabili occorre dichiararle, ossia indicare inizialmente il tipo di dato che il programma potrà contenere. In informatica un tipo di dato (o semplicemente tipo) è un nome che indica l'insieme di valori che una varia- bile può assumere e le operazioni che su tali valori si possono effettuare. Per esempio, dire che la variabile x è di tipo intero significa affermare che x può assumere come valori solo numeri interi e che su tali valori sono ammesse solo certe operazioni (come le operazioni aritmetiche elementari). | Tipo di variabile | Insieme dei valori | |---|---| | *int* | Numeri interi (è possibile precisare *short int* o *long int* per numeri interi piccoli o molto grandi) | | *float* | Numeri reali a 32 bit (singola precisione) | | *double* | Numeri reali a 64 bit (doppia precisione) | | *char* | Caratteri alfanumerici (trattati di fatto come numeri interi) | | *bool* | Assume esclusivamente valori TRUE (vero) o FALSE (falso) | | *string* | Sequenza alfanumerica di caratteri | Per dichiarare una variabile occorre rispettare la seguente sintassi: `<tipo> <variabile>;` È possibile dichiarare più variabili all'interno di una stessa istruzione (basta separarle con una virgola) e anche assegnare un valore iniziale. La seguente tabella riporta alcuni esempi di dichiarazioni di variabili valide in C++. ```c++ int x; int primo = 6, secondo; int tappo = 10; float pgreco = 3.14; string frase; ``` * `int x;` dichiara la variabile intera x * `int primo = 6, secondo;` dichiara le variabili *primo* e *secondo*, entrambe di tipo *int*, di cui la prima ha valore iniziale 6 * `int tappo = 10;` dichiara la variabile *tappo* di tipo *int* assegnando il valore iniziale 10 * `float pgreco = 3.14;` dichiara la variabile *pgreco* di tipo *float* assegnando il valore iniziale 3,14 * `string frase;` dichiara una variabile stringa di nome frase Nel linguaggio C++ l'operatore di assegnamento è il simbolo `=`, a differenza di quanto accade nei diagrammi a blocchi e nello pseudocodice, dove è rappresentato dal simbolo `←`. ## 8 Dichiarare le costanti Con il qualificatore **const** è possibile definire costanti tipizzate, ossia costanti che accettano un valore ammissibile per il tipo di dato al quale sono associate. ```c++ const float PGRECO = 3.14; // Definisce la costante in virgola mobile PGRECO e le assegna il valore 3,14 const char C = 'a'; // Definisce la costante carattere C e le assegna il valore a const int POSTI = 100; // Definisce la costante intera POSTI e le assegna il valore 100 const string ERRORE = "Rilevato errore!"; // Definisce la costante stringa ERRORE, e le assegna il valore Rilevato errore! ``` Il valore di una costante non può essere modificato durante l'esecuzione del programma. ## 9 Le istruzioni di input/output Gli oggetti reali, come monitor e tastiera, divengono oggetti virtuali con cui il linguaggio C++ interagisce attraverso i due operatori di redirezione `<<` e `>>` che specificano la direzione del flusso. * `<< x` si utilizza per effettuare la redirezione dell'output * `>> y` si utilizza per effettuare la redirezione dell'intput Queste due figure rappresentano due istruzioni simboliche che consentono di interpretare i due operatori come una specie di freccia: nel primo caso (operatore di redirezione dell'output `<<`) il valore della variabile x viene inviato al monitor in modo da visualizzarne il contenuto, mentre nel secondo caso (operatore di redirezione dell'input `>>`) quanto digitato sulla tastiera viene inserito all'interno della variabile y. In C++ gli oggetti reali monitor e tastiera prendono rispettivamente il nome di *cout* (console output) e *cin* (console input): ```c++ cout << x; cin >> y; ``` È possibile inviare al video anche stringhe di testo. Per esempio, l'istruzione: ```c++ cout << "Ciao a tutti"; ``` visualizza sul monitor la stringa Ciao a tutti. Se invece si vuole visualizzare il contenuto di una variabile x, la sintassi è la seguente: ```c++ cout << x; ``` Si può utilizzare un unico *cout* per visualizzare contemporaneamente diversi elementi: ```c++ cout << "variabile x=" << x << " e variabile y=" << y << endl; ``` In questo esempio, supponendo che le variabili x e y contengano rispettivamente i valori 10 e 15, a video verrà visualizzato: `variabile x=10 e variabile y=15` La parola chiave **endl** è utile per portare il cursore a capo su una nuova riga. Per accettare i dati inseriti dall'unità di input predefinita, che generalmente è la tastiera, si utilizza la funzione *cin* seguita dall'operatore `>>`. Per esempio, l'istruzione: ```c++ cin >> numero; ``` consente di accogliere all'interno della variabile numero il valore digitato da tastiera. ## 10 Gli operatori ### Gli operatori aritmetici Oltre agli operatori di somma e prodotto, utilizzati nelle esercitazioni precedenti per calcolare il quadrato di un numero, il perimetro e l'area di un rettangolo mediante semplici espressioni matematiche, esistono altri operatori riportati nella tabella seguente. Alcuni di essi possono essere applicati a due operandi (operatori binari), altri a un solo operando (operatori unari). | Operatore | Operazione | Linguaggio C++ | |---|---|---| | + | Addizione | Somma due operandi o concatena due stringhe. | | - | Sottrazione | Sottrae il secondo operando dal primo. | | * | Moltiplicazione | Moltiplica due operandi. | | / | Divisione | Applicato a variabili di tipo intero, produce un risultato troncato della parte decimale. | | % | Resto (modulo) | Fornisce il resto della divisione tra due operandi interi. | | ^ | OR esclusivo | Esegue l'OR esclusivo (XOR) fra i corrispondenti bit di due operandi. | | = | Assegnamento | Assegna alla variabile posta alla sinistra dell'uguale il valore posto a destra. | Di seguito è riportato un esempio. ```c++ int main() { int dividendo=100, divisore=22, quoziente, resto; quoziente = dividendo/divisore; resto = dividendo%divisore; cout << dividendo << "/" << divisore << "=" << quoziente << " con resto " << resto << endl; return 0; } ``` Il precedente frammento di codice produce sul monitor il messaggio: `100/22 = 4 con resto 12` ### Gli operatori unari Gli operatori aritmetici unari si applicano a un solo operando e ne modificano il valore. Si distinguono i seguenti: * **incremento:** `++` `p++;` equivale a: `p = p + 1` * **decremento:** `--` `p--;` equivale a: `p = p - 1` Questi operatori possono essere posti prima dell'operando (prefissi) oppure dopo l'operando (postfissi) e il loro effetto varia a seconda di tale posizione: l'operatore prefisso modifica l'operando prima di utilizzarne il valore, mentre l'operatore postfisso modifica l'operando dopo averne utilizzato il valore. Per esempio, con questa sintassi: ```c++ x = 10; y = x++; ``` * **Postfisso**: si assegna prima il valore della variabile x alla variabile y e poi si incrementa la variabile x. * **In altri termini, equivale a:** * `y = x;` * `x++;` si ottiene `y = 10` e `x = 11`. Invece con questa sintassi: ```c++ x = 10; y = ++x; ``` * **Prefisso**: prima si incrementa la variabile x e poi si assegna il valore alla variabile y. * **In altri termini equivale a:** * `x++;` * `y = x;` si ottiene `y = 11` e `x = 11`. I seguenti frammenti di codice chiariscono l'effetto degli operatori unari `++` e `--`. ```c++ #include <iostream> using namespace std; int main() { int i=15, a; a = (i++)*2; cout << "Post incremento: " << a << "," << i << endl; i=15; a = (++i)*2; cout << "Pre incremento: " << a << "," << i << endl; return 0; } ``` * **Post incremento: 30, 16** * **Pre incremento: 32, 16** Per comprendere il significato di quanto ottenuto, occorre fare una piccola premessa sulla precedenza delle operazioni all'interno delle istruzioni di assegnazione che sono state evidenziate nel codice. È necessario sapere che per l'operatore unario `++` la precedenza va da destra a sinistra. Pertanto, nella prima assegnazione viene prima eseguito il prodotto e poi l'incremento di i. Nella seconda, invece, i viene prima incrementato e poi moltiplicato per 2. Un'altra importante considerazione da fare è che il valore ottenuto con l'incremento, sia pre sia post, diviene effettivo soltanto dall'istruzione immediatamente successiva, mentre nell'espressione in cui esso è inserito rimane ancora fittizio: indipendentemente dal numero di pre o postincrementi presenti all'interno della stessa espressione, questa conterrà sempre il proprio valore iniziale finché l'elaboratore non passa all'esecuzione dell'istruzione successiva. In dettaglio, nella prima operazione viene effettuato prima il prodotto e poi l'istruzione successiva conferma l'aumento della variabile i, mentre nella seconda operazione il preincremento viene effettuato prima del prodotto. Vediamo ancora un esempio. ```c++ #include <iostream> using namespace std; int main() { int i, n; i = 4; n = i; cout << "Valore di n all'inizio: " << n << endl; n = i++; cout << "Valore di n dopo i++: " << n << endl; n = ++i; cout << "Valore di n dopo un ulteriore ++i: " << n << endl; n += i * (n - 4); cout << "Valore finale di n: " << n << endl; return 0; } ``` * **Valore di n all'inizio: 4** * **Valore di n dopo i++: 4** * **Valore di n dopo un ulteriore ++i: 6** * **Valore finale di n: 18** Come vedremo più avanti, l'istruzione `n+=i*(n-4)` equivale all'istruzione `n=n+i*(n-4)`. La variabile n ha inizialmente lo stesso valore di i, ovvero vale 4. Viene poi eseguita l'istruzione `n=i++` . Siccome l'operatore `++` segue il nome della variabile, prima viene memorizzato in n il valore di i, poi il valore di i viene incrementato. Ecco così che n vale ancora 4, mentre i adesso vale 5. Successivamente, si ha `n=++i`; in questo caso l'operatore `++` precede il nome della variabile, quindi prima viene calcolato il valore di i (era 5, ora diventa 6) e poi il risultato è memorizzato in n (che quindi adesso vale 6). Infine, l'espressione `i * (n - 4)`, ovvero `6 * (6 - 4) = 12`, viene sommata al precedente valore di n (come è specificato dall'operatore `+=`); a questo punto dunque il valore di n, che era 6, diviene 12 + 6 = 18. ## Gli operatori relazionali Gli operatori relazionali consentono di costruire espressioni logiche e di formulare quesiti sui dati del programma. Questi operatori confrontano due o più elementi e restituiscono i valori logici booleani *TRUE* o *FALSE* in base al risultato del confronto, come indicato nella seguente tabella. | a == b | Linguaggio C++ | Che cosa restituisce l'operatore | |---|---|---| | *a == b* | `==` | `TRUE` se a è uguale a b | | *a != b* | `!=` | `TRUE` se a è diversa da b | | *a < b* | `<` | `TRUE` se a è strettamente minore di b | | *a > b* | `>` | `TRUE` se a è strettamente maggiore di b | | *a <= b* | `<=` | `TRUE` se a è minore o uguale a b | | *a >= b* | `>=` | `TRUE` se a è maggiore o uguale a b | ## Gli operatori logici Gli operatori logici richiedono come operandi le espressioni booleane e producono un risultato booleano. Sono anche detti **connettivi logici**, in quanto tengono insieme più espressioni logiche formandone un'unica composta. | Linguaggio C++ | Descrizione | |---|---| | `||` | **OR**: il risultato dell'espressione composta è vero se almeno un'espressione di base è vera. | | `&&` | **AND**: il risultato dell'espressione composta è vero se tutte le espressioni di base sono vere. | | `!` | **NOT**: serve a negare il valore logico di un'espressione o di una variabile booleana. | Di seguito sono riportate le tavole di verità associate ai vari operatori logici. | x | y | x && y | x || y | ! x | |---|---|---|---|---| | FALSE | FALSE | FALSE | FALSE | TRUE | | FALSE | TRUE | FALSE | TRUE | TRUE | | TRUE | FALSE | FALSE | TRUE | FALSE | | TRUE | TRUE | TRUE | TRUE | FALSE | ## Gli operatori di assegnamento In un'operazione di assegnamento il valore dell'operando di destra viene assegnato alla locazione di memoria cui fa riferimento l'operando di sinistra. Oltre all'operatore assegnamento `=` visto in precedenza, sono previste delle forme di assegnamento compatte, costituite dall'operatore di assegnamento, accompagnato da un operatore matematico. Di seguito sono presentate le forme compatte di assegnamento. | v += b | Equivale a | |---|---| | v += b | v = v + b | | b -= v | b = b - v | | v *= b | v = v * b | | b /= v | b = b / v | | b ^= v | b = b ^ v | ## Ripasso essenziale **Che cos'è un programma?** È una rappresentazione dell'algoritmo risolutivo tradotto in uno specifico linguaggio di programmazione comprensibile al computer. **Qual è la struttura principale di un programma in C++?** ```c++ <direttive> int main() { <istruzioni> } ``` * **direttive** * **int main()** * **istruzioni** **Quali sono i tipi di dato in C++?** - *int* - *float* - *double* - *char* - *bool* - *string* **Qual è l'istruzione di output in C++?** - *cout* **Qual è l'istruzione di input in C++?** - *cin* **Quali sono gli operatori in C++?** - **aritmetici** - **unari** - **relazionali** - **logici** - **di assegnamento** **Con quale simbolo si rappresentano i commenti in C++?** Doppio slash `//` ## Riorganizzo Completa la mappa inserendo le parole mancanti, scegliendole fra quelle elencate sotto. | PROGRAMMA IN C++ | | |---|---| | Struttura | | | **Tipi di dati** | *int* | | | *char* | | | *string* | | | *float* | | | *double* | | | *bool* | | **Operatori** | *Aritmetici* | | | *Logici* | | | *Di assegnamento* | | **Istruzioni input/output** | *cout* | | | *cin* | | | *Di confronto* | | | *Unari* | ## Approfondisco & rielaboro Rispondi alle domande proposte, effettuando una ricerca sul web. ### Cerco sul web **Domanda 1** Esistono altri tipi di dati oltre a quelli esaminati nell'unità? **Domanda 2** È possibile reindirizzare l'istruzione di output verso altri dispositivi differenti dallo schermo? **Domanda 3** Esistono altri operatori disponibili all'interno del linguaggio C++? | LE PAROLE CHIAVE CHE UTILIZZERÒ PER LA RICERCA | I SITI TROVATI | I MOTIVI PER I QUALI RITENGO ATTENDIBILI I SITI | |---|---|---| | 1) | 1) | 1) | | 2) | 2) | 2) | | 3) | 3) | 3) | **Risposta 1** **Risposta 2** **Risposta 3** **Mi autovaluto** In base alla completezza e alla pertinenza delle risposte che ho trovato, mi do un voto: 1 2 3 4 5 6 7 8 9 10 **Sono valutato dal mio insegnante** In base alla completezza e alla pertinenza delle risposte che ho trovato, ho ricevuto il voto: 1 2 3 4 5 6 7 8 9 10 ## Vero o falso 1. I commenti devono essere preceduti dal simbolo di doppio slash `//`. - **F** 2. Il programma principale inizia con `int main()`. - **F** 3. Una variabile di tipo intero si dichiara con *Integer*. - **F** 4. Per visualizzare un messaggio sul monitor si usa l'istruzione *print*. - **F** 5. Per acquisire da tastiera il valore di una variabile si usa l'istruzione *write*. - **F** 6. Per acquisire da tastiera il valore di una variabile si usa l'istruzione *cout*. - **F** 7. Le costanti sono valori che possono essere cambiati durante l'elaborazione. - **F** 8. Le costanti si classificano in simboliche e predefinite. - **F** 9. Le costanti si dichiarano con *Dim*. - **F** 10. Le variabili si dichiarano con *const*. - **F** 11. Le variabili devono essere obbligatoriamente dichiarate. - **F** ## Completamento 1. Completa le istruzioni seguenti. ```c++ const ALTEZZA = 1.78; cout << "Benvenuto "; resto = // ... s += 5 // ... r = t // ... ``` 2. Completa il codice inserendo le istruzioni equivalenti. ```c++ int k,x,y; k += y; y = k; x = x + 1; x = x + k; k = k / y; y = y - 1; ``` ## Scelta singola 1. Si deve memorizzare lo stipendio annuo di un dipendente all'interno della variabile *stipendio*. Tale variabile dovrà essere dichiarata di tipo: - **A** *int* - **B** *string* - **C** *double* - **D** *char* 2. Si devono memorizzare la temperatura massima e quella minima registrate in una località nelle variabili *max* e *min*. Tali variabili dovranno essere dichiarate di tipo: - **A** *int* - **B** *string* - **C** *double* - **D** *char* 3. Quale tra i seguenti operatori aritmetici restituisce il resto di una divisione intera? - **A** *Res* - **B** *Mod* - **C** *% * - **D** *Elev* 4. Quale tra le seguenti istruzioni sarà accettata dal compilatore? - **A** `int A, B As Integer` - **B** `Integer A,B;` - **C** `const char x;` - **D** `Boolean A;` 5. Individua quale delle affermazioni seguenti è falsa. - **A** *int* dichiara variabili intere. - **B** La somma può essere effettuata solo tra valori dello stesso tipo. - **C** La divisione fra *int* produce un risultato di tipo *int*. - **D** È possibile effettuare il prodotto fra tipi differenti di variabili. 6. Che cosa contengono le direttive iniziali? - **A** File opzionali per la compilazione. - **B** File che contengono le librerie di C++. - **C** File da integrare nel codice sorgente in caso di errore. - **D** File per inserire un'intestazione iniziale al codice sorgente. 7. Quale tra i seguenti è l'operatore di redirezione dell'input? - **A** `>>` - **B** `<<` - **C** `%` - **D** `&` ## Risolvo 1. Qual è il contenuto della variabile z al termine del seguente frammento di codice? ```c++ int x=30; int y=50; double z; z=x/y; ``` - **B** 0.3 2. Qual è il contenuto della variabile z dopo l'esecuzione del seguente frammento di codice? ```c++ string x="Ciao"; string y="a tutti"; string z=x+y; ``` - **A** Ciao a tutti 3. Determina il valore delle variabili x e y dopo l'esecuzione delle seguenti istruzioni. ```c++ int x=0, y=0; x=y++ ++y; ``` - **C** x=-1 y = 2 4. Determina il valore delle variabili x e y dopo l'esecuzione delle seguenti istruzioni. ```c++ int x=0, y=0; x+=y++; ``` - **A** x = 0 y = 1 5. Determina il valore delle variabili x e y dopo l'esecuzione delle seguenti istruzioni. ```c++ int x=0, y=0; x+=y++ + ++x; ``` - **C** x = 2 y = 2 6. Determina il valore della variabile x dopo le seguenti istruzioni. ```c++ int x=4,y=3; x=2*x+y++*--y; ``` - **B** 11 7. Determina il valore di a dopo la seguente istruzione. ```c++ int a=5 a+=a++ a--; ``` - **B** 5 8. What is the content of the z variable at the end of the following code fragment? ```c++ int x=30; int y=50; double z; z=x%y; ``` - **C** 50 9. What is the content of the variable x after executing the following code fragment? ```c++ int x=12; int y=24; int z=++x+y; ``` - **A** 36 10. Determine the value of variables x and y after executing the following instructions. ```c++ float x=10, y=2; x /= y++; ``` - **A** x = 5 y = 3

Use Quizgecko on...
Browser
Browser