Argomenti
- Introduzione
- Problemi, algoritmi di soluzione, programmi
- Modelli di calcolo: struttura generale di un elaboratore
- CPU, Memoria e unità di I/O
- Suddivisione della CPU in UC e ALU
- Registri
- Struttura della memoria: indirizzo e contenuto di una cella di memoria
- Rappresentazione delle informazioni all'interno di un elaboratore
- Dati e operazioni
- Informazioni alfanumeriche: codici
- Informazioni numeriche
- Rappresentazione posizionale dei numeri
- Base di rappresentazione: decimale, binaria, esadecimale e qualunque
- Conversione della rappresentazione tra due basi
- Invarianza dell'aritmetica tra una base e l'altra
- Rappresentazione in complemento a 2 dei numeri negativi
- Rappresentazione compatta in esadecimale di sequenze binarie
- Operazioni in complemento a 2
- Rappresentazione dei numeri reali in virgola mobile
- Normalizzazione di un numero reale
- Rappresentazione IEEE754
- Rappresentazione dello 0, infinito e NaN
- Linguaggio macchina e sua rappresentazione binaria
- Strutturazione delle operazioni: sequenza, scelta e iterazione
- Linguaggi di programmazione
- Linguaggio C
- Struttura generale di un programma C
- Compilazione, linking, caricamento ed esecuzione
- Elementi lessicali: commenti, parole chiave, identificatori, costanti,
operatori
- Priorità e associatività degli operatori
- Parte dichiarativa
- Tipi di dati semplici
- Variabili e loro dichiarazione
- Puntatori
- Istruzione semplici: assegnazione e lettura/scrittura
- Espressioni aritmetiche, relazionali, di uguaglianza e logiche
- Istruzioni strutturate:
- sequenza, if then else, switch, do, while, for, operatore condizionale
- istruzioni di break e continue
- Nidificazione delle istruzioni strutturate
- Procedure e funzioni:
- Definizione e prototipi
- Parametri formali e attuali
- Ambiente locale di una funzione
- Passaggio per valore e per indirizzo
- Pila di attivazione di una procedura e di una funzione
- Regole di visibilità
- Tipi di dati strutturati
- Array, stringa
- Passaggio di un array come parametri di funzioni
- Funzione di mapping di un array
- Geometria degli array multidimensionali e passaggio dei parametri
- Array locali automatici a dimensione variabile
- Parametri array a dimensione variabile
- Files
- Funzioni di accesso ai files: apertura, chiusura, interrogazione, lettura e scrittura
- Apertura in lettura, scrittura, append e update
- File di testo e file binario
- I/O formattato e non
- Files standard
- Procedure e funzioni predefinite
- Preprocessore
- Metodologie di progetto
- Programmazione strutturata
- Analisi top-down e bottom-up
- Modularizzazione di un programma
- Correttezza di un algoritmo
- Cenni sulla complessità
- Algoritmi di ordinamento
- Bubblesort, insertion sort, selection sort, quicksort
- Algoritmi di ricerca
- Ricerca sequenziale, ricerca binaria e tempi di esecuzione
Testo e materiale di riferimento
Deitel & Deitel, C Corso completo di programmazione, Apogeo (Ed. del 2000)
- Capitolo 1: tutti i paragrafi
- Capitolo 2: tutti i paragrafi
- Capitolo 3: tutti i paragrafi
- Capitolo 4: tutti i paragrafi
- Capitolo 5: tutti i paragrafi esclusi dal 5.11 al 5.15
- Capitolo 6: tutti i paragrafi
- Capitolo 7: tutti i paragrafi
- Capitolo 8: par. 8.1, 8.2, 8.5, 8.6, 8.7, 8.10 [funzione strlen()
]; per le parti non citate è richiesta la capacità di consultazione
- Capitolo 9: tutti i paragrafi
- Capitolo 11: tutti i paragrafi
- Appendici A,B: capacità di consultazione
- Appendice C,D,E
Le dispense e le esercitazioni presenti nel materiale didattico
E' possibile utilizzare un qualsiasi altro testo e in particolare
il seguente:
A.Kelley e I.Pohl, C Didattica e Programmazione, Addison-Wesley
Ed.