Andrea Marin's Homepage
Corso di Programmazione 2010/2011 (page available only in Italian)

Slides del corso

Se si individuano errori/imprecisioni o parti non chiaramente illustrate nelle slides, sono apprezzati commenti che possono essere inviati per mail a marin _AT_ dsi.unive.it.

Esercizi

  • Esercizi assegnati il 09/04/2011
    1. Acquisire una da tastiera una sequenza di interni che termina con lo zero. Memorizzare la sequenza inserita in una lista ordinata e quindi stamparla.
    2. Scrivere una funzione ricorsiva che copi gli elementi di un array di interi in una lista mantenendone l'ordine.
    3. Si supponga di avere due liste di caratteri. Si scriva una funzione ricorsiva che confronti le due liste e restituisca 0 se sono identiche, 1 se la prima lista è alfabeticamente minore della seconda, e -1 altrimenti.
  • Esercizi assegnati il 26/02/2011
    1. Scrivere una funzione che restituisca tipo void la quale calcoli resto e quoziente della divisione intera di due numeri. Non usare gli operatori di divisione e resto.
    2. Scrivere una funzione che restituisca tipo void la quale calcoli il minimo e il massimo di un array di float
  • Esercizi assegnati il 19/02/2011
    1. Si immagini di avere un cilindro trasparente nel quale si inseriscono biglie colorate di rosso e di blu una sopra l'altra. Il cilindro può contenere N biglie sovrapposte. Scrivere una funzioni che conti il numero di possibili riempimenti dell'array con N biglie con il vincolo che non si possono inserire più di due biglie rosse consecutive.
    2. Modificare l'algoritmo di Bubble sort visto a lezione in modo da interrompere l'esecuzione del ciclo esterno se quello interno non esegue alcuno scambio.
  • Esercizi assegnati il 12/02/2011
    1. Scrivere una funzione ricorsiva che conti il numero di vocali in una stringa. Non utilizzare la funzione strlen (o equivalenti).
    2. Scrivere una funzione ricorsiva che confronti due stringhe restituendo: 0 se le stringhe sono uguali, 1 se la prima stringa viene alfabeticamente dopo la seconda, -1 altrimenti.
    3. Scrivere una funzione che calcoli l'ennesimo numero della successione di Fibonacci F(n). Questa è definita ricorsivamente come segue: F(0)=1, F(1)=1, F(n)=F(n-1)+F(n-2). Calcolare F(8).
  • Esercizi assegnati il 05/02/2011
    1. Scrivere la funzione int sottostringa(char str1[], char str2[]) che restituisce 1 se str2 è contenuta in str1, 0 altrimenti.
    2. Scrivere una funzione int palindroma(char str[]) che restituisce 1 se la stringa str è palindroma, 0 altrimenti.
  • Esercizi assegnati il 28/01/2011
    1. Scrivere una funzione che decida se un array contiene SOLO numeri primi usando la funzione is_prime definitina in precedenza
    2. Scrivere una funzione che ritorni il valore 1 se un array contiene elementi tutti diversi, 0 altrimenti.
    3. scrivere una funzione che ritorni il valore 1 se due array (che possono presentare elementi ripetuti) contengono gli stessi valori, 0 altrimenti
  • Esercizi assegnati il 04/12/2010
    1. Scrivere un programma che legga una sequenza di numeri da tastiera e si interrompa quando la somma degli ultimi due numeri è pari.
    2. Scrivere un programma che dato un numero naturale in ingresso ne calcoli la radice quadrata intera aprossimata per difetto. Usare solo operazioni aritmetiche elementari.
    3. Acquisito u numero naturale n, stampare il minore numero primo strettamente maggiore di n
    4. Scrivere un programma che acquisito un numero naturale maggiore di 0 stampi a video l'elenco dei suoi fattori primi con la corrispondente molteplicità.
  • Esercizi assegnati il 27/11/2010
    1. Calcolare il minimo comune multiplo di tre numeri naturali acquisiti in ingresso
  • Esercizi assegnati il 20/11/2010
    1. Scrivere un programma che conti il numero di divisori di un numero naturale n compresi tra 1 e n
    2. Scrivere un programma che calcoli il minimo comune multiplo tra due numeri naturali acquisiti in ingresso
  • Esercizi assegnati il 06/11/2010
    1. Scrivere un programma che letti due numeri ne stampi il prodotto mediante somme successive
    2. Scrivere un programma che letto un numero positivo n, calcoli quanti multipli di 7 sono compresi tra 1 e n, senza usare gli operatori /, *
    3. Scrivere un programma che legga una sequenza di numeri da tastiera e interrompa l'acquisizione quando vengono inseriti due numeri consecutivi
  • Esercizi assegnati il 30/10/2010
    1. Letto un numero da tastiera, dire se è un multiplo di 5 (si/no), un multiplo di 10 (si/no) o un multiplo di 6 (si/no). Nidificare opportunamente i condizionali.
    2. Letti tre numeri interi da tastiera, stamparne il maggiore
    3. Letti tre numeri in virgola mobile da tastiera, dire se tre segmenti di lunghezza corrispondente possono formare i lati di un triangolo rettangolo

Materiali di approfondimento

I materiali di approfondimento proposti hanno lo scopo di integrare parti trattate a lezione ma non adeguatamente affrontate nel libro di testo.

Libri di testo

  • B. W. Kernichan, D. M. Ritchie. Il linguaggio C: principi di programmazione e manuale di riferimento. Pearson. II ed.
  • Bellini, A. Guidi. Linguaggio C - guida alla programmazione. Quarta edizione. McGraw-Hill

Orario delle lezioni

Le lezioni si svolgono il sabato dalle 10:30 alle 12:00 in Aula 1 c/o il Dipartimento di Informatica, via Torino, 155, Mestre

Avvisi

  • Risultati del secondo appello di giugno, parte C (testo)
    CandidatoTeoriaLaboratorioTotale
    Angeli61420
    Tommasella8.5918
    De LuciaInsuff.Insuff.Insuff.
    Lizzi4,514,518
    Savi610Insuff.
    AdrianiRRR

    Per la visione degli elaborati ` possibile prendere appuntamento per mail.
  • Risultati del primo appello di giugno, parte C (testo)
    MatricolaTeoriaLaboratorioTotale
    8351035.51420
    8352706.5Insuff.Insuff.
    77926461521
    835175Insuff.Insuff.Insuff.

    Per la visione degli elaborati è possibile prendere appuntamento per mail.
  • Pubblicato il testo dell'esercitazione di laboratorio Testo
  • La lezione di Sabato 16/04/11 di Programmazione C si terrà le prime due ore. Seguiranno 4 ore di programmazione funzionale.
  • La lezione di Sabato 09/04/11 di Programmazione C sarà di 4 ore a partire dalle 8.45
  • La lezione di Sabato 26/02/11 di Programmazione C sarà di 4 ore.
  • La lezione di Sabato 19/02/11 di Programmazione C sarà di 4 ore.
  • La lezione di Sabato 05/02/11 di Programmazione C sarà di 4 ore: due di teoria e due in laboratorio. Pertanto le lezioni si concluderanno alle 13.45
  • Sulla pagina web del corso del precedente anno sono stati pubblicati gli esiti dell'esame di gennaio
  • Si ricorda che le lezioni riprenderanno col termine della sessione d'esami cioè il 29/01/2011
  • La lezione del 18 dicembre di programmazione (sia funzionale che imperativa) sono sospese per neve. Sarà recuperata nelle settimane seguenti secondo modalità concordate.
  • La lezione del 13 novembre di programmazione (sia funzionale che imperativa) è sospesa. Sarà recuperata nelle settimane seguenti secondo modalità concordate.

Registro delle lezioni

  • 30/04/2011 Laboratorio: svolgimento degli esercizi dei precedenti appelli d'esame
  • 16/04/2011 Esercizi sulle liste
  • 09/04/2011 4 ore. Teoria: manipolazione di liste (inserimento in testa e coda, cancellazione delle liste. Laboratorio: liste ordinate.
  • 26/03/2011 Laboratorio: esercizi sulle liste
  • 19/03/2011 Scorrimento di liste mediante ricorsione e iterazione.
  • 12/03/2011 Introduzione alle liste. Definizioni e primi esempi
  • 05/03/2011 Esercizi sui puntatori
  • 26/02/2011 4 ore. Indirizzi e puntatori. Laboratorio: implementazione del passaggio per indirizzo coi puntatori.
  • 19/02/2011 4 ore. Teoria: La ricorsione: esercizi. Ricerca per bisezione in array ordinati. Laboratorio: ordinamento con Bubble sort.
  • 12/02/2011 La ricorsione. Primi esempio. Uso dello stack.
  • 05/02/2011 4 ore. Teoria: le stringhe ed algoritmi fondamentali su di esse. Laboratorio: esercizi su vettori e stringhe.
  • 29/01/2010 Scope dei nomi. Array monodimensionali. Esercizi
  • 11/12/2010 Sottoprogrammi e passaggio dei parametri per copia
  • 04/12/2010 Laboratorio: esercizi sui cicli.
  • 27/11/2010 Ciclo for. Esercizi sui cicli. Calcolo del MCD, mcm, test di primalità
  • 20/11/2010 Cicli while, do.. while e for. Uso preferenziale dei cicli. Esercizi
  • 06/11/2010 Ancora sulla selezione binaria. Nidificazione. Introduzione ai cicli.
  • 30/10/2010 Laboratorio: ambiente di lavoro Linux. La compilazione. Primo programma C.
  • 23/10/2010 Variabili ed assegnamento. Espressioni aritmetiche. Sequenza. Introduzione al condizionale.
  • 16/10/2010 Introduzione al corso. Macchina di Von Neumann. Linguaggi imperativi. Macchina astratta C.