Programmazione Facile in Basic AMIGA MAGAZINE ........e ............................e........... ....................e Gianni Biagini D urante l'ultimo articolo di Programmazione Facile in Basic, abbiamo fatto una breve carrellata degli aspetti positivi e negativi del BASIC in generale, abbiamo notato come fosse potente per I'interattività che garantiva all'operatore, principalmente per la sua caratteristica di linguaggio interpretato. Purtroppo per noi il BASIC, dicevamo, si rivela debolissimo nella gestione di strutture dati astratte. Chiarifichiamo con un semplice esempio: tutti sappiamo che un vettore è un gruppo di elementi omogenei e contigui indirizzabili attraverso un indice (la definizione data è molto pratica, sarebbe meglio dire che un vettore è una n-upla di elementi linearmente indipendenti appartenenti ad un unico n-spazio), sappiamo anche che un anno può essere identificato come un vettore di 12 mesi. Qui dobbiamo notare una prima carenza del BA- SIC, non esiste il tipo di dato mesi e non è nemmeno possibile definirlo, possiamo al massimo simularlo come un numero o una stringa, ma niente di più. In Pascal (il linguaggio strutturato per eccellenza) i tipi possono essere strutturati in maniera complessa, è possibile creare un array di mesi, dopo aver specificato che mesi è a sua volta un array di 31 giorni. La cosa non deve spaventare, alla fine ci si troverà comunque a gestire stringhe o numeri, ma se abbiamo a che fare, per esempio, con uno scadenziario e dobbiamo tenere conto, giorno per giorno, degli appuntamenti registrati, il tipo di dato fondamentale sarà chiaramente una stringa. Prendiamo in esame una situazione leggermente più complicata, non abbiamo più a Vettori e strutture che fare con una agenda ma con un libro delle spese giornaliere e, natu- ralmente, delle causali relative. Il giorno 25 del mese di Febbraio ho acquistato due litri di latte e ho speso 3000 lire, i dati relativi al gior- no 25 del vettore mese sono due, uno di tipo stringa e uno di tipo numerico. Il BASIC, a questo punto, non riesce più a gestire una situazio- ne del genere, in Pascal (o comun- que in C) basta definire il vettore anno come array di 12 mesi, defini- re i mesi come array di 31 giorni e i giorni come record composto da un campo numerico e uno stringa. La cosa, diciamocelo, rappresenta una grossa comodità, anche se può comunque essere simulata con un semplicissimo accorgimento, basta definire due vettori, uno di tipo strin- ga e uno di tipo numerico e puntare ad ambo gli elementi utilizzando lo stesso indice. Per simulare tutto l'anno, però, la tecnica appena vista risulta molto scomoda e impratica- bile, abbiamo bisogno di una matrice. Le matrici sono gestite dal BASIC? Sì, e in maniera molto sem- plice e intuitiva, è sufficiente dimen- sionare un vettore bidimensionale e il gioco è fatto. Esiste una funzione BASIC che si occupa proprio della generazione di vettori, il suo nome è DIM: non fa altro che definire un vettore di 100 elementi dello stesso tipo (in questo caso numerici) divisi in dieci gruppi di dieci elementi. Creare un anno a questo punto equivale a creare dodici gruppi (tanti quanti sono i mesi) di 31 ele- menti (tanti quanti sono i giorni). Per poter associare ad ogni giorno un commento bisogna che il vettore sia di tipo stringa, in questo caso il vettore di prima deve essere speci- ficato così: Per stampare il commento relativo al 25 dicembre (nel quale, probabil- mente sarà contenuta la voce Nata- le) basterà dire al computer: Avevamo detto prima che si poteva simulare il record commento-costo attraverso due matrici di tipo nume- rico e stringa, vediamo come visua- lizzare spesa e causale di spesa del giorno 12 maggio. PRINT "I1 giorno ";GIORNO;MESE;"hai speso ";ANNO (MESE, GIORNO) ; " per ";ANNO$ (MESE, GIORNO) Naturalmente, la variabile GIORNO contiene il giorno della data da de- terminare, mentre la variabile MESE contiene il numero relativo al mese. Sempre più difficile, vediamo come stampare tutte le causali di spesa relative al mese di Maggio. 'Vogliamo fare riferimento al mese di Maggio 'Scorriamo tutto l'elenco del giorno relatlvi a magglo FOR GIORNO=l to 31 (segue a pag. 79)
E I SUOI, BEST SELLER