esempi di basic

ESEMPI IN LINGUAGGIO BASIC (PAGINA 2/2)

La mia prima esperienza

Quando ero bambino, e mi riferisco agli anni ottanta, in tutti i film dove in alcune sequenze si faceva uso di un computer, bastava chiedergli qualsiasi cosa e la macchina, come per magia, rispondeva sempre con una risposta precisa e sensata. O che rispondesse a monitor o addirittura con una voce "robotica", non c'era domanda alla quale il computer non potesse rispondere. WOW... Voglio un computer anche io!!!

La mia fantasia correva. Con un computer in casa posso avere un vero e proprio "amico virtuale". Posso dialogarci, fargli domande... (giocarci :D ). Dovevo averlo!!

Un bel giorno presi la decisione ed utilizzai tutti i soldi che avevo messo da parte per comprarmi "il computer" un bel Commodore 64!! E così feci. Tornato a casa fiero, orgoglioso e felice, lo collegai subito alla mia TV nella cameretta ed in pochi secondi trovai il canale di riferimento. Lo accesi... ci siamo! Finalmente!! Che emozione!!! (e chi se la scorda anche a distanza di decenni). Il cursore lampeggiava aspettando un mio comando. La prima riga che scrissi fu: ciao come ti chiami? E la sua risposta fu la seguente: ?syntax error.

Non era esattamente la risposta che mi aspettassi dal computer. Provai a digitare: come stai? Stessa risposta: ?syntax error. Con grandissima delusione constatai che qualsiasi fosse la mia domanda il computer dava sempre la stessa.. odiosa risposta: ?syntax error. Eppure nei film non era cosi. Il computer sa tutto. il computer risponde sempre. Il computer parla, perché con me non parla?

Altri amici avevano il Commodore 64 e tutti lo usavano per giocarci. Anche io naturalmente, e come tutti sapevo usare solo e sempre lo stesso comando per caricare il gioco da cassetta: LOAD. Ma un giorno un amico mi regalò una piccola rivista (se ne trovavano tantissime nelle edicole) dove venivano spiegati i concetti del linguaggio BASIC , il linguaggio di programmazione dei computer dell'epoca. Bene, fu l'inizio di tutto. Capii che nessuna macchina è in grado di darti risposte se prima non viene "programmata". Nessuna macchina è "intelligente". E nei film questo non era menzionato.

Ma io volevo sempre e solo la stessa cosa. Un computer che rispondesse in modo sensato alle mie domande!! Dopo aver compreso alcune regole "basiche" di programmazione era il momento di ottenere quello che ho sempre voluto. E quindi cominciai a scrivere il mio primo programmino, quello che vi riporto sotto:

10 PRINT " BENVENUTO "
20 PRINT " DIGITA LA TUA DOMANDA "
30 PRINT
40 INPUT " ";A$
50 IF A$="COME TI CHIAMI" THEN PRINT "COMMODORE 64"
60 IF A$="COME STAI" THEN PRINT "BENE GRAZIE"
70 GOTO 20
80 END

Adesso vediamo se alla domanda: "come ti chiami" il computer mi risponde con un odioso "?syntax error" o con "Commodore 64" cioè la risposta che volevo avere. E vediamo se chiedendo "come stai" cosa mi risponde. In effetti la risposta la conoscevo: "bene grazie".

ANALIZZIAMO ADESSO OGNI SINGOLO ELEMENTO

Con il programma impostato nel modo di cui sopra, dopo ogni risposta il computer mi riporta sempre al punto dove posso fare altre domande, grazie alla riga "70 GOTO 20" dove si dice al programma che finita l'esecuzione il programma riparte dalla riga 20.

Da notare come nella riga 40 il comando INPUT sia seguito da una coppia di virgolette fra le quali uno spazio "vuoto". Quello spazio che sta a significare la riga di domanda che verrà digitata durante l'esecuzione del programma. Domanda che naturalmente in fase di programmazione non posso sapere. Questa domanda verrà memorizzata nella "variabile": A$. Possiamo nominare la variabile con qualsiasi lettera dopo il simbolo "$" (A$, B$, C$... Z$) cosi che un programma possa contenere un numero multiplo di variabili nella stringa.

La riga 30 serve solo a dire al programma che durante l'esecuzione quello spazio deve rimanere vuoto (nessuna informazione dopo il PRINT), cosi da ottenere uno spazio di stacco. La riga 50 è la "logica" del programma (IF): "se" la "domanda" è uguale a "domanda digitata" allora (THEN) scrivi (PRINT) la seguente "risposta abbinata" (fra le virgolette in quanto costante di stringa).

Avevo realizzato la "chiave", la base, il punto di partenza. Potevo a quel punto immettere nel programma infinite risposte ad infinite domande, fino ad ottenere un risultato il più possibile completo. Più erano le risposte alle domande e più il programma sarebbe risultato veritiero, in pratica una specie di "amico virtuale basico". Se poi a determinate domande si assegna un "comando" ecco che da semplice amico virtuale il programma diventa un "assistente virtuale", un po come quelli ai quali oggi siamo abituati.

Se ad esempio vogliamo rendere la grafica un po' più professionale (simile al DOS) e accentuare il titolo del programma aggiungiamo le seguenti due righe all'inizio del codice:

10 POKE 53280,0
15 POKE 53281,0

Il significato di questi due codici e come modificare i colori a vostro piacimento lo spiego nella prima pagina dedicata al LINGUAGGIO BASIC.

Nell'immagine a sinistra la pagina di programmazione e a destra il risultato grafico a programma avviato:

PALLINA RIMBALZANTE

Quello che segue è un semplice programma di animazione che come scopo ha quello di visualizzare nello schermo una pallina rimbalzante, che si muoverà da sinistra verso destra per poi tornare indietro. Il comando REM è semplicemente un commento di cosa andrà ad eseguire il programma, mentre i due punti ":" servono per separare un'istruzione dall'altra. Gli spazzi sono sempre necessari. All'interno delle graffe viene riportato come ottenere il simbolo da inserire nel programma, ad esempio dove trovate questo {CRSR LEFT} significa che dovete tenere premuto il tasto SHIFT e contemporaneamente premere il tasto per spostare il cursore verso sinistra.

10 REM PALLA RIMBALZANTE
20 PRINT "{CLR/HOME}"
30 FOR X=1 to 10: PRINT "{CRSR DOWN}": NEXT
40 FOR BL=1 to 40
50 PRINT" O{CRSR LEFT}";: REM (O è uno SHIFT-Q)
60 FOR TM=1 TO 5
70 NEXT TM
80 NEXT BL
90 REM MOVE BALL RIGHT TO LEFT
100 FOR BL=40 TO 1 STEP -1
110 PRINT" {CRSR LEFT}{CRSR LEFT}O{CRSR LEFT}";
120 FOR TM=1 TO 5
130 NEXT TM
140 NEXT BL
150 GOTO 20
160 END

ESEMPIO PER FAR ESEGUIRE UN SUONO

Fare eseguire un suono può essere utile per testare il funzionamento del chip audio in assenza di un lettore di dati (datassette o floppy drive) o di un qualsiasi gioco o programma. Nel caso del Commodore 64 la versione BASIC è la V2, pertanto per fare eseguire un semplice suono è necessario scrivere un piccolo programma come il seguente:

5 FOR L = 54272 TO 54296 : POKE L,0 : NEXT
10 POKE 54296,15
20 POKE 54277,190
30 POKE 54278,248
40 POKE 54273,17 : POKE 54272,37
50 POKE 54276,17
60 FOR T = 1 TO 250 : NEXT
70 POKE 54276,16

Se invece stiamo utilizzando una versione BASIC più evoluta come il BASIC V7.0 di Microsoft del Commodore 128 per fare un esempio, o la versione MSX BASIC 1.0 dell' MSX 1 (per citare un altro esempio), il comando per fare eseguire un suono o una specifica nota musicale è molto più semplice:

PLAY "D"

In questo caso verrà eseguita una nota corrispondente al tasto "D", ma possiamo far eseguire una sequenza di note semplicemente digitando lo stesso comando "PLAY" seguito da più note:

PLAY "CDEFGA"

BASIC, torna alla PAGINA 1/2.

HomePage | passionecommodore.it | Privacy Policy | Cookie Policy