Informatica Generale 1 - Primo Bimestre - A.A. 2001/02
Ingegneria delle Telecomunicazioni

Docenti

Fausto Giunchiglia (Tit.), Nicola Bertoldi (bertoldi@itc.it), Tarcisio Coianiz (coianiz@itc.it), Sabrina Recla (recla@irst.itc.it), Alessandro Tomasi (tomasi@science.unitn.it)
 
 

Obiettivo

Lo scopo del corso è di insegnare a programmare utilizzando un linguaggio di tipo imperativo ed, in particolare, il subset del C++ che corrisponde al C. Si cerca di raggiungere questo obiettivo tramite due sotto-obiettivi. Il primo è quello di dare una conoscenza dettagliata ed avanzata dei comandi e costrutti di controllo del linguaggio studiato, anche ed in particolare in tutti quegli aspetti che lo distinguono da altri linguaggi imperativi (ad esempio Pascal). Il secondo è quello di insegnare agli studenti a sviluppare programmi di media dimensione utilizzando la metodologia della programmazione strutturata ("step-wise refinement"). Il corso non richiede alcuna specifica conoscenza della programmazione imperativa del C/C++ e prevede un'introduzione di base sia al sistema operativo UNIX sia al software necessario per la programmazione (editor, compilatore, debugger). L'esame mirerà a valutare la capacità concreta che gli studenti hanno di sviluppare programmi di medie dimensioni.
 
 

Programma

  1. Elementi di base dell'architettura di un calcolatore: componenti fondamentali e istruzioni principali
  2. Fondamenti della Programmazione Imperativa: istruzioni primitive e costrutti di controllo
  3. Programmazione Strutturata: step-wise refinement, utilizzo di pseudo linguaggi (con sintassi C-like), esercizi di facile/media complessità e media dimensione (indicativamente programmi con un numero di righe inferiore alle 500)
  4. Linguaggio C++ (in particolare il subset del C++ che corrisponde al C):
  1. Laboratorio: introduzione al sistema operativo UNIX, introduzione alla SHELL di UNIX, introduzione al file editor EMACS, ciclo di sviluppo programmi: editing, compilazione, debugging, run.
Modalità d'esame

L'accertamento prevede una prova scritta e una orale sui contenuti del corso.
 
 

Testi consigliati

Per l'architettura del calcolatore e la programmazione in C++: Franco Crivellari, Elementi di programmazione con il C++, Collana di Informatica Franco Angeli [F.C.]

Per la programmazione strutturata: Jim Welsh & Michael McKeag, Structured System Programming, C.A.R. Hoare Series Editor [J.W.]

Per la programmazione in C++: dispense del materiale proiettato a lezione.
 
 

Schema delle lezioni (47 ore per un totale di 22 ore di teoria, 4 di quesiti e 21 di laboratorio)

Data Ora Partecipanti [docente]
Lezione
Aula
Contenuti
Materiale di supporto
Mer 26 Set 14.30-16.00 Tutti [G]
1-T
Circos.
  • Presentazione del Corso
  • Architettura di un calcolatore
  • -
  • F.C. pp. 16-30
Gio 27 Set 8.30-10.00 Tutti [G]
2-T
Circos.
  • Programmazione imperativa
  • fondamenti del linguaggio
  • -
  • F.C. pp. 135-143
Ven 28 Set 13.30-16.30 Group4 [C]
Lun 1 Ott 10.30-13.30 Group1 [T] 
Lun 1 Ott 15.30-18.30 Group2 [B] 
Mer 3 Ott 8.30-11.30 Group3 [R]
3-E
Cisca
  • Sistemi Operativi odierni
  • Introduzione al S.O. Unix
  • Rassegna comandi UNIX
  • L'interprete SHELL
  • F.C. pp. 31-38
  • F.C. pp. 73-79
  • F.C. pp. 79-93
  • F.C. pp. 96-105
Mer 3 Ott 14.30-16.00 Tutti [G]
4-T
Circos.
  • Programmazione imperativa
  • istruzioni primitive
  • costrutti di controllo
  • -
  • note a lezione
  • note a lezione
Gio 4 Ott 8.30-10.00 Tutti [G]
5-T
Circos.
  • Programmazione in C++
  • Fondamenti di programmazione
  • Variabili e costanti
  • -
  • F.C. pp. 143-175
  • dispense
Ven 5 Ott 13.30-16.30 Group4 [C]
Lun 8 Ott 10.30-13.30 Group1 [T] 
Lun 8 Ott 15.30-18.30 Group2 [B] 
Mer 10 Ott 8.30-11.30 Group3 [R]
6-E
Cisca
  • Pseudocodifica di
  • Uso di una formula (sequenza)
  • Macchina del caffè (selezione)
  • Gioco della roulette (iteraz.)
  • Stipendi (assegnazione)
  • note a lezione
  • note a lezione
  • note a lezione
  • note a lezione
Mer 10 Ott 14.30-16.00 Tutti [G]
7-T
Circos.
  • Programmazione in C++
  • Tipi di dati primitivi
  • F.C. pp. 205-228
  • F.C. pp. 262-267
  • dispense
Gio 11 Ott 8.30-10.00 Tutti [G]
8-T
Circos.
  • Programmazione in C++
  • Costrutti di controllo 
  • dispense 
Ven 12 Ott 13.30-16.30 Group4 [C]
Lun 15 Ott 10.30-13.30 Group1 [T] 
Lun 15 Ott 15.30-18.30 Group2 [B] 
Mer 17 Ott 8.30-11.30 Group3 [R]
9-E
Cisca
  • Editor di testi emacs
  • Prog. " Hello World " 
  • Compilazione dei programmi
  • Analisi comando make
  • Sviluppo di algoritmi elementari in C++
  • -
  • -
  • -
  • F.C. pp. 93-94
  • -
Mer 17 Ott 14.30-16.00 Tutti [G]
10-T
Circos.
  • Programmazione in C++
  • Tipi di dati strutturati
  • F.C. pp. 234-238
  • dispense
Gio 18 Ott 8.30-10.00 Tutti [G]
11-T
Circos.
  • Programmazione in C++
  • Funzioni e Procedure
  • dispense
  • F.C. pp. 352-367
  • F.C. pp. 379-383
  • F.C. pp. 385-392
  • F.C. pp. 177-188
Ven 19 Ott 13.30-16.30 Group4 [C]
Lun 22 Ott 10.30-13.30 Group1 [T] 
Lun 22 Ott 15.30-18.30 Group2 [B] 
Mer 24 Ott 8.30-11.30 Group3 [R]
12-E
Cisca
  • Sviluppo di algoritmi in C++ di difficoltà limitata
  • -
Mer 24 Ott 14.30-16.00 Tutti [B][C][R][T]
13-T
Circos.
  • Lezione riservata alle domande
  • -
Gio 25 Ott 8.30-10.00 Tutti [G]
14-T
Circos.
  • Programmazione strutturata 1
  • J.W. pp. 1-7
  • J.W. pp. 7-9
  • note a lezione
Ven 26 Ott 13.30-16.30 Group4 [C]
Lun 29 Ott 10.30-13.30 Group1 [T] 
Lun 29 Ott 15.30-18.30 Group2 [B] 
Mer 31 Ott 8.30-11.30 Group3 [R]
15-E
Cisca
  • Sviluppo di algoritmi in C++ di facile/media complessità
  • -
Mer 31 Ott 14.30-16.00 Tutti [G]
16-T
Circos.
  • Programmazione strutturata 2
  • note a lezione
Ven 2 Nov 13.30-16.30 Group4 [C]
Lun 5 Nov 10.30-13.30 Group1 [T] 
Lun 5 Nov 15.30-18.30 Group2 [B] 
Mer 7 Nov 8.30-11.30 Group3 [R]
17-E
Cisca
  • Sviluppo di algoritmi in C++ di media complessità
  • -
Mer 7 Nov 14.30-16.00 Tutti [G]
18-T
Circos.
  • Programmazione strutturata 3
  • note a lezione
Gio 8 Nov 8.30-10.00 Tutti [B][C][R][T]
19-T
Circos.
  • Lezione riservata alle domande
  • -
Ven 9 Nov 13.30-16.30 Group4 [C]
Lun 12 Nov 10.30-13.30 Group1 [T] 
Lun 12 Nov 15.30-18.30 Group2 [B] 
Mar 13 Nov 8.30-11.30 Group3 [R]
20-E
Cisca
  • Sviluppo di algoritmi in C++ di media complessità
  • -
I docenti sono identificati con le seguenti sigle: [G]iunchiglia, [B]ertoldi, [C]oianiz, [R]ecla, [T]omasi




Appelli

Ricevimento

su appuntamento, da fissare con il docente di riferimento tramite e-mail.
 

Materiale presentato a lezione

 

Materiale Aggiuntivo e di Supporto


ESERCIZI