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 pcbasic.zip originale va distribuito intatto, incluso il presente documento.
In tutta l'opera, dove si legge:
Copyright (C) 1989-1990 Gruppo Editoriale Jacksonsi deve intendere:
Copyright (C) 1989-1990 Gruppo Editoriale Jackson Copyright (C) 2002 Enrico ColombiniAl 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 Basic 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 Basic 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.
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.
Non è necessario possedere il GW-Basic o il QBasic per leggere il corso ed eseguire i programmi di esempio, benché naturalmente essi siano necessari se si desiderano realizzare dei propri programmi in linguaggio Basic per MS-DOS (esistono tuttavia anche delle alternative freeware, purtroppo non del tutto compatibili).
Ricordo che il GW-Basic era fornito insieme alle prime versioni di MS-DOS, mente il QBasic si trova con le ultime versioni di MS-DOS e nei CD-ROM di installazione di Windows 95 e Windows 98 (che io sappia, non è incluso nelle versioni successive di Windows).
Il corso utilizza i numeri di riga (ormai decisamente obsoleti) ma introduce comunque i concetti della programmazione strutturata, impiegandoli nei programmi di esempio.
Per leggere una lezione basta aprire la relativa cartella (directory) ed eseguire il programma pcbasic.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, specie nella modalità a finestra.
I programmi il cui nome termina col suffisso (estensione) .EXE sono direttamente eseguibili: per avviarli basta scriverne il nome nella console MS-DOS, oppure fare doppio clic da Windows sulla relativa icona. Ad esempio, per eseguire il programma TEXTANIM della lezione 3 si scrive:
TEXTANIMSe invece il nome del programma termina col suffisso (estensione) .TBC, per eseguirlo occorre premettere al nome del programma il comando RUN, separato da uno spazio. Ad esempio, per eseguire il programma EDSPRITE della lezione 3 si deve scrivere:
RUN EDSPRITECiò non serve per avviare i programmi durante la lettura del corso (come notato sopra, si usa il tasto R), ma può essere utile per rieseguire dei programmi senza dover avviare la relativa lezione e scorrerla fino al punto desiderato.
Ho lasciato inalterate queste impostazioni per mantenere la massima fedeltà storica al corso originale, limitandomi a ricompilare alcuni programmi che avevano problemi con la grafica. In quasi tutti i programmi, comunque, le impostazioni grafiche possono essere modificate cambiando la definizione di alcune variabili e l'istruzione SCREEN all'inizio del programma stesso.
Ho invece aggiunto, dove possibile, alcuni ritardi o limitazioni di velocità massima nei programmi di animazione, dato che il corso era in origine previsto per una CPU 8086 a 8 MHz, dove la CPU stessa limitava la velocità di esecuzione.
Inoltre, i programmi che inviano comandi diretti alla stampante, come STAMPAGR della lezione 8 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).
Per interrompere l'esecuzione di un programma Basic, cioè fermarlo e tornare alla console di MS-DOS (o a Windows) si può usare la combinazione di tasti Ctrl-Interr (Ctrl-Break).
- BASIC e GW-BASIC - Avviare il GW-BASIC, e uscirne - Comandi diretti e numeri di linea: PRINT - Listare ed eseguire: LIST e RUN - Editing delle linee in GW-BASIC - Aggiungere e cancellare linee - Salvare e ricaricare: SAVE e LOAD - Il video editor del GW-BASICLezione B2:
- Il computer come calcolatrice - Le variabili - Introduzione di valori: INPUT - PRINT multiplo e altri dettagli - Esempio: il programma SOMMA - Il video alfanumerico - Esempio: il programma ANGOLI - Scrivere sul video a colori - Esempio: il programma COLORI - I caratteri semigrafici - Rinumerare le linee: RENUMLezione B3:
- Salto incondizionato: GOTO - Esempio: il programma LOOP - Esecuzione condizionale: IF..THEN..ELSE - Diagrammi di flusso - Spaghetti programming - Esempio: il programma CONTA - Esecuzione condizionale di un blocco - Operatori logici: AND,OR,XOR - Funzioni: SQR() - Esempio: il programma SECGRADOLezione B4:
- Cicli: FOR..NEXT - Esempi: i programmi CORNICE e CORNICE2 - Ripetizione condizionale: WHILE..WEND - Cicli nidificati: il programma PITAGORA - Il video grafico - Accendere un pixel e colorarlo: PSET - Linee e rettangoli: LINE - Esempio: il programma RETICOLO - Esempio: il programma RUOTA - Circonferenze: CIRCLELezione B5:
- Stringhe e variabili stringa - Input di una stringa - Funzioni stringa: LEFT$,RIGHT$,MID$ - Operazioni sulle stringhe - Codice ASCII: CHR$,ASC - Caratteri di controllo - Confronti tra stringhe - Stringhe e numeri: STR$,VAL - Ancora sulle stringhe - Esempio: il programma SEPARA - Esempio: il programma PAROLALezione B6:
- Array: DIM - Esempio: il programma CONTACAR - Cancellare un array: ERASE - Cifre significative e tipi di variabili - Arrotondamenti e numeri casuali: INT,RND - Esempio: il programma CORSA - Vettori e matrici - Esempio: il programma LIFE - Funzioni trigonometriche: SIN,COS,TAN - Esempio: il programma TEXTSIN - Esempio: il programma SOMMASINLezione B7:
- Subroutine: GOSUB,RETURN - Livelli di subroutine e stack - Parametri - Esempio: il programma CORNICI - Variabili globali e locali - Ancora sulle subroutine: ON..GOSUB - Funzioni definibili: DEF FN - Esempio: il programma DADI - Funzioni matematiche - Notazione esponenziale ed errori - Esempio: il programma FUNZIONELezione B8:
- Dati nel programma: DATA,READ - Il puntatore dei DATA: RESTORE - Esempio: il programma CARTE - Esempio: il programma FINESTRE - Stampe su carta: LPRINT,LLIST - Ancora sulla stampante - Comandi di stampa - Sequenze di Escape - Esempio: il programma LISSAJ - Stampe formattate: PRINT USING - Debug dei programmi
- Input controllato: INPUT$, INKEY$ - Esempio: il programma KEYCODE - Esempio: il programma INPCON - I tasti funzione: KEY, ON KEY - I codici di tastiera - Esempio: il programma POLIGONI - Il tempo passa: DATE$, TIME$, TIMER - Esempio: il programma SPIRALILezione E2:
- File sequenziali e file random - Uso dei file sequenziali - Errori in BASIC - Esempio: il programma LIBRI - Operazioni sui file - Programmi come file testo: MERGE - Creare programmi da programmaLezione E3:
- Finestre testo: VIEW PRINT - Finestre grafiche: VIEW SCREEN - Riempimento di colore: PAINT - Blocchi grafici: GET e PUT - Esempio: il programma EDSPRITE - Animazione in modo testo - Esempio: il programma TEXTANIM - Animazione in modo grafico - Esempio: il programma GRAFANIMLezione E4:
- I file random - Aprire un file random: FIELD - Scrivere un record: LSET, PUT# - Leggere un record: GET# - Esempio: il programma AGENDA - Musica e suoni: SOUND - Linguaggio musicale: PLAY - Esempio: il programma TASTIERA - Musica in backgroundLezione E5:
- Codice binario - Interfaccia seriale: OPEN COM - Esempio: il programma COMUNICA - Operatori logici bitwise - Codice esadecimale - Esempio: il programma CONVERTE - Esempio: il programma ESAMINA - Retini con PAINT - Accesso alla memoria: PEEK, POKE - Esempio: il programma NASCOSTILezione E6:
- Algoritmi - Tecniche di ordinamento - Ordinamento per selezione - Ordinamento per inserzione - Ordinamento per scambio (bubble sort) - Efficienza: Shell sort e Quicksort - Esempio: il programma ORDINA - Linguaggio grafico: DRAW - Definire un linguaggio grafico - Realizzazione: il programma TURTLE - Esempio: il programma DISEGNILezione E7:
- Cercare un dato: array paralleli - Record e strutture - Ricerca lineare - Esempio: il programma PROVINCE - Ricerca binaria - Esempio: il programma SMISTA - Indici - Esempio: il programma SMISTA2 - Ricorsione - Esempio: il programma FIOCCOLezione E8:
- Stampare grafici: LCOPY - Esempio: il programma STAMPAGR - Il linguaggio PostScript - Comandi del DOS: SHELL - Variabili del DOS: ENVIRON - Programmi suddivisi: RUN,CHAIN,COMMON - Compilare il programma - Intelligenza artificiale - Esempio: il programma LABIRINT - Esempio: il programma IMPARA - Esempio: il programma DRAGOLezione speciale ipertesti (9):
- Ipertesti - File sequenziali indicizzati - Reference guide: POP-BASIC - Automazione del GW-BASIC - I programmi IPER e GENIND - Un ipertesto letterario: ORLANDO - Un ipertesto didattico: RESIST