%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% B A S I C EXP V5.2/G pro Sharp MZ-800 (C) Ing. Perina Petr Brno DNE 12.3.89 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% BASIC EX(TEND OF) P(ASCAL) JE SHORA KOMPATIBILNI S BASICEM V4.0 EX A JE NAVIC ROZSIREN O NASLEDUJICI PRIKAZY. 1) RIDICI PROGRAMOVE STRUKTURY OBDOBNE PASCALU IF-THEN-ELSE S MOZNOSTI DEKLARACE BLOKU (BEG-BEND) A VNORENI ROZHODOVACICH PRIKAZU. REPEAT-UNTIL PRIKAZ CYKLU. WHILE-DO-WEND PRIKAZ CYKLU. PROC JMENO(PAR1,PAR2,..VAR PARN.)...VOLANI PROCEDUR JMENEM A PREDAVANI PARAMETRU. FUNC JMENO(PAR1,PAR2...PARN) .......VOLANI VICERADKOVE FUNKCE JMENEM VCETNE PREDANI PARAMETRU. (FUNKCE MUZE PRACOVAT I SE STRINGOVYMI PROMENNYMI.) ON-GOTO/GOSUB-ELSE 2) NOVE EDICNI FUNKCE AUTO AUTOMATICKE CISLOVANI RADKU. SEEK VYHLEDANI CASTI TEXTU PROGRAMU A PRECHOD DO EDITORU. @ MOZNOST EDICE PO CHYBE NEBO OPRAVE BEZ ZADANI CISLA RADKU. RENUM PRECISLOVANI PROGAMOVYCH RADEK A ODKAZU NA NE V PRIKAZECH (GOTO, THEN...). DELETE ZRUSENI CASTI PROGRAMU. 1-64999 JE MAXIMALNI POCET RADKU. GENEROVANI KLICOVYCH SLOV KLAVESOU "->" A PISMENEM (A-Z). 3) MODUL PRO RIZENI PRERUSENI INTRP ZADANI POCATECNICH PARAMETRU PRO RIZENI. INTRP ON POVOLENI PRERUSENI. INTRP OFF ZAKAZANI PRERUSENI. 4) DALSI ROZSIRENI USING PRIKAZ PRINT JE ROZSIREN O MOZNOST RIZENI FORMATU VYSTUPNICH DAT. DEG ON/OFF PREPINANI MEZI RADIANY A DEGREE. TR STEP TRASOVANI PO KROCICH. SAVEB/LOADB UKLADANI A CTENI BINARNIHO KODU PROGRAMU. SAVEP/LOADP UKLADANI A CTENI BINARNIHO SOUBORU TYPU PRIVAT, KTERY NELZE VYPSAT ANI ZOBRAZIT. SAVE "JMENO" MOZNOST ZADANI JMENA V PROGRAMU. CLEAR JAKO DRUHY PARAMETR MUZE BYT POCET BYTE PRO REZERVOVANI PAMETI. CALL/USR MOHOU PRENASET DVA 16-TI BITOVE PARAMETRY. RESERVOVANA SLOVA (BASIC EXP V5.0): ----------------------------------- ABS AND ASC ATN AUTO BEEP BEG BEND BYE CALL CHR$ CLEAR CLOSE CLS CODE CONT COS CURS DATA DEF DEG DELETE DIM DO ELSE END ENDF ENDP END EXP FILL FIND FN FOR FRE FUNC GET GOSUB GOTO HEX IF INKEY INP INPUT INT INTRP LEFT$ LEN LET LIST LLIST LOAD LOADB LOG MID$ EOF NEW NEXT NOT ON OPEN OR OUT PEEK POKE POS PRINT PROC PTR PUT READ REM REPEAT RENUM RESTORE RETURN RIGHT$ RND RUN SAVE SAVEB SAVEP SEEK SGN SIN SPC SQR STEP STOP STR$ TAB TAN THEN TO TRON TROFF TRSTEP UNTIL USING USR VAL VAR WND WAIT WEND WHILE XOR ! @ + - / * ^ = & # ( ) < > . GRAFICKE PRIKAZY (BASIC EXP V5.0/G): ------------------------------------ AXES COLOR CLSG DRAW FILL GETP DEF CODE DEF FILL GETX GETY LABEL MOVE PLOT SCALE DRAW INPUT ********************************************************************** ARITMETICKE OPERATORY: ---------------------- + ..... PLUS,SECITANI - ..... MINUS,ODECITANI * ..... KRAT,NASOBENI / ..... LOMENO,DELENI ^ ..... UMOCNENO ( ) ..... ZAVORKY RELACNI OPERATORY: ------------------ > .... VETSI < .... MENSI = .... SHODNY >= .... VETSI NEBO SHODNY =< .... SHODNY NEBO MENSI <> .... NESHODNY LOGICKE OPERATORY: ------------------ NOT ... LOGICKA INVERZE,NEGACE OR ... LOGICKY SOUCET AND ... LOGICKY SOUCIN XOR ... LOGICKA NEEKVIVALENCE POZNAMKA: --------- V DALSIM POPISU BUDOU POUZITY K DEFINOVANI TYPU PROMENNYCH, VYRAZU A CISEL RADKU SYMBOLY, KTERE NEMAJI VZTAH K JAZYKU "BASIC" A SLOUZI JEN KE ZKRACENI POPISU. JEDNA SE O SYMBOLY: A ... CISELNA KONSTANTA, CISELNA PROMENNA NEBO ARITMETICKY VYRAZ. POUZITELNY CISELNY ROZSAH: 1.70141E+38 <-> 1E-38 0 -1E-38 <-> -1.70141E+38 S$ .. STRING (STRINGOVA KONSTANTA), RETEZCOVA PROMENNA NEBO RETEZCOVY VYRAZ. DELKU STRINGOVYCH PROMENNYCH NENI NUTNO DIMENSOVAT, NASTAVUJI SE DYNAMICKY, JE POUZE NUTNO DEFINOVAT CELKOVY PAMETOVY PROSTOR PRO RETEZCOVE PROMENNE POVELEM "CLEAR N" (N ... POCET BYTE). NENI MOZNO SPOJOVAT RETEZCE, JEJICH VYSLEDNA DELKA BY BYLA VETSI NEZ POCET ZNAKU RESERVOVANYCH POVELEM "CLEAR". L ... LOG. KONSTANTA, LOG. PROMENNA, RELACE NEBO LOGICKY VYRAZ. LOG. KONSTANTA ... 0, -1 LOG. PROMENNA .... PROMENNA, NABYVAJICI HODNOT 0 NEBO -1 (NOT 0) RELACE ........... A=B DAT(I)>=C ALFA<>BETA A(I,J)<10 LOG. VYRAZ ....... A=B OR C=D ALFA30 THEN GOSUB PRENOS ELSE GOSUB KONEC : : 1000 PROC PRENOS ! DEKLARACE JMENA PODPROGRAMU 1010 A=1 ! TELO PODPROGRAMU : 1130 RETURN ! POVINNE UKONCENI - NAVRAT PR/ POUZITI VAR T.J. PREDANI VYSLEDKU Z PROCEDURY ZPET : 10 PROC AB(X,VAR Y) 20 Y=Y+X 30 ENDP 50 A=1:GOSUB AB(1,A) : PO PROVEDENI PROCEDURY BUDE A=2..!! (VAR ... PUSOBI ZPETNE DOSAZENI DO PROMENNE.) PRIKAZY PRO VETVENI PROGRAMU ============================ GOTO N ........ SKOK DO JINE CASTI PROGRAMU. PROMENNA JAKO CISLO RADKU NENI POVOLENA. PR/ GOTO 1000 IF L THEN PRIKAZ PODMINENY PRIKAZ. PRIKAZ SE PROVEDE POUZE PRI SPLNENI PODMINKY L. IF L GOTO N ... PODMINENY SKOK NA CISLO RADKU N. IF L THEN N ... TOTEZ IF L THEN PRIKAZ1 : PRIKAZ2 : PRIKAZ3 PODMINENE PROVEDENI C E L E H O Z B Y T K U RADKU (JESTLIZE JE SPLNENA PODMINKA L). PR/ IF X>Y THEN A=4*B IF A=B THEN PRINT D : A=A+3 : GOTO 200 IF L THEN PRIKAZ1 ELSE PRIKAZ2 UPLNY PODMINENY PRIKAZ. PRI SPLNENI PODMINKY L SE PROVEDE PRIKAZ1, V OPACNEM PRIPADE PRIKAZ2. PR/ IF A=B THEN A=1:PRINT "OK" ELSE A=0:PRINT "BAD" BASIC V5.0 BYL DOPLNEN DVEMA PRIKAZY BEG A BEND, KTERE VYMEZUJI VICERADKOVY BLOK PRIKAZU. NA TENTO BLOK LZE POHLIZET JAKO NA JEDEN PRIKAZ. TO UMOZNUJE BASICU EXP VNOROVAT PODMINENE PRIKAZY DO SEBE. VYCHAZELO SE Z PASCALOVSKYCH STRUKTUR BLOKU, KDE BLOK JE DEFINOVAN PRIKAZEM BEGIN A UKONCEN PRIKAZEM END. BEG ........... ZACATEK BLOKU PRIKAZU. HLAVNI POUZITI V PRIKAZECH TYPU IF/THEN/ELSE. BEND .......... KONEC BLOKU PRIKAZU. JEDNOTLIVE PODMINKY LZE VNOROVAT VIZ: PR/ 10 ! UKAZKY STRUKTUR IF/THEN/ELSE 20 A=1:B=1:C=1 30 IF A=B THEN PRINT"A,B .. SHODNE" 35 ELSE PRINT"A,B .. RUZNE" 40 IF A=C THEN 50 BEG 60 !...PROGRAMOVY BLOK (+) 70 PRINT"A=C" 80 BEND 90 ELSE 100 BEG 110 !...PROGRAMOVY BLOK (-) 120 PRINT"A<>C" 130 IF A=B THEN 140 BEG 150 !...VNORENA PODMINKA 160 PRINT"A<>C A A=B" 170 BEND 180 BEND 190 IF A=0 THEN PRINT A ELSE 200 BEG 210 PRINT B 220 ! JINY TVAR ZAPISU 230 BEND 240 IF C=A THEN BEG PRINT A:A=B*C/2:BEND ELSE PRINT C PREPINACE --------- PREPINACE UMOZNUJI VETVENI PROGRAMU NA ZAKLADE HODNOTY PROMENNE. JE-LI HODNOTA PROMENNE "A" ROVNA 1 PROVEDE SE SKOK NA PRIKAZOVY RADEK N1, PRO A=2 NA N2 ATD. V PREPINACICH LZE POUZIT PRIKAZU ELSE PRO VSECHNY OSTATNI HODNOTY PREPINACE, KTERE NEJSOU UVEDENY V SEZNAMU, JINAK SE PROVEDE NASLEDUJICI PRIKAZOVY RADEK. PREPINAC MUZE BYT PRO SKOKY NEBO PRO VOLANI PODPROGRAMU. ON A GOTO N1,N2,N3, ... ,NN VETVENI PODLE HODNOTY VYRAZU ON A GOSUB N1,N2,N3, ... ,NN VYVOLANI SUBRUTINY DLE HODNOTY VYRAZU. JE MOZNE POUZIT I ELSE. PRO ON/GOSUB JE MOZNO VYUZIT VOLANI PODPROGRAMU JMENEM. PR/ ON X-2 GOTO 1010,1050,1200 ON X GOSUB 2000,2010,2020 ON X GOSUB 111,222,333 ELSE 500 ON X GOSUB ALPHA,BETA,GAMA ELSE EMPTY POZNAMKA: PRO PRIKAZ RENUM POUZIVEJTE POUZE CISLA RADKU NEBO JMENA PROCEDUR V PRIKAZU ON .., NE SMISENY ZAPIS! CYKLY ===== BASIC EXP MA TRI TYPY CYKLU: A) FOR-TO-STEP --NEXT CYKL S NASTAVENYM POCTEM OPAKOVANI B) WHILE-DO --WEND CYKL POKUD JE SPLNENA PODNIMKA C) REPEAT --UNTIL CYKL POKUD NENI SPLNENA PODMINKA CYKLY TYPU B,C JSOU PREVZATY Z JAZYKA PASCAL A UMOZNUJI V BASICU POUZIVAT ZAKLADU STRUKTUROVANEHO PROGRAMOVANI. FOR P=A1 TO A2 PROGRAMOVA SMYCKA, KROK PO 1. FOR P=A1 TO A2 STEP A3 PROGRAMOVA SMYCKA S KROKEM A3. NEXT P ........ KONEC SMYCKY, NAZEV PROMENNE N E N I POVINNY! NEXT SEZNAM ... KONEC DVOU A VICE SMYCEK. PR/ 70 FOR B=10 TO -2 STEP -1 72 PRINT B 74 FOR A=2*X TO M(I) 76 PRINT A; 78 NEXT A 80 PRINT 82 NEXT B WHILE ......... PROGRAMOVA SMYCKA TYPU WHILE (VIZ PASCAL). DO ............ ZACATEK PRIKAZU WHILE. WEND........... UKONCENI PRIKAZU WHILE. PRIKAZ WHILE SE PROVADI DOKUD JE SPLNENA PODMINKA. JE UKONCEN PRIKAZEM WEND. PR/ 10 A=0 12 WHILE A<3 DO 14 B=0:PRINTA:...... 16 WHILE B<2 DO 18 B=B+1:A=A+1:PRINT B:..... 20 WEND !KONEC B 22 PRINT:..... 24 WEND !KONEC A REPEAT ........ PROGRAMOVA SMYCKA TYPU REPEAT (VIZ PASCAL). UNTIL ......... PRIKAZ PRO VYHODNOCENI PODMINKY CYKLU. PRIKAZ SE PROVADI DOKUD NENI SPLNENA PODMINKA. PR/ 10 A=0 12 REPEAT 14 B=0 16 REPEAT 18 A=A+1:B=B+1:...... 20 . 22 . 24 UNTIL B=2 26 UNTIL A>2 UKAZKA VZAJEMNEHO VNORENI PROGRAMOVYCH STRUKTUR PR/ 10 ! UKAZKA STRUKTUR WHILE...WEND, REPEAT...UNTIL 20 A=1 30 WHILE A<3 DO 40 B=1 50 REPEAT 60 PRINT"A=";A;"B=";B 70 B=B+1 !..... PROGRAMOVY BLOK 80 C=1 85 IF C=B THEN PRINT "SHODA B,A" 90 WHILE C<2 DO 100 PRINT"C=";C 110 C=C+A !......PROGRAMOVY BLOK 111 IF A=1 THEN 112 BEG 113 GOSUB 1000 !.... 114 GOSUB 1200 115 BEND 116 ELSE !MOZNO ZAPSAT TEZ: ELSE GOSUB 1200 117 BEG !NE VSAK: ELSE !NA DVA RADKY, 118 GOSUB 1200 ! GOSUB 1200 !ALE BEZ BEG A BEND 119 BEND 120 WEND 130 PRINT 140 UNTIL B=3 150 A=A+1 160 WEND OPERACE VSTUPU ============== VSTUP Z PAMETI -------------- READ SEZNAM ... PRIDELUJE HODNOTY ZE SEZNAMU 'DATA' SEZNAMU PROMENNYCH. PR/ READ A(1),A(2),A(3),X,B$ READ ALFA,BETA READ Z$ DATA .......... SEZNAM HODNOT PRO 'READ'. PR/ DATA 10,20,30,3.15,"KONEC" DATA 3.5E-3,7.1E-3 DATA "JMENO" RESTORE ....... NAVRAT UKAZATELE V SEZNAMU 'DATA' NA ZACATEK. RESTORE N ..... -"- NA RADEK N (ROZSIRENI). VSTUP SOUBORU ------------- INPUT SEZNAM .. HODNOTY NEBO STRINGY Z KONZOLY SE PRIDELI PROMENNYM. INPUT "TEXT";SEZNAM TOTEZ JAKO PREDCHOZI, NAVIC SE VYPISE 'TEXT'. INPUT #R SEZNAM CTENI Z :RI:(MAGNETOFONU) MISTO :CI:(KONZOLY). NEPROVADI SE ECHO NA :CO:(OBRAZOVKU). PR/ INPUT A INPUT ALFA,BETA,GAMA INPUT Z$,K(I),X INPUT "NAPIS JMENO";JM$ INPUT #R A$,B$,X INPUT "TEXT1";A,"TEXT2",B,"TEXT3";C V PRIKAZU INPUT MUZE BYT VICE NAPOVEDNYCH TEXTU ZA ZNAKEM " MUZE BYT I (,), POTOM SE NAPOVEDNY TEXT ODSUNE JAKO BY BYL V PRIKAZU PRINT. INKEY ......... PREDA HODNOTU (DECIMAL) POSLEDNI STISKLE KLAVESY BEHEM PROVADENI PROGRAMU, NENI-LI STISKNUTA ZADNA KLAVESA, POTOM JE FUNKCE=0. PR/ 12 IF INKEY > 0 THEN 100 OPERACE VYSTUPU ===============