Laboratorio di Calcolo (2015-2016)

Gruppi di esercitazione

Sono stati formati i gruppi di laboratorio. Gli studenti immatricolati nel 2015 che devono fare le esercitazioni e non sono inseriti in nessun gruppo e sono pregati di contattarmi.

Appelli di Esame

Durante la prova potete consultare libri e appunti ma NON listati di programmi ed esercitazioni in forma cartacea o elettronica.

Saper usare l'editor di testo, compilarore e girare il programma e` parte importante e richiesta dell'esame.

Gli studenti possono sostenere tutti gli appelli (tranne quelli straordinari riservati ai soli fuoricorso oppure aventi 155 CFU).

Gli studenti possono ritirarsi prima o al termine della prova. In questo caso la prova non sara` valutata e quind nemmeno verbalizzata.

Tutte Le prove consegnate saranno valutate. I voti insufficienti oppure sufficienti ma rifiutati dagli interessati saranno verbalizzati come insufficienti su infostud.

Gli studenti che si sono iscritti per la prima volta nell'anno accademico 2014/15, devono prenotarsi su infostud per entrambe le prove di

  1. Laboratorio di calcolo (6 cfu)
  2. Abilita` informatiche (3 cfu). Questi crediti non richiedono un esame a parte, ma saranno verbalizzati al momento della verbalizzazione dell'esame di Laboratorio di Calcolo

Orario Lezioni

Il corso dell'anno accademico 2015/16 inizia il giorno martedi` 29 settembre 2015

Risorse Utili

  • Virtualbox + Linux: potete installare il programma gratuito Virtualbox sul vostro computer come un qualsiasi programma. Potete poi installare una macchina virtuale con Linux all'interno di questo programma, come mostrato nella pagina collegata. Questo vi risparmia la fatica di installare cygwin con i pacchetti giusti e soprattutto la sua configurazione. Inoltre e` piu` semplice di partizionare il disco e gestire un sistema dual boot.
  • Se avete installato Virtualbox, potete anche semplicemente importare una di queste macchine virtuali ubuntu che includono gia` il compilatore gcc e l'editor di testo emcas, e con l'utente labcalcolo gia` configurato (la passwd coincide con lo username). Attenzione: i file sono di circa 2 GB ciascuno.
    1. Scaricate il file per la macchina virtuale a 32 bit (1.5 GB)
    2. oppure se avete problemi provate con il file per la macchina virtuale a 64 bit (2 GB)
    3. .
    4. Dal menu di VirtualBox sceglietei "File->Import Appliance" che aprira` una finestra di dialogo in cui dovete selezionare il file appena scaricato
    5. In questo modo trovete una macchina virtuale ubuntu con un utente labcalcolo gia` configurato correttamente
  • Ubuntu: Documentazione per chi e` nuovo su ubuntu: nella sezione Programmazione trovate tutte le informazioni su come installare i compilatori e editor di testo
  • Mac OS: Alcune informazioni utili per l'installazione di gcc su Mac OS X
  • Installazione di gcc su Mac OS Mavericks: guida in inglese
  • Unix: introduzione elementare: guida semplice che spiega gli elementi di base di Unix/Linux. Il capitolo 2 riassume i comandi piu` utilizzati in questo corso.
  • Guida interattiva del lingiaggio C (in inglese)

Materiale del Corso

  • Lezione 01, 29/9: Introduzione. Organizzazione del corso e delle esercitazioni. (pdf)
  • Lezione 02, 30/9: Sistemi di numerazione.Base binaria.Rappresentazione di numeri negativi.
  • Lezione 03, 6/10: Rappresentazione di numeri razionali in virgola mobile.
  • Lezione 04, 7/10: Problema di approssimazione in vigola mobile. Valori logici.
  • Lezione 05, 13/10: Calcolatori e linguaggio macchina. Esempio di calcolatore semplice con 4 bit. Linguaggi di programmazione. Compilatori.
  • Lezione 06, 14/10: Elementi base del C. Compilazione e liniking dei programmi. La funzione main. Variabili e tipi. Terminale, editor di testa, compilatore gcc. (pdf) (prog.c)
  • Lab 01, 15/10: Introduzione a Linux. Terminale, editor di testa, compilatore gcc. creare file e directory. copiare e spostare file. compilare, linkare e girare programmi. Il primo programma: conversione di temperatura da Celsius in Fahrenheit. (pdf)
  • Lezione 07, 20/10: Variabili e tipi. operatori matematici. Operatori unari e binari. Priorita` degli operatori matematici.
  • Lezione 08, 21/10: Analisi e comprensione del programma della prima esercitazione. diagrammi di flusso. printf e scanf per input/output.Importanza dei descrittori in printf. uso della libreria matematica. header file e librerie. istruzioni #include del precompilatore. Uso di #define.
  • Lab 02, 22/10: Simulazione di una lente sottile (pdf)
  • Lezione 09, 27/10: decisioni e iterazioni. costrutto if/else e if/else if. espressioni logiche. operatori &&, ||, ≥, ≤ . cicli do/while e while:
  • Lezione 10, 28/10: operatori ==, !=, ++ . iterazioni. cicli do/while. controllo di valori di input con do/while. Algoritmo per conversione da base 10 in base 2(binary.c). uso dei contatori e la loro inizializzazione. Algoritmo per conversione da base 10 in base qualsiasi.
  • Lab 03, 29/10: Il moto del proiettile (pdf) (parte I) (parte II)
  • Lezione 11, 3/11: Metodi ricorsivi con variabili ausiliari di appoggio. Ciclo while e differenze con do/while. Ciclo for e calcolo del fattoriale. la serie di Fibonacci: fiboInt.c usando int; fiboLlu.c usando unsigned long long int;
  • Lezione 12, 4/11: Metodo di bisezione (bisezione.c). Metodo di newton e calcolo ricorsivo di radici di una funzione. Ricerca di numeri primi (primi.c). Cicli annidati e inizializzazione delle variabili. Generaziuone numeri casuali interi in un intervallo [a,b].
  • Lab 04, 5/11: Calcolo della radice quadrata con metodi ricorsivi. (pdf) (soluzione)
  • Lezione 13, 10/11: generazione numeri casuali reali cast esplicito delle variabili. Generazione in un quadrato o cerchio. Gioco della freccetta.
  • Lezione 14, 11/11: Array in C: dimensione e lunghezza. Indice di un array. Calcolo della media, minimo, e massimo di elementi di un array. Metodo bubblesort per ordinamento di un array (bubble.c). Algoritmo per la ricerca binaria (binsearch.c).
  • Lab 05, 12/11: La stima di π con l'ago di Buffon (pdf) (soluzione)
  • Lezione 15, 17/11: Array multidiemensionali. Soluzione di sistemi di equzioni lineari (esempio)
  • Lezione 16, 18/11: stringhe in C come array di char. I/O di stringhe. Il gioco di tris. puntatori. legame tra puntatori e array. accesso agli array 1D tramite puntatore.
  • Lab 06, 19/11: Distribuzioni di numeri casuali ed istogrammi. Teorema del limite centrale (pdf) (soluzione)
  • Lezione 17, 24/11: Funzione getchar(). Input/output su file. file formattati.
  • Lezione 18, 25/11: Input da file (input.c). uso di puntatori con array 2D (array2D.c). Manpipolazione di stringhe con la funzione sprintf. Funzioni: dichiarazione e definizione. Argomenti e variabili locali. Passaggio delle variabili come argomenti. passaggio per valore. argomenti e ambito di visibilita`. tipo e valore di ritorno. esempio: funzione potenza().
  • Lab 07, 26/11: Passaggio di un elettrone nella materia (pdf)
  • Lezione 19, 1/12: Esempi di Funzioni. Funzioni ricorsive. (questionario 1) (questionario 1) Funzioni ed array come argomenti.
  • Lezione 20, 2/12: Passaggio di array 2D come argomento di funzione. (anagrammi) Generazione numeri casuali secondo distribuzione gaussiana ed esponenziale. Operazioni con array 1D e 2D. Operazioni tra matrici e vettori.
  • Lab 08, 3/12: Cammino aleatorio (random walk) in 1D e 2D (pdf)
  • Lezione 21, 9/12: passaggio per valore e per referenza. Array 1D, 2D, e puntatori come argomenti di funzione. funzione analisi() per calcolo media e deviazione standard di dati. esempi: getInt(), azzeraMat(), stampaMat(), prodotto(matrice, vettore).
  • Lab 09, 10/12: Simulazione della ricerca del bosone di Higgs (pdf) (soluzione)
  • Lezione 22, 15/12: Metodi numerici per calcolo di integrali: metodo del punto di mezzo, del trapezio e dei rettangoli. Metodo Monte Carlo per l'integrazione numerica.
  • Lezione 22, 16/12: Calcolo area e volume arbitrari con il metodo Monte Carlo. puntatori a funzioni. puntatore a funzione come argomento di una funzione. esempio della funzione derivata ed integrale.
  • Lezione 22, 16/12: Introduzione alla programmazione di una scheda arduino Uno (Scientific Arduino Programming di Giovanni Organtini). Accensione di LED con generazione numeri casuali. Esempi di programmi per emissione segnale audio e accensione di LED. Termosensore con indicatore visuale e sonoro. Uso di un fotosensore.
  • Lab 10, 17/12: Interazione di particelle con un bersaglio (pdf) (soluzione)
  • Lab 11, 7/1: Materchef (esercitazione valutata) (pdf) (soluzione) (valutazione)
  • Lab 12, 14/1: Album di figurine (esercitazione valutata) (pdf) (soluzione)