Enrico Colombini

Corso di C - lezioni interattive

Edizione freeware 2002 - v 1.1

Freeware non commerciale: questi testi e programmi sono protetti da Copyright ma possono essere liberamente distribuiti per uso non commerciale purché non vengano in alcun modo alterati. L'autore ha posto la massima cura nella realizzazione, ma non può garantire l'esattezza delle informazioni contenute, il corretto funzionamento su ogni computer, né l'assenza di conseguenze dannose o indesiderabili.


Materiale e copyright

Queste lezioni interattive in ambiente MS-DOS facevano parte del Corso di C pubblicato a fascicoli nel 1990 dalla divisione libri del Gruppo Editoriale Jackson (oggi Jackson Libri).

Avendo riacquisito il copyright alla scadenza del contratto, ho deciso di pubblicarle come freeware non commerciale: possono essere liberamente distribuite per usi non commerciali purché non vengano in alcun modo alterate. Il file corsodic.zip originale va distribuito intatto, incluso il presente documento.

In tutta l'opera, dove si legge:

  Copyright (C) 1990 Gruppo Editoriale Jackson
si deve intendere:
  Copyright (C) 1990 Gruppo Editoriale Jackson
  Copyright (C) 2002 Enrico Colombini
Al momento non ho in programma di pubblicare anche la parte stampata del corso, perché ciò richiederebbe parecchio lavoro di revisione. Le lezioni interattive contengono comunque le stesse informazioni, anche se in forma differente.

Per quanto riguarda la riproduzione di singoli programmi C o C++ di esempio, essa è libera per uso non commerciale, purché venga conservata l'indicazione del copyright.
Chi desiderasse fare uso commerciale dell'opera o dei relativi programmi, ad esempio per inclusione in testi didattici non gratuiti, può scrivermi per eventuali accordi o richieste specifiche.

Le tecniche impiegate nei programmi C o C++ di esempio (incluse parti di codice) possono essere liberamente usate nei propri programmi, anche commerciali: insegnare a programmare è l'obiettivo del corso! Per la riproduzione di programmi completi vedi sopra.

I driver .bgi contenuti in alcune lezioni sono liberamente distribuibili se allegati all'opera, ma sono soggetti al copyright Borland.
 

Installazione

Non è necessaria alcuna installazione: una volta decompresso il file corsodic.zip, il corso può essere utilizzato immediatamente.

Nota: il decompressore deve mantenere le directory (cartelle). In altri termini, chi usa pkunzip deve aggiungere l'opzione -d. Nessun accorgimento particolare è richiesto per chi usa info-zip, Aladdin Expander o WinZip.
 

Come leggere il corso

Il Corso di C è composto da: Per i principianti conviene seguire prima il corso base (B1..B8), poi ripartire dalla lezione 1 e seguire il corso esperti (E1..E8).

Per leggere una lezione basta aprire la relativa cartella (directory) ed eseguire il programma corsodic.exe, ad esempio con un doppio clic da Windows, seguendo poi le istruzioni dei menu e il relativo help in linea.

Il programma è basato su MS-DOS e funziona anche sotto Windows, sia in una finestra che a schermo intero; questa seconda scelta è preferibile per la migliore leggibilità e fedeltà alle proporzioni originali. In ambiente Windows si passa da una modalità all'altra con Alt-Invio (Alt-Enter).

Alcuni dei caratteri semigrafici impiegati per le cornici o nei programmi di esempio possono essere rappresentati in modo non corretto (ad esempio sotto forma di lettere accentate) su un PC con sistema operativo italiano.
 

Eseguire i programmi di esempio

I programmi dimostrativi possono essere eseguiti durante la lettura delle lezioni, premendo il tasto R quando appare il relativo listato (come indicato sul video), oppure direttamente da una console di MS-DOS.

Ad esempio, aprendo una finestra MS-DOS nella cartella (directory) Lezione1 e scrivendo E1 si ottiene una lista dei programmi dimostrativi della lezione 1 del corso esperti:

  E1 TABULA
  E1 ACCENTI
  E1 ANGOLI
  E1 COLORI
  E1 PISTONE
Scrivendo quindi  E1 COLORI  verrà eseguito il programma dimostrativo COLORI. Ciò può essere utile per rieseguire dei programmi senza dover avviare la relativa lezione e scorrerla fino al punto desiderato.
 

Problemi di stampa

Per poter stampare i listati con il comando Ctrl-Stamp (Ctrl-PrintScr) è necessario che il driver della stampante consenta la stampa da MS-DOS.

Inoltre, i programmi che inviano comandi diretti alla stampante, come GRAFILE della lezione 7 esperti, possono non funzionare o causare effetti indesiderati, specie con stampanti costruite solo per Windows (con la mia Epson Stylus Color 850 le stampe sono regolari).
 

Contattare l'autore

Potete scrivermi a erix@erix.it, ma vi prego di considerare che non ho il tempo di fare l'insegnante postale di linguaggio C. In particolare, non posso spiegare tecniche di programmazione o risolvere problemi altrui a tempo perso. Ogni commento o segnalazione relativo al corso è invece gradito.
 

Indice del corso base

Lezione B1:
- Cos'è il C
- Compilatori e ambienti integrati
- Installazione e uso
- Editing dei programmi
- Il primo programma C
- Componenti del programma
- Funzioni: printf e main
- Errori di compilazione
- Aspettare un Return
- A capo con \n
Lezione B2:
- Stampare un numero intero
- Stampe miste
- Variabili, tipo, e dichiarazione
- Operatori aritmetici: il programma SOMMA
- Espressioni: il programma CALCOLI
- Incrementi, operatori di assegnazione
- Assegnazioni: il programma ASSEGNA
- Limiti degli interi e overflow
- Inizializzazioni e costanti
- Linee lunghe
- Formato di stampa: il programma ALLINEA
Lezione B3:
- Input di interi: scanf, il programma DOPPIO
- Esecuzione condizionale: il programma FILM
- Istruzioni composte: il programma QUADRATO
- Valore di un confronto
- Scelte multiple, operatori logici
- Long int: il programma TEMPO
- Numeri reali: double, float, long double
- Stampe ed input di reali: il programma SFERA
- Ritorno di un valore: il programma SECONDI
- Funzioni matematiche: sqrt, il programma SECGRADO
- Switch, operatore ternario: il programma INVENTA
Lezione B4:
- Cicli: while, do
- Variabile di controllo: for, il programma FATTORIA
- Uscire da un ciclo: break, continue
- Caratteri: putchar, il programma CHARSET
- Codice ASCII esteso, caratteri di controllo
- Funzioni trigonometriche: il programma TEXTSIN
- Costanti: #define, enum, il programma MULTA
- Leggere un carattere: getchar
- Assegnazioni nei confronti: il programma CRIPTO
- Test sui caratteri: il programma LEGGENUM
- Un problema: EOF
Lezione B5:
- Programmazione strutturata: funzioni
- Variabili locali
- Ritornare un valore: il programma MINMAX
- Passaggio di parametri
- Passaggio per valore: il programma MCD
- Tipo degli argomenti e del valore ritornato
- Prototipi di funzione: il programma INVESTE
- Conversioni automatiche ed esplicite: cast
- Variabili globali: il programma RETTANG
- Variabili statiche e locali ad un blocco
- Parametri vecchio stile
Lezione B6:
- Array
- Inizializzazione, array a più dimensioni.
- Il programma PARIDISP
- Pointer
- Passaggio per riferimento: il programma ERONE
- Passare un array: il programma INVERTE
- Operazioni sui pointer, pointer e array
- Passare array come pointer: il programma PRIMI
- Unsigned
- Numeri pseudocasuali: il programma DADI
- Pointer a pointer, array di pointer
Lezione B7:
- Il tipo char, array di char
- Stringhe, char e int, il programma SPECCHIO
- Stringhe e pointer, passare una stringa, costanti stringa
- Stampare una stringa: printf e puts, il programma SEPARA
- Input di una stringa: gets, funzioni stringa
- Confronti tra stringhe: strcmp, il programma FIGURA
- scanf di stringhe, sprintf, sscanf
- Conversioni dirette: il programma RIPETE
- Array di stringhe
- Ricerche in una stringa: il programma PAROLA
- Forme concise
Lezione B8:
- Strutture
- Passaggio di strutture: il programma FORZE
- Array di strutture, inizializzazione
- Pointer a strutture
- Dimensione: sizeof, il programma CARTE
- Tipi composti: typedef
- Convenzioni, il programma PIANO
- Orologio/calendario: time
- clock, il programma DATTILO
- Compilazione condizionale, debug
- Debugger e organizzazione

Indice del corso esperti

Lezione E1:
- File, modo sequenziale e random, file testo
- Scrivere in un file, leggere da un file
- End of file: il programma TABULA
- Accesso in modo binario, file predefiniti
- Errori dei file, la stampante come un file
- ungetc, ridirezione e filtri: il programma ACCENTI
- Controllo del video, video alfanumerico e colori
- Il driver ANSI.SYS
- Libreria di console, BIOS e memoria video
- La libreria Jackson: i programmi ANGOLI e COLORI
- Caratteri semigrafici: il programma PISTONE
Lezione E2:
- Argomenti di main: il programma ARG
- Accesso al DOS e variabili di ambiente
- File binari, scrittura e lettura
- Input da tastiera, libreria di console
- Tasti speciali
- Input con DOS e BIOS
- La libreria Jackson: il programma TASTI
- Input controllato: il programma INPCON
- Stampante: comandi e sequenze di escape
- Il programma LISSAJ
- Il programma LIFE
Lezione E3:
- Codice binario
- Complemento a due
- Esadecimale e ottale: il programma CONVERTE
- Esadecimale in C: il programma ESAMINA
- Programmazione modulare
- Variabili esterne, type checking
- Header: funzioni e librerie
- Jconio.c e Jconio.h: make, il programma BINARIO
- Operazioni sui file, errori dei file: errno
- Il programma LIBRI
Lezione E4:
- Operatori logici bitwise, usare i singoli bit
- Ancora sui bit: shift
- Pointer a funzioni, atexit
- Ordinamento: qsort, il programma ORDINA
- Array indice: il programma ALFAPAR
- Video grafico, schede grafiche
- Librerie grafiche, scegliere il modo grafico
- Scegliere un modo col Turbo C ed il Quick C
- Accendere un pixel: il programma RIMBALZA
- Linee rette, cancellazione e rettangoli
- Fattore di quadratura: il programma SPIRALI
Lezione E5:
- File random
- Posizionamento: fseek, il programma AGENDA
- Sostituzioni con #define: macro
- Macro e funzioni, ancora sulle macro
- Macro e portatilità: capire JCONIO.H
- Libreria grafica Jackson: il programma INFOGRAF
- Ricorsione: il programma FATTORIC
- Frattali: il programma FIOCCO
- Union, scomporre un int
- I registri della CPU
- Chiamate al BIOS: il programma SIMBOLI
Lezione E6:
- Array dinamici, chiedere memoria: malloc
- calloc e free, heap e rischi
- Leggere aree video: il programma FINESTRA
- Variabili e funzioni statiche, stack
- Il programma FINESTRE
- Dischi MS-DOS, funzioni DOS, il programma SPAZIO
- File e directory, agire sulle directory
- Bit field, findfirst/findnext: il programma XDIR
- Errori hardware, harderr: il programma ERRORI
- Porte di I/O
- Ottimizzazione, register, la virgola
Lezione E7:
- Segmenti e offset
- Modelli di memoria
- Tipi di pointer, problemi con i pointer
- Memoria video: il programma MEMVIDEO
- Pointer huge, array più grandi di 64K
- Scrivere sul video grafico, font
- Caratteri con il BIOS: il programma SOMMASIN
- Stampare grafici, strisce grafiche
- Comandi grafici, stampare una striscia grafica
- Il programma GRAFILE
- Il linguaggio PostScript
Lezione E8:
- Limiti del C, dal C al C++
- Il primo programma C++, iostream: cout
- Output concatenato, input ed errori
- Reference, overloading, argomenti di default
- Nuovi tipi: complex, classi e nuovi tipi
- Dati privati e funzioni pubbliche, oggetti e costruttore
- Funzioni inline, usare un oggetto, il programma ORARIO
- Definire gli operatori: il programma FRAZIONI
- Distruttore: new e delete, il programma SCRITTE
- Componenti statiche: il programma DUEDADI
- Ereditarietà: il programma LABIRINT