Qui potete trovare tutte le informazioni riguardo il contenuto delle lezioni del canale 2, ed il relativo materiale.

<2023-12-18 lun> Lezione 36 - Conclusione del corso

Dopo una piccola esercitazione, ribadiremo il programma del corso e le modalità di esame.

Conclusione del corso: (schermo|stampa)

Sondaggio di fine corso: https://forms.gle/Pw3K83QoeWSdxuPm8

Esercitazione da fare in laboratorio: scarica.

Esercizio file di test
Sostituzione dei caratteri non alfabetici test_rimuovi_nonalfabetici.py
Conversione in minuscolo test_minuscolo.py
Convertire una stringa in una lista di parole test_spezza_parole.py
Ordinare una lista di parole test_parole_ordinate.py
Costruire una lista eliminando i duplicati test_elimina_duplicati.py
Elenco di parole in un testo test_estrai_parole.py

Man mano che lavorate sui vostri esercizi potete testare le vostre soluzioni eseguendo i file di test corrispondenti.

Esercizi 1, 5 e 6: video

<2023-12-14 gio> Lezione 35 - Esercizi, esercizi

Passeremo la lezione a vedere gli esercizi che volete, scelti tra quelli della simulazione o tra quelli delle esercitazioni precedenti, preferibilmente privi del video di correzione.

Importante: i test segreti di un esercizio della simulazione erano errati. Ho aggiornato il file contentente la simulazione e le correzioni.

<2023-12-13 mer> Lezione 34 - Codifica di testi e dati

Affrontiamo il discorso della codifica di dati, nella forma di numeri, testi, e altro. In particolare le codifiche ASCII, ASCII estesi e UTF-8 per i testi, e la rappresentazione binaria ed esadecimale per i numeri.

Materiale didattico

Codifica dei dati: (schermo|stampa)

<2023-12-11 lun> Lezione 33 - Simulazione di Esame

Esito della simulazione: risultati

Testo della prova (con test segreti): prova

Essendo questa una simulazione vi mostriamo l'esito dei singoli esercizi e vi diamo i test segreti. Nella tabella:

  • un numero n è il numero di test falliti (il totale è in cima alla colonna)
  • M vuol dire che l'esercizio manca
  • B che l'esercizio non può essere valutato

Non avremo tempo per una prova di due ore. Quindi vi prego di arrivare in laboratorio il prima possibile. Cerchiamo di essere in Aula 15 per le 8.00 (compatibilmente con l'apertura del laboratorio, ovviamente).

Saper usare i computer del laboratorio è un pre-requisito per partecipare alla simulazione. Mi raccomando di rivedere il seguente video.

Tutorial: esame di programmazione

Facciamo una simulazione della prova di programmazione. In particolare prendiamo confidenza con

  • distribuzione automatica delle prove
  • consegna automatica
  • correzione semi-automatica
  • meccanismi per evitare e gestire il freeze della macchina virtuale

Questa sarà anche l'occasione per osservare la sostanziale differenza tra i test pubblici e quelli segreti. I test pubblici non verificano affatto la correttezza dei vostri programmi. Verificano solo che vostri programmi possano essere sottoposti a correzione automatica.

<2023-12-07 gio> Lezione 32 - Mergesort

Menzioniamo che gli algoritmi di ordinamento cosiddetti per confronti devono fare circa \(n \log n\) confronti come minimo, per ordinare una sequeza. Vediamo poi l'algoritmo Mergesort che da questo punto di vista è asintoticamente ottimo perché ordina un sequenza di \(n\) elementi usando \(O(n \log n)\) operazioni.

Materiale didattico: Capitolo 9 degli Appunti.

Codice della lezione: alg_merge.py

Lavoro assegnato: video tutorial esame di programmazione

<2023-12-06 mer> Lezione 31 - Insertion sort

Vediamo il nostro primo algoritmo di ordinamento, l'Insertion sort, e ne discutiamo caratteristiche e complessità computazionale.

(e discuteremo anche la complessità dell'algoritmo MCD)

Codice della lezione: alg_insertion.py

Materiale didattico: capitoli 3 e 8.2 degli Appunti.

Lavoro assegnato: capitolo 9 degli Appunti.

<2023-12-04 lun> Lezione 30 - Laboratorio 10

Esercitazione da fare in laboratorio: scarica.

Esercizio file di test
Messaggio Segreto test_messaggio_segreto.py
Scomposizione in secondi test_formattazione_dhms.py
Calcolo delle medie mobili test_medie_mobili.py
Punto di sella di una matrice test_sella_mat.py
Allegato messaggio_segreto1.txt
Allegato messaggio_segreto2.txt
Allegato messaggio_segreto3.txt
Allegato messaggio_segreto4.txt

Man mano che lavorate sui vostri esercizi potete testare le vostre soluzioni eseguendo i file di test corrispondenti.

Esercizi 2,3 e 4: video

Lavoro assegnato: capitolo 3 degli Appunti.

<2023-11-30 gio> Lezione 29 - Algoritmi, e algoritmi di ricerca

Completiamo la discussione sulla ricorsione con l'esempio dell'algoritmo MCD, che calcola il massimo comun divisore.

Poi introduciamo lo studio sistematico degli algoritmi.

Accenniamo al problema della modellizzazione, della scelta del modello che usiamo per trasformare un problema reale in un problema informatico che può essere affrontato con dei programmi.

Definiamo la nozione di algoritmo come la descrizione di una procedura di calcolo che:

  • termina sempre;
  • dato un input produce sempre uno specifico output;
  • descrizione finita di dimensione limitata;
  • costituito da passi elementari.

Discutiamo in dettaglio l'algoritmo di ricerca binaria su sequenze ordinate.

Codice della lezione: alg_mcd.py, alg_ricerca.py

Materiale didattico: capitoli 1, 2, 8 (Appunti).

Lavoro assegnato:

  • Capitolo 3 (Appunti).

<2023-11-29 mer> Lezione 28 - Stack e funzioni ricorsive

Che cosa si intende per pila (o stack) in un contesto di programmazione, che tipo di logica di programmazione può essere modellata con questo strumento? I linguaggi di programmazione

Discutiamo la scrittura di funzioni in maniera ricorsiva, ovvero attraverso del codice Python che richiama sé stesso. La ricorsione porta a scrivere programmi molto eleganti ma se usata senza attenzione pone dei problemi:

  • uso eccessivo dello stack;
  • ripetizione di calcoli già effettuati con esplosione del tempo di esecuzione.

In questi casi è conveniente riscrivere le funzioni in versione iterativa. Questo è particolarmente vero per funzioni che calcolano

  • fattoriale;
  • numeri di Fibonacci.

Codice della lezione:

Materiale didattico:

  • paragrafi 3.9, 5.8, 5.9 e 5.10 (Pensare in Python);
  • Capitolo 7 (Appunti).

Lavoro assegnato:

  • Capitoli 1, 2, 8 (Appunti)

<2023-11-27 lun> Lezione 27 - Laboratorio 9

Esercitazione da fare in laboratorio: scarica.

Esercizio file di test
Restituire il … alla massima chiave test_dict_max_chiave.py
Carica una lista da un file test_caricalista.py
Carica una matrice da un file test_caricamatrice.py
Bilancio finale test_bilanciofinale.py
Bilancio finale da file test_bilanciofinalefile.py
Somme per colonna di una matrice numerica test_somme_per_colonna_mat.py
Allegato caricalista0.txt
Allegato caricalista10.txt
Allegato caricalista20.txt
Allegato caricalista_bad1.txt
Allegato caricalista_bad2.txt
Allegato caricamatrice1x1.txt
Allegato caricamatrice3x5.txt
Allegato caricamatrice_bad1.txt
Allegato caricamatrice_bad2.txt
Allegato caricamatrice_bad3.txt
Allegato caricamatrice_bad4.txt
Allegato caricamatrice_bad5.txt
Allegato bilanciofinalefile1.txt
Allegato bilanciofinalefile2.txt

Man mano che lavorate sui vostri esercizi potete testare le vostre soluzioni eseguendo i file di test corrispondenti.

Esercizi 3 e 4: video

Esercizio 6: video

Lavoro assegnato:

  • paragrafi 3.9, 5.8, 5.9 e 5.10 (Pensare in Python);
  • Capitolo 7 (Appunti su algoritmi e complessità).

<2023-11-23 gio> Lezione 26 - Gestione dei file di testo

Vediamo come accedere/scrivere/leggere/modificare file di testo con Python.

Materiale didattico: i paragrafi 14.1-14.5 del libro di testo.

Gestione dei file: (schermo|stampa)

Seguono dei file di testo di esempio dal progetto Progetto Gutemberg, in inglese codificati UTF-8.

Titolo Autore File
Alice's Adventures in Wonderland Lewis Carroll alice.txt
Frankenstein Mary W. Shelley frankenstein.txt
The Adventures of Sherlock Holmes A. C. Doyle holmes.txt
Moby Dick Herman Melville mobydick.txt
The Prince Niccoló Machiavelli prince.txt
Treasure Island Robert Louis Stevenson treasure.txt

<2023-11-22 mer> Lezione 25 - Gestione di errori

Vediamo come si generano e si gestiscono segnali di errore all'interno di un programme.

Materiale didattico

Sollevare errori: (schermo|stampa)

Gestire errori : (schermo|stampa)

Lavoro assegnato: Leggere i paragrafi 14.1-14.5 del libro Pensare in Python.

Valutazione del corso

Compilate il questionario OPIS per questo corso.

<2023-11-20 lun> Lezione 24 - Laboratorio 8

Esercitazione da fare in laboratorio: scarica.

Esercizio file di test
Somma degli elementi di una matrice numerica test_somma_mat.py
Minimo degli elementi di una matrice numerica test_min_mat.py
Dizionario da stringa test_dict_da_stringa_parole.py
Somma degli elementi della diagonale di una matrice numerica test_sommadiagonale_mat.py
Somme per riga di una matrice numerica test_somme_per_riga_mat.py

Man mano che lavorate sui vostri esercizi potete testare le vostre soluzioni eseguendo i file di test corrispondenti.

Lavoro assegnato: Leggere i paragrafi 14.1-14.5 del libro Pensare in Python.

Valutazione del corso

Compilate il questionario OPIS per questo corso.

<2023-11-16 gio> Lezione 23 - Dizionari

Vediamo un tipo di dato particolarmente efficiente per la gestione di ricerche: il dizionario. Ne vediamo le caratteristiche principali e come usarli con un esempio.

Materiale didattico: i paragrafi 11.1-11.3 del libro di testo.

Esercizio: frequenze di parole

Dizionari: (schermo|stampa)

<2023-11-15 mer> Lezione 22 - Matrici

Rappresentazione Python di matrici come liste di liste. Ad esempio una matrice

\begin{bmatrix} 1 & 2 & 3 \\ 4 & 5 & 6 \\ 7 & 8 & 9 \\ 10 & 11 & 12 \end{bmatrix}

viene rappresentata in Python come la lista

[[1,2,3], [4,5,6], [7,8,9], [10,11,12]]  
  • creazione di una matrice con valori uguali;
  • calcolo della matrice trasposta.
import random
def matrixcreate(R,C,fillvalue=0):
    M=[]
    for i in range(R):
        M.append( [fillvalue]*C)
    return M

def matrixsize(A):
    return len(A),len(A[0])

def matrixtranspose(A):
    R,C = matrixsize(A)
    T   = matrixcreate(C,R)
    for r in range(R):
        for c in range(C):
            T[c][r] = A[r][c]
    return T

def matrixrandomfill(A):
    R,C = matrixsize(A)
    for r in range(R):
        for c in range(C):
            A[r][c] = random.randint(0,100)

A = matrixcreate(4,2)
matrixrandomfill(A)
B = matrixtranspose(A)
print(A)
print(B)
[[38, 37], [13, 76], [19, 28], [16, 55]]
[[38, 13, 19, 16], [37, 76, 28, 55]]

Negli esercizi di questo corso riguardanti le matrici, una matrice di \(R\) righe e \(C\) colonne sarà tipicamente rappresentata come una lista contenente \(R\) liste, ognuna contenente a sua volta \(C\) elementi. Tipicamente con \(R \geq 1\) e \(C \geq 1\).

Nel corso della lezione abbiamo visto altri esempi collezionati nel file esempi_matrici.py che contiene

  • creazione di matrici
  • riempimento di una matrice con valori casuali in \([0,1)\)
  • stampa di matrice
  • creazione della matrice identità
  • somma dei valori in una matrice
  • calcolo della matrice trasposta
  • posizione di una riga che ha somma massima

Esercizio: scrivete una funzione che restituisca True se l'argomento è una matrice secondo le condizioni spiegate nel paragrafo precedente. E che restituisca False altrimenti.

Lavoro assegnato: i paragrafi 11.1-11.3 del libro di testo.

<2023-11-13 lun> Lezione 21 - Laboratorio 7

Esercitazione da fare in laboratorio: scarica.

Esercizio file di test
Lista di numeri test_crealista1.py
Azzerare elementi negativi test_azzeranegativi.py
Verificare se una sequenza è bitonica test_bitonica.py
Massimi locali test_massimilocali.py
Lista di numeri (2) test_crealista2.py

Man mano che lavorate sui vostri esercizi potete testare le vostre soluzioni eseguendo i file di test corrispondenti.

Esercizi 3 e 4: video

Per l'ultimo esercizio si devono utilizzare i parametri opzionali per le funzioni. Esempio: somma di una lista con valore iniziale.

def somma(seq,init=0):
    acc=init
    for x in seq:
        acc += x
    return acc

print( somma([7,5,4]) )
print( somma([7,5,4],6) )
print( somma([7,5,4],12) )
print( somma([7,5,4],0) )
16
22
28
16

<2023-11-09 gio> Lezione 20 - Esercizi con il ciclo for

Altre informazioni su liste e sequenza:

  • conversione tra sequenze
  • list comprehension

Approfondiamo il ciclo for e vediamo come effettuare delle operazioni con il ciclo for su liste

  • calcolo del minimo
  • ricerca in una lista
  • verifica dell'ordinamento

Materiale didattico

Ciclo for: (schermo|stampa)

<2023-11-08 mer> Lezione 19 - Ancora su liste e sequenze

Continuiamo con le liste, e allarghiamo il discorso a quelle che in Python vengono definite "sequenze"

  • esercizio: leggere una lista di numeri in input
  • esercizio: somma cumulativa
  • metodo clear, insert
  • metodo pop (con argomento e senza) e remove
  • cooperazione tra stringhe e liste: join e split
  • la tupla: una versione immutabile della lista
  • chiarimenti su range
  • liste, stringhe, tuple e range sono sequenze
  • assegnamenti multipli e unpacking
  • esempio: calcolo del minimo
  • esempio: ricerca in una lista
  • esempio: verifica che una lista sia ordinata

Lavoro assegnato: slides sul ciclo for: (schermo|stampa)

<2023-11-06 lun> Lezione 18 - Laboratorio 6

Esercitazione da fare in laboratorio: scarica.

Esercizi 3 e 4: video

Esercizio file di test
Somma di liste test_sommaliste.py
Prodotto Scalare tra due vettori test_prodottoscalare.py
Media aritmetica test_media.py
Separa elementi in base alla media test_separaelementi.py
Intersezione test_intersezione.py
Unione test_unione.py

Man mano che lavorate sui vostri esercizi potete testare le vostre soluzioni eseguendo i file di test corrispondenti.

<2023-11-02 gio> Lezione 17 - Liste

Introduciamo un utilissimo modo di strutturare dati in modo sequenziale, ovvero le liste. Le liste sono uno dei tipi di dati più utilizzati in python.

  • definizione di liste
  • indicizzazione e slicing, funzione len
  • indici di lista negativi
  • mutabilità (argomento delicato e importante)
  • variabili come riferimenti a memoria
  • copiare una lista
  • differenza tra copia e assegnamento tra liste
  • ciclo su lista, per indici e per valori
  • esercizio: somma di numeri
  • operazioni di concatenazione + e ripetizione *
  • operatore in
  • differenza tra in per liste e stringhe
  • funzione sorted e metodo sort
  • metodi append, extend, index, count
  • differenza tra append e extend
  • operatore += su liste, e differenze con x=x+a

Lavoro assegnato: rileggere il capitolo 10 e fare gli esercizi da 10.2 a 10.5 e il 10.8.

<2023-10-30 lun> Lezione 16 - Laboratorio 5

Esercitazione da fare in laboratorio: scarica.

Esercizio 3: video

È stato pubblicato il video tutorial per i file di test: esercitazione e test: link

Guardatelo prima della lezione

Esercizio file di test
Conteggio delle vocali test_conteggiovocali.py
Buona Password test_buona_password.py
Conteggio delle parole test_conteggioparole.py
Artista tartaruga -
Terne pitagoriche test_ternepitagoriche1.py

Man mano che lavorate sui vostri esercizi potete testare le vostre soluzioni eseguendo i file di test corrispondenti.

Lavoro assegnato: leggere il capitolo 10.

<2023-10-26 gio> Lezione 15 - Ancora operazioni sulle stringhe

Introduciamo il ciclo for su caratteri di una stringa.

X = 'stringa di prova'

# Ciclo while
i = 0
while i < len(X):
    print(X[i], end='-')
    i += 1

print('')

# Ciclo For su caratteri
for c in X:
    print(c, end='-')
s-t-r-i-n-g-a- -d-i- -p-r-o-v-a-
s-t-r-i-n-g-a- -d-i- -p-r-o-v-a-

Vediamo altre operazioni sulle stringhe

  • operatore in
  • confronti di stringhe
  • conteggio e ricerca di caratteri
  • metodi delle stringhe upper, lower, find, count, trim

Moduli in preparazione dell'esercitazione vediamo come scrivere i file python in modo che siano adatti ad essere importati, usando la clausola

if __name__ == "__main__":
    <codice>

Materiale didattico

Uso dei moduli: (schermo|stampa)

Lavoro assegnato: guardate TUTTO il video di istruzioni sui test automatici.

Lavoro assegnato: realizzare una versione artigianale dell'operatore in. Ovvero una funzione che date due stringhe testo e chiave, restituisca True se e solo se chiave è un segmento di testo. Naturalmente la vostra versione non deve utilizzare in.

<2023-10-25 mer> Lezione 14 - Operazioni sulle stringhe

Bisezione: vediamo due modi di scrivere un programma che esegue la ricerca di uno zero in una funzione continua.

Stringhe: Vediamo come le stringhe possano essere considerate delle sequenze di caratteri. Vediamo

  • indicizzazione di stringhe
  • slicing per la copia di segmenti di stringhe

Algoritmo su stringhe:

  • stringa palindroma

<2023-10-23 lun> Lezione 13 - Laboratorio 4

Esercitazione da fare in laboratorio: scarica.

Esercizi 2, 3 e 4: video

Lavoro assegnato:

  • leggere la sezione 2.1 degli Appunti
  • leggere il capitolo 8 del libro di testo.

<2023-10-19 gio> Lezione 12 - Ancora sul ciclo while

Vediamo altri esempi di come usare il ciclo while, ed esempi di cicli annidati.

Materiale didattico

Ciclo while: (schermo|stampa)

Lavoro assegnato: leggere l'appendice A del libro di testo.

<2023-10-18 mer> Lezione 11 - Iterazione

Vediamo come ripetere l'esecuzione di blocchi di codice con il costrutto while. Vediamo degli esempi di come usare il ciclo while.

Materiale didattico

Ciclo while: (schermo|stampa)

Lavoro assegnato: approfondire il Capitolo 7.

Esercizio 7.1 del libro.

<2023-10-16 lun> Lezione 10 - Laboratorio 3

Nota sulle funzioni che restituiscono un valore: In python è possibile che una funzione restituisca più valori insieme (ad esempio restituisca una coppia o una tripla di valori). Questa funzione può essere usata contestualmente ad un assegnamento che assegni a più variabili il risultato della chiamata. Ad esempio:

def divresto(N,d):
    quoziente = N // d
    resto     = N % d
    return quoziente, resto

x,y = divresto(12,7)
print(y)

x,y = divresto(21,5)
print(x)
5
4

Qui la funzione restituisce due numeri (usando la sintassi return expr1,expr2). L'espressione divresto(21,5) per esempio restituisce la coppia di numeri 4 e 1. Il numero 4 viene assegnato ad x, mentre il numero 1 viene assegnato a y.

Esercitazione da fare in laboratorio: scarica.

Esercizio 2: video

Lavoro assegnato: leggere il Capitolo 7.

<2023-10-12 gio> Lezione 9 - Approfondimento sulle funzioni

Funzioni che restituiscono un valore usando return.

Vediamo anche come inserire una stringa di documentazione nella funzione. In questo contesto vediamo le stringhe multilinea (ovvero quelle aperte e chiuse da tre apici o virgolette).

Insieme studiamo il programma:

def hello(nome,età):
    """Produce un saluto personalizzato

    Questa funzione produce un saluto di presentazione
    che include le informazioni di `nome` ed `età`.
    """
    coda = " anni."
    if età == 1:
        coda = " anno."
    return "Ciao, sono "+nome+". Ho "+str(età)+coda

def stampa_incorniciato(testo):
    lunghezza = len(testo) 
    cornice = '*' * (lunghezza + 4) 
    print(cornice)
    print("* "+testo+' *')
    print(cornice)

stampa_incorniciato(hello('Marcello',23))
stampa_incorniciato("Testo arbitrario.")
stampa_incorniciato(hello('Giulia',1))
************************************
* Ciao, sono Marcello. Ho 23 anni. *
************************************
*********************
* Testo arbitrario. *
*********************
*********************************
* Ciao, sono Giulia. Ho 1 anno. *
*********************************

Approfondiamo sul valore None e tipo NoneType.

Approfondiamo sull'identazione.

Materiale didattico

Valore None: (schermo|stampa)

Indentazione: (schermo|stampa)

Lavoro assegnato: rivedere gli esercizi della scorsa esercitazione e provare a completarla scrivendo funzioni per ogni esercizio.

Rivedere le sezioni 3.11 e 6.2

Rivedere le sezioni Debug, Glossario, Esercizi dei capitoli 1, 2, e 3 del libro di testo.

<2023-10-11 mer> Lezione 8 - Uso e scrittura di funzioni

Spieghiamo cos'è una funzione e vediamo quelle già usate a lezione più altre incluse nel modulo math. Come si importano funzioni da moduli già pronti?

E come si scrivono funzioni completamente nuove? Parliamo di passaggio di parametri, e differenza tra parametri e argomenti. Visibilità delle variabili, fuori e dentro la funzione.

Lavoro assegnato: scrivere i seguenti programmi

  • Una funzione scontato(prezzo,sconto), che verifichi che lo sconto sia un numero valido (ovvero se sia compreso tra 0 e 100) e che il prezzo sia un numero non negativo. Se queste condizioni sono verificate, il programma stampi il prezzo scontato.
  • scrivere una funzione eqsecondogrado(A,B,C), che calcoli e stampi le soluzioni dell'equazione di secondo grado \(Ax^2 + Bx + C =0\).
  • scrivere una funzione ordina(A,B,C) che stampi in ordine dal più piccolo al più grande i valori (non necessariamente numerici) passati come argomenti. Non vi preoccupate di gestire gli errori dovuti al passaggio di argomenti che non sono confrontabili tra loro.

Lavoro assegnato: leggere i paragrafi da 6.1 a 6.4 inclusi.

<2023-10-09 lun> Lezione 7 - Laboratorio 2

Esercitazione da fare in laboratorio: scarica.

Esercizi 3 e 6: video

Lavoro assegnato: leggere il capitolo 3 del libro di testo.

<2023-10-05 gio> Lezione 6 - Esecuzione condizionale

Vediamo come fare in modo che il programma faccia delle scelte. In primo luogo introduciamo il tipo booleano che rappresenta la scelta vero/falso. Vediamo poi come costruire espressioni booleane usando operatori logici e di confronto.

L'uso principale di queste espressioni logiche è quello di definire condizioni in base alle quali eseguire o meno pezzi di codice. Introduciamo le clausole if, else, elif per l'esecuzione codizionale di blocchi di istruzioni.

Materiale didattico

Il vero e il falso: (schermo|stampa)

Lavoro assegnato

  1. Scrivete un programma che, letti 3 numeri in input, li stampi in ordine crescente utilizzando catene di if/then/else
  2. Valutare a mano, e poi verificare in Python, il valore della seguente espressione python.
not -5 // 2**4 < -1 and 3**2**(5 + -3) >= 2 * 4

<2023-10-04 mer> Lezione 5 - Funzioni di input/output/conversione

Continuiamo gli esempi di scomposizione di problemi complessi in problemi più semplici, svolti in modelli computazionali giocattolo.

  • cercare un elemento in una sequenza
  • disegnare delle figure

Vediamo delle funzioni per l'input e l'output. In particolare

  • print per stampare in output in valure di un'espressione
  • input per leggere una stringa in input

In questo contesto vediamo come convertire dati da un tipo all'altro, quando possibile. Vediamo l'errore TypeError e ValueError.

Lavoro assegnato:

  • leggere i paragrafi da 5.1 a 5.7 (incluso) del libro di testo.

<2023-10-02 lun> Lezione 4 - Laboratorio 1

Esercitazione da fare in laboratorio: scarica.

Esercizio 7: video

<2023-09-28 gio> Lezione 3 - Problemi di programmazione

Discutiamo il concetto di valore e tipo del dato, e vediamo come costruire espressioni utilizzando operazioni (aritmetiche e non) tra dati. Descriviamo il funzionamento di variabili e assegnamenti, e come funziona a grandi linee il modello di associazione nome/valore in python.

Tramite esercizi esploriamo cosa voglia dire risolvere un problema di programmazione. Come sono formulati questi problemi? Vediamo alcuni esempi di problemi tipici che possono essere risolti tramite piccoli programmi. Non scriviamo ancora programmi che li risolvino, ma cerchiamo di ragionare su come possa essere impostata una soluzione, avendo a disposizione una serie di operazioni atomiche semplici. Ad esempio:

  • calcolare la media di una sequenza di numeri
  • ordinare tre elementi
  • disegnare delle figure

Lavoro assegnato

  1. Usate l'interprete interattivo python nella finestra in basso di Thonny, e poi quello da terminale.
  2. Scrivete dei file python con delle istruzioni, salvateli ed eseguiteli sia in Thonny (cliccando sull'icona "Play" oppure con il tasto F5) che usando il comando python3 dal terminale.

<2023-09-27 mer> Lezione 2 - Cos'è la programmazione

Ricapitoliamo gli ambienti di lavoro python.

Discutiamo brevemente la struttura di un calcolatore e alcune delle persone coinvolte nel suo sviluppo. Spieghiamo la differenza tra linguaggi naturali e artificiali, linguaggi di alto e basso livello, linguaggi compilati e interpretati.

Nella seconda parte della lezione cominciamo a vedere delle operazioni interattive con python. In questo contesto

Materiale didattico

Ambienti di lavoro python: (schermo|stampa)

Cos'è la programmazione: (schermo|stampa)

Lavoro assegnato: leggere il capitolo 2 del libro di testo.

<2023-09-25 lun> Lezione 1 - Introduzione

Introduciamo il corso, fornendo le informazioni logistiche di base. Poi vediamo come effettuare i primi passi nell'ambiente Linux del laboratorio: come trovare i programmi necessari allo svolgimento delle esercitazioni e come utilizzare il terminale.

Materiale didattico

Introduzione: (schermo|stampa)

Tutorial del laboratorio: (schermo|stampa)

Ambienti di lavoro python: (schermo|stampa)

Lavoro assegnato:

  • leggere il capitolo 1 del libro di testo.
  • installare Thonny sul vostro PC (https://thonny.org/)
  • installate e configurate la macchina virtuale