' Rapid-Q by William Yu (c)1999-2000 . ' ================================================================================ ' Upload_il_tuo_script_su_Rapidq.it ' Come_funziona_la_console_ Oggigiorno che esistono i sistemi operativi grafici (visivi), il termine CONSOLE si riferisce ad uno schermo in modalità solo testo fatto da 25 linee e da 80 colonne che fa sentire chiunque i tempi dei primi giorni del vecchio DOS. Sebbene i moderni linguaggi visuali sembrano essere molto evoluti rispetto a quelli del DOS, la console sembra un miglior target per alcuni tipi di programmi. Mentre perdiamo tempo con finestre, tabelle e grafica sarebbe molto più significativo un messaggio di output semplice quale questo "523 records processati con successo" , non trovate? Fortunatamente, , Rapid-Q permette un facile accesso alla console e questo sembra essere il modo perfetto per introdurre un programmatore principiante al linguaggio BASIC. Molti programmatori principianti tentano di iniziare con un linguaggio visuale, e molti programmatori veterani tentano di saltare dal DOS al mondo visuale di windows,perchè attratti dallo stile "drag and drop" di scrivere le applicazioni (RAD) e diventano frustati quando si sentono incapaci a creare un vero programma con codice sorgente. Secondo me, questo è il miglior argomento per prendere tempo per scrivere alcuni programmi che danno un output solo sulla console. In Rapid-Q, la console non è solo uno schermo in bianco e nero di solo testo, ma l'insieme di 8 schermi con cui lavorare e con la possibilità di impiegare diversi colori per il testo. Gli 8 schermi disponibili sono formati dallo schermo 0 che è quello visibile all'utente per tutto il tempo, e gli schermi da 1 a 7 che sono schermi virtuali presenti in memoria (schermi bufer). Gli schermi buffer possono essere usati per scriverci ogni volta che vogliamo senza essere prima mostrati e poi una intera pagina di testo può essere copiata sullo schermo visibile con una sola operazione. PRINT PRINT è una istruzione per statement che manda dati in outputs allo standard output device (normalmente il video). La sintassi di PRINT è la seguente: PRINT [ #pagina, ] [ dati ] [ ;|, ] Se noti nella struttura della sintassi di PRINT, le parentesi quadre [ ] denotano un valore opzionale. Questo significa che solo la parte della istruzione PRINT che deve essere sempre presente è la sola istruzione PRINT. L'item #pagina si riferisce alla pagina di testo presente in uno degli schermi buffer. Il valore di default per PRINT è la pagina #0 che è lo schermo visibile, quindi se si omette #pagina viene scritto direttamente sullo schermo visibile. L'item dati si riferisce a qualsiasi informazione che viene mostrata dall'istruzione PRINT come una parola o come un numero. L'item finale sono il punto e virgola e la virgola, sono intercambiabili, e sopprimono il ritorno a capo. La ; o , possono anche essere usate per mettere insieme diversi dati multipli senza la necessità di usare multiple istruzioni PRINT Esempi: PRINT scrive una linea bianca sullo schermo visibile. PRINT "Hello"scriveHello allo schermo visibile, che equivale all'istruzionePRINT #0, "Hello" PRINT #3, "Hello" scrive la parola Hello al terzo schermo virtuale ,e questo non mostra il risultato sullo schermo visibile. PRINT "ABCDEFG"; seguito da: PRINT "hijklmnop" scrive la lineaABCDEFGhijklmnop sullo schermo visibile. PRINT "The year is "; 2000; " A.D." scrive la lineaThe year is 2000 A.D. sullo schermo visibile COLOR L'istruzione COLOR è usata per cambiare lo sfondo (background dello schermo) ed il colore di primo piano del testo o attributo di colore del testo mostrato sulla console. L'istruzione COLOR agisce solo sugli attributi dell'istruzione PRINT che la segue, e non sulle impostazioni dell'intero schermo. La sintassi dell'istruzione COLOR è la seguente: COLOR [colore di primo piano][, colore dello sfondo] Il colore di primo piano e quello dello sfondo possono essere variabili, costanti, o assegnamenti diretti seguendo i valori degli attributi sottoelencati: 0 = black 4 = red 8 = grey 12 = light red 1 = blue 5 = magenta 9 = light blue 13 = light magenta 2 = green 6 = brown 10 = light green 14 = yellow 3 = cyan 7 = white 11 = light cyan 15 = bright white Se sia gli elementi di primo piano sia di sfondo non sono messi nell'istruzione COLOR, essa non cambia i precendenti valori mentre modifica solo quelli degli elementi passati all'istruzione. Esempi: COLOR 7, 0 sono attribuiti per default alla console il testo bianco su schermo nero COLOR 4, 1cambia i colori ponendo il testo rosso e lo sfondo blu. COLOR 14 cambia solo il colore del testo a giallo, lascia l'attuale colore dello sfondo. COLOR ,2 cambia solo lo sfondo a verde, lasciando il testo al colore attuale. CLS CLS è una istruzione della console che pulisce lo schermo visibile della console. Molto utile se hai bisogno di eliminare il vecchio schermo disegnato prima di iniziare a scrivere il nuovo schermo. La sintassi della istruzione CLS è: CLS Essa è molto concisa, non richiede alcun parametro, e la sua azione è cancellare completamente lo schermo visibile. Esempio: CLSdove vanno a finire tutte le cose scritte? INPUT INPUT è una istruzione di console che legge una linea completa di informazioni dall'utente. Questa informazione è immessa mediante la tastiera dall'utente, e continua a riempire l'istruzinone INPUT fino a che non viene premuto il tasto Enter/ invio. La sintassi della istruzione INPUT è la seguente: INPUT variabile Il solo valore preso dalla istruzione input è una variabile per conservare l'informazione immessa. Questa variabile può essere sia una stringa (un insieme di caratteri) sia un numero (solo cifre). Esempi: INPUT Name$ aspetta che l'utente immetta dei dati e poi prema enter/invio, immagazzina i dati nella variabile Name$ come una stringa di caratteri. INPUT Payment# aspetta che l'utente digiti dei dati e preaenter/invio, immagazzina dei dati nella variabile Payment# come un numero a doppia precisione ( double ). Nota: INPUT per una variabile stringa immetterà ogni cosa che viene digidato nella variabile fino a quando non viene premuto il tasto Enter/Invio. INPUT per una variabile numerica dipende dall'esatta informazione numerica immessa dall'utente. Ciò significa che la linea di istruzioni: INPUT Payment# prenderà i dati immessi dall'utente as es. 1234.55 e li immagazzinerà nella variabile Payment# come1234.550000 che è corretto, ma se venisse immesso il numero 1,234.55 la istruzione immagazzina la cifra 1 lasciando perdere tutto quello che viene dopo la virgola (decimale). Inoltre similtemnte l'input , 123 Sesame Street sarà immagazzinato come 123, mentre 123 456 789 sarà immagazzinato come 123456789. La parola definitiva su INPUT è per incorporare un doppio controllo delle variabili numeriche immesse per creare programmi più sensibili. INKEY$ INKEY$ è una istruzione console che legge lo standard input (normalmente il buffer della tastiera) e ritorna qualsiasi carattere che potrebbe essere contenuto in esso. Diversamente dalla istruzione INPUT, INKEY$ non aspetta che il tasto venga premuto, se non c'è nessun carattere in attesa di essere processato nel buffer tastiera, la istruzione ritorna una stringa vuota (""). Sotto Windows, INKEY$ attualmente non intrappola i tasti estesi(le frecce cursore , i tasti funzione F1 - F12, Home, End, ecc.) La sintassi dell'istruzione INKEY$ è la seguente: variabile$ = INKEY$ La variabile (di tipo stringa) prende come valore il carattere ritornato dalla istruzione INKEY$ . Esempio: KeyPress$ = INKEY$ KeyPress$ ora contiene il prossimo carattere disponibile dal buffer della tastiera, sia "A", "b", "1", "@", o "" se non c'è nessun carattere nel buffer tastiera. CSRLIN e POS Le due istruzioni CSRLIN e POS sono messe insieme perchè sono strettamente correlate. CSRLIN ritorna la posizione vertivale della linea corrente di testo dello schermo (riga) su cui è il cursore, mentre POS ritorna la posizione orizzontale del cursore su quale linea dello schermo (colonna) si trova. Insieme CSRLIN e POS forniscono l'esatta posizione, come riga e colonna, del cursore sullo schermo della console . La sintassi dell'istruzione CRSLIN è la seguente: variabile% = CRSLIN La sintassi della istruzione POS è la seguente: variabile% = POS(0) Notare: la sintassi della istruzione POS è una di quelle dei primi BASICs dove POS richiedeva una espressione da passargli. Non preoccuparti troppo di (zero) solo includilo come parte del nome della istruzione. Esempi: CurrentRow% = CSRLIN ritornerà la riga di schermo sulla quale il cursore attualmente sta lampeggiando. CurrentColumn% = POS(0) ritornerò la colonna dello schermo sulla quale attualmente il cursore sta lampeggiando. LOCATE La istruzione LOCATE viene usata per spostare il cursore ad una specifica posizione sullo schermo della console. Sotto Windows l'intervallo di valori validi per LOCATE sarebbe 1 - 25 per le righe e 1 - 80 per le colonne. La successiva istruzione PRINT sarà visibile alla riga e alla colonna indicate dall'istruzione LOCATE. La sintassi dell'istruzione LOCATE è la seguente: LOCATE [riga][, colonna] Esempi: LOCATE 12, 40 posiziona il cursore al centro dello schermo della console. LOCATE 1 posiziona il cursore alla prima riga dello schermo della console conservando la posizione della colonna. LOCATE ,27 posiziona il cursore alla colonna 27 senza cambiare la riga. SLEEP La istruzinone SLEEP viene usata per sospendere l'esecuzione del tuo programma per uno specifico periodo di tempo. Durante questo tempo il programma non eseguirà alcuna operazione. SLEEP determina un completo arresto del flusso del programma fino a quando il periodo di tempo non si esaurisce. La sintassi di SLEEP è la seguente: SLEEP tempo_di_stop L'elemento tempo_di_stop viene misurato in secondi e frazioni di secondi. Esempi: SLEEP 1 fermerà il programma per 1 secondo SLEEP 4.25 fermerà il programma per 4 secondi ed 1/4 di secondo PEEK L'istruzione PEEK viene usata nelle vecchie forme di BASIC come un metodo per avere informazioni da particolari indirizzi di memoria. In Rapid-Q l'istruzione PEEK è limitata agli indirizzi di memoria dello schermo della console e degli schermi buffers. La sintassi di PEEK è la seguente: risultato% = PEEK( [#numero_pagina,] indirizzo_ram) L'indirizzo_ram contiene un carattere ed un attributo che sono l'attuale carattere presente sullo schermo e lo schema colore di primo piano/colore di sfondo. L'informazione del carattere è presente nell'inidirizzo della memoria e gli attributi sull'indirizzo di memoria dispari seguente. Per accere a separati pezzi di informazioni, usare la seguente funzione: Char$ = CHR$(PEEK((Row%-1)*160+(Col%-1)*2)) Attr = PEEK((Row%-1)*160+(Col%-1)*2+1) ForeGround% = Attr AND &HF BackGround% = Attr SHR 4 POKE Similmente a PEEK, pe le vecchie versioni del BASIC la istruzione POKE serve per scrivere l'informazione in un particolare indirizzo di memoria. Come per PEEK, Rapid-Q limita le azioni di POKE allo schermo della console e agli schermi buffers. La sintasi di POKE è: POKE [#numeropagina,] indirizzo_ram, byte Per calcolare l'indirizzo usa tali funzioni: ChAddress = (Row%-1)*160+(Col%-1)*2 AttrAddress = (Row%-1)*160+(Col%-1)*2+1 Attr = (BackGround% SHL 4) OR ForeGround% PCOPY L'istruzione PCOPY viene usata per copiare una pagina schermo della console su di una altra. L'intervallo di pagine disponibili va da 0 a 7, ricordando che la pagina 0 è quella visibile. La sintassi per PCOPY è: PCOPY pagina_da_copiare, pagina_in_cui_copiare Esempi: PCOPY 0, 6 PCOPY 1, 0 Gli esempi di sopra copiano lo schermo visibile ( 0 ) ad uno schermoto buffer ( 6 ), e poi copiano un altro schermo buffer ( 1 ) in quello visibile. ' =============================================================================== ' 2003 Holyguard.net - 2007_Abruzzoweb