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.
Scrivi un commento