Vai al contenuto
Topos Uranos

Riepilogo

Questa lezione apre la quarta unità del corso, dedicata al controllo del flusso. Spiega a che cosa serve l’unità: insegnare a governare l’ordine in cui si eseguono le istruzioni di un programma, con decisioni e con cicli, e a ragionare sulla loro correttezza, cioè ad assicurare che ogni caso sia trattato, che ogni ciclo faccia ciò che deve e che termini; presenta le sue quattro lezioni e il filo che le unisce; ricorda ciò che l’unità dà per scontato, soprattutto le condizioni composte dell’unità 3; formula il problema che l’unità risolve, quello di un programma che calcola il massimo comune divisore con un numero fisso di passi e che, a seconda dei dati, risponde male o si ferma su una divisione per zero; anticipa l’invariante come lo strumento con cui l’unità giustificherà i suoi cicli; 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 le condizioni composte dell’unità 3 (i connettivi, la valutazione a cortocircuito e la negazione mediante le leggi di De Morgan) e ripassarle se occorre.
  3. Anticipare, con un esempio, l’invariante come strumento di ragionamento: una relazione tra le variabili che una ripetizione conserva e che, al termine, dà il risultato.
  4. Riconoscere che cosa ci si aspetta di saper fare al termine 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: la negazione di una condizione composta, la valutazione a cortocircuito, la traccia di una ripetizione della lezione 1.1 e il limite di un int. Le sette successive toccano, nell’ordine delle lezioni, le idee centrali dell’unità, e varie di esse partono dalla matematica scolastica: il massimo comune divisore, la notazione di sommatoria, la terminazione di un procedimento. Nessuno è tenuto a indovinarle già, e in alcune 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à precedentiQual è la negazione della condizione 1 <= n && n <= 10?

  2. Domanda 2Dalle unità precedentiCon int d{0}; e int n{5};, che cosa succede valutando d != 0 && n / d > 2?

  3. Domanda 3Dalle unità precedentiLa divisione per sottrazioni successive della lezione 1.1 comincia con q=0q = 0 e r=ar = a, e ripete «finché r≥br \geq b, sottrarre bb da rr e sommare 1 a qq». Con a=20a = 20 e b=5b = 5, quante volte si esegue il corpo della ripetizione?

  4. Domanda 4Dalle unità precedentiCon un int di 32 bit, che cosa garantisce lo standard sul valore di 46341 * 46341?

  5. Domanda 5Un programma contiene la catena di decisioni if (score >= 50), che scrive «Superato»; else if (score >= 90), che scrive «Eccellente»; ed else, che scrive «Non superato». Che cosa scrive con score uguale a 95?

  6. Domanda 6Quale delle espressioni seguenti denota la somma 1+2+⋯+n1 + 2 + \cdots + n?

  7. Domanda 7Con int total{0};, che cosa scrive std::println("{}", total); dopo for (int i{0}; i < 5; ++i) { total += i; }?

  8. Domanda 8Nella divisione per sottrazioni successive (q=0q = 0, r=ar = a; finché r≥br \geq b, rr passa a r−br - b e qq a q+1q + 1), quale relazione tra le variabili vale ogni volta che si valuta la condizione?

  9. Domanda 9Un procedimento parte da un intero nn qualsiasi (positivo, nullo o negativo) e ripete «finché n>0n > 0, sottrarre 2 da nn». Termina per ogni nn?

  10. Domanda 10Qual è il massimo comune divisore di 84 e 36?

  11. Domanda 11Per decidere se 101 è primo provando divisori, fino a quale divisore basta arrivare?