Come ogni buono studente, dopo la lezione seguo gli esercizi, i laboratori e le letture di approfondimento del corso di Computer Science che sto seguendo.

Prima di tutto ci sono le domande di auto-verifica che servono a vedere se ho capito.

1) Quali sono le differenze tra la cognizione dichiarativa e imperativa?

La cognizione dichiarativa prevede un’affermazione. È ad esempio redatta come \(x = 3 + 2\) e fornisce una soluzione.

La cognizione imperativa fornisce invece un metodo, un procedimento o meglio un algoritmo. Una successione di istruzioni che consentono di giungere ad una soluzione.

2) Qual è il vantaggio di un computer programmabile?

Un computer programmabile è in grado di conservare in memoria sia il codice che i dati, dunque sia il codice che i dati possono essere modificati. Questo semplice fatto lo rende flessibile e adatto a risolvere un’infinità di problemi.

3) Cosa sono sintassi, semantica statica e semantica di un linguaggio?

La sintassi è la forma in cui viene scritto il codice, il preciso susseguirsi di simboli e deve rispettare le particolarità del linguaggio. Errori di sintassi sono molto facili da individuare e già gli editor segnalano il problema ben prima di compilare o eseguire il codice.

La semantica statica invece include il significato del codice. Un controllo di quest’ultima si occupa di verificare la regolarità delle istruzioni, se queste sono o meno compatibili tra loro e la relativa compiutezza. Se ad esempio richiamo una funzione che non esiste, questo sarà un errore di semantica statica.

La semantica è tutto quello che riguarda il significato del codice e la sua concretezza. Questo è anche lo spettro della programmazione più difficile da monitorare. Gli altri due aspetti, sintassi e semantica statica, possono essere facilmente controllati in via automatica dall’editor o dal compilatore, mentre il significato del codice no. Se scrivo un programma e non mi restituisce il risultato atteso, ho commesso un errore di semantica.

4) Quali tipologie di errori possono accadere in un programma?

Se escludiamo gli appena citati errori di semantica, i rischi maggiori sono 

Crash: il programma si blocca inaspettatamente con eventuali problemi alla macchina e al sistema.

Ciclo infinito: nel programma non è stata assegnata una condizione di fine e continua a girare sulla macchina all’infinito. Questo impalla il calcolatore e solitamente bisogna intervenire per le spicciole.

Problem Set 0

Il Problem Set 0 lo trovate qui. Come prima cosa richiede di installare Python e un ambiente di sviluppo. Io già ce l’ho dunque passo. Poi c’è il primo problemino.

Problema 1

Scrivere un programma che fa le seguenti cose in ordine:

  • chiede all’utente di inserire la data di nascita
  • chiede all’utente di inserire il cognome
  • visualizza a schermo il cognome e la data di compleanno

Ecco un esempio dell’interazione col software (in blu ci sono le parti che scrive il programma, in nero gli input dell’utente)

Inserisci la data di nascita:
**01/26/32
Inserisci il cognome:
**Grimson
Grimson 01/26/32

Soluzione

Il prof vuole che cerchiamo info online su questa pagina e arriviamo a queste basiche operazioni. Mi serve innanzitutto sapere come chiedere i dati all’utente, cioè come visualizzare a schermo una frase. Una ricerca in tempo 0 mi suggerisce che devo usare la funzione print””. Ad esempio:


print "Inserisci la data di nascita: "

Bene, non ci sorprendiamo che fa il suo lavoro. Ora passiamo all’input. L’utente dovrà scrivere la sua data di nascita. Come? La funzione è raw_input(“”) e tra gli argomenti accetta anche una stringa da visualizzare a schermo. Questo significa che il raw_input(“”) di qui sopra non ci serve più, possiamo chiedere direttamente dalla funzione input. Perché raw_input(“”)  e non input(“”)? Beh input elabora i dati che riceve e a noi questo proprio non serve ora.

raw_input("inserisci la data di nascita: ")

Va bene, ma abbiamo bisogno di una variabile dove conservare il dato, la chiameremo data_nascita.

data_nascita = raw_input("Inserisci la data di nascita: ")

Possiamo chiedere il cognome, che verrà conservato nella variabile cognome.

cognome = raw_input("Inserisci il cognome: ")

Visualizzare a schermo le variabili richiede una concatenazione. Che significa in pratica costruire una stringa con più elementi. La nostra sarà:

print cognome + " " + data_nascita

Ho dovuto dunque aggiungere uno spazio vuoto soltanto tra le due variabili. Ecco il nostro listato completo e funzionante.


data_nascita = raw_input("Inserisci la data di nascita: ")
cognome = raw_input("Inserisci il cognome: ")
print cognome + " " + data_nascita

In conclusione

Il Prof Guttag suggerisce ai volenterosi di dare un’occhiata alla lista delle librerie standard di Python e di seguire il corso 6.01 Introduction to Electrical Engineering and Computer Science I.

Quindi per il primo consigli faro una scrollata veloce, mentre per il secondo seguirò questo irresistibile corso.

A presto.