Vai al contenuto
Topos Uranos

Riepilogo

Questa lezione apre la terza unità del corso, dedicata alle espressioni e ai loro operatori. Spiega a che cosa serve l’unità: insegnare a costruire espressioni il cui valore si possa prevedere con certezza, sapendo quale operazione si esegue per prima, di che tipo è il risultato, quali effetti collaterali hanno e quali espressioni non hanno significato; presenta le sue quattro lezioni e il filo che le unisce, dall’aritmetica intera e reale fino ai bit e alla libreria matematica, passando per le condizioni e per il catalogo del comportamento indefinito; ricorda ciò che l’unità dà per scontato della seconda, cioè il tipo di ogni dato, i suoi limiti e le sue conversioni; formula il problema che l’unità risolve, quello di un programma che compila senza un solo avviso e le cui risposte a sei domande scolastiche sono tutte sbagliate, quando non mancano del tutto; e mostra dove conduce, nelle unità successive e nel corso Programmazione in C++ II.

Obiettivi di apprendimento

  1. Descrivere la sequenza dei contenuti dell’unità e spiegare che cosa apporta ciascuna lezione alla successiva.
  2. Ricordare il necessario dell’unità 2 (i tipi interi e reali, i loro intervalli, l’overflow e le conversioni) e ripassarlo se occorre.
  3. Anticipare, con un esempio, che il valore di un’espressione dipende da regole di valutazione (la precedenza, il tipo degli operandi, l’ordine degli effetti) che non sempre coincidono con quelle della matematica scolastica.
  4. Riconoscere che cosa ci si aspetta di saper fare alla fine dell’unità, e distinguerlo da ciò che si imparerà nelle unità successive.

Valutazione d’ingresso

Prima di percorrere l’unità conviene misurare il punto di partenza. Questa valutazione è un’autovalutazione: non ha voto, e il suo unico scopo è orientare lo studio. Le prime quattro domande verificano ciò che l’unità dà per scontato della seconda: la divisione tra interi, la scrittura in base 2, la sottrazione senza segno e l’overflow con segno. Le sei successive toccano, nell’ordine delle lezioni, le idee centrali dell’unità, e varie di esse partono dalla matematica scolastica o dalla logica elementare. Nessuno è tenuto a indovinarle già, e in due di esse «non lo so ancora» è una risposta onesta: ogni risposta, giusta o no, spiega il punto e nomina la lezione che lo tratta. Le stesse abilità si misurano di nuovo alla fine, nella lezione di sintesi.

Valutazione d’ingresso

Prima di iniziare l’unità, misura il tuo punto di partenza. È un’autovalutazione breve: non riceve voto e il risultato resta solo nel tuo browser.

  1. Domanda 1Dalle unità precedentiUn programma dichiara const double r{7 / 2}; e scrive r. Che cosa appare?

  2. Domanda 2Dalle unità precedentiCome si scrive il numero 13 in base 2, con otto bit?

  3. Domanda 3Dalle unità precedentiChe cosa scrive std::println("{}", 0u - 1); con un unsigned int di 32 bit?

  4. Domanda 4Dalle unità precedentiUn programma esegue int count{std::numeric_limits<int>::max()}; e poi count = count + 1;. Che cosa garantisce lo standard sul valore di count?

  5. Domanda 5Quanto valgono 2+3⋅42 + 3 \cdot 4 e (2+3)⋅4(2 + 3) \cdot 4?

  6. Domanda 6Secondo il teorema della divisione della matematica, con il resto rr soggetto a 0≤r<20 \leq r < 2, quali sono il quoziente qq e il resto rr di −7-7 diviso 22?

  7. Domanda 7Qual è la negazione di «piove e fa freddo»?

  8. Domanda 8Che cosa scrive std::println("{}", 3 < 5);?

  9. Domanda 9Dopo int a{5}; e int b{a++ * 2};, quanto valgono a e b?

  10. Domanda 10Che cosa scrive std::println("{}", 2 ^ 3);?