A BASIC nyelv, angol nyelvû rövidítésének megfelelõen (Beginners All-purpose Symbolic Instruction Code) a kezdõ felhasználók ideális eszköze a számítógéppel történõ kom- munikációban. Nemcsak egy programozási nyelvet jelent, hanem az operációs rendszert is helyettesíti mûködése alatt, így népszerûségét tovább növelte, hogy a BASIC-re alapozott (többnyire személyi-) számítógépek szabványos kapcsolatot (interface-t) tartanak a külvilággal. Ez korábban egyáltalán nem volt megszokott jelenség, mert legtöbbször minden új számítógép-konstrukció más vezérlõ nyelvvel (Job Control Language) került piacra, ezért a gép kezelését újra kellett tanulni.
A BASIC alapvetõen három feladatot lát el, s ennek megfe- lelõen három üzemmódja van: parancs, szerkesztõ és prog- ramfuttató üzemmódokat különböztethetünk meg. A felhasználó számára a fenti tény nem nyilvánvaló, mert a billentyûzetet egyformán kell kezelni, talán csak a programfuttató üzemmód az, amelyik a többitõl egyértelmûen elhatárolható (külön utasítással /RUN, esetleg GOTO ill. GOSUB/indítandó, s a program befejezéséig/megszakításáig/tart).
Egyébként az elsõ BASIC-ekben csak a begépelt sor értelmezésekor (interpretálásakor) derül ki, hogy a gépnek most parancsot kell-e végrehajtania, vagy a BASIC programot akarjuk szerkeszteni (ha a sor 'egész szám' alakban kezdõdik /ahol _=szóköz/blank/, akkor azt szerkesztendõ programsornak tekinti, egyébként pedig megkísérli a sort parancsként végrehajtani). Érdemes megjegyezni: az egyes üzemmódokban használható utasítások köre változó, pl.: parancs üzemmódban nem írhatunk definíció jellegû utasítást (DATA, DIM, DEF...), és a BASIC program már nem tartalmazhat programszerkesztési (AUTO, DELETE, NEW, RENUM), illetve operációs-rendszer vezérlõ utasításokat (LIST, LLIST, LOAD MERGE, SAVE). A Turbo- ill. a QuickBasic-ben, nem is beszélve a Windows alatt mûködõ VisualBasic-rõl, a szerkesztõ és futtató utasítások menübõl érhetõk el. A beírt programsor nem szükségképpen kezdõdik sorszámmal és nem hajtódik végre azonnal. A különféle szerkesztési szabályokat az egyes fejezetek elején írjuk le.
A többi fejlettebb programozási nyelvhez hasonlóan a BASIC is felmenti a felhasználót a memóriakezelés közvetlen irányításától, ami azt jelenti, hogy ha adatot kívánunk tárolni a számítógép memóriájában, akkor nem szükséges annak tárolási helyét közvetlenül kijelölnünk, hanem elegendõ az adathoz egy nevet hozzárendelnünk egy változónév=adat alakú értékadó utasítás formájában, és az adatra ezután már a változónévvel hivatkozhatunk. Nem kulcsszó nevek elsõ érzékelésekor (szabály: csak betûvel kezdõdhetnek!) a BASIC ezekhez hozzárendeli a szabad memória - ami kezdetben általában 64 Kb hosszú - következõ, a változó típusának megfelelõ hosszú szakaszát, és az így megjelölt területet elzárja más felhasználás elõl. A változó típusát nevének utolsó karaktere írhatja elõ (%: egész típus, !:egyszeres pontosságú valós, #:dupla pontosságú valós, $:karakter- sorozat /string/ típus), de típus hozzárendelés a név elsõ karakteréhez is köthetõ a DEFINT, DEFSNG, DEFDBL, DEFSTR típusdefiniáló utasításokkal. A fentiek hiányában alapértelmezésként a változókhoz az egyszeres pontosságú lebegõpontos típus rendelõdik.
A továbbiakban az egyes változótípusok jellemzõit ismer- tetjük:
Logikai adatot bármely számtípusú változóhoz rendelhetünk!
Esetenként az egyszerû változók használata már nem elégít ki minket (pl. adatsor feldolgozásakor), hanem indokoltnak látszik tömbök bevezetése. A BASIC ilyenek deklarálását (helyfoglalását), használatát is támogatja. Tömbök segítségével közös néven hivatkozhatunk azonos típusú változók egy csoportjára. A tömb egy-egy adatát tömbön belüli helyzete (indexe/i/) alapján azonosíthatjuk. A BASIC általában nem korlátozza a tömb indexeinek számát (pl. az egyindexes tömbök vektorok, a kétindexesek mátrixok tárolására szolgálnak), de a tömbök összméretét is korlátozza a rendelkezésre álló szabad memória nagysága. Természetesen ugyanolyan típusú tömböket definiálhatunk a DIM utasítással, mint amilyen típusú változókat egyébként is használhatunk. Ugyanazon név alatt szerepeltethetünk a programban egyszeres és tömbváltozót is, mert az adatra történõ hivatkozás úgyis egyértelmûvé teszi, melyiket kell használni.
Példák változókra:
Az A%, B%, CICA% egész típusú változók. Az A%(2), B%(K,J), CICA% (4,K,S) olyan tömbök elemei, amelynek valamennyi eleme egész típusú. Egy programon belül alkalmazható A% és A%(...) is, illetve CICA% és CICA%(...) is. A zárójel miatt különbözõ neveknek kell tekinteni.
Az A, A!, CICA, CICA!, A(2), A!(2), CICA(K,L), CICA!(K,L) egyszeres pontosságú valós változók. A ! nem kötelezõ, így A és A!, CICA és CICA!, valamint A(2) és A!(2) ugyanazt a memóriarekeszt jelentik. A tömböknek valamennyi eleme egyszeres pontosságú valós.
Az A#, CICA#, A#(3), CICA#(K,L) dupla pontosságú valós változók.
Az A$, CICA$, A$(5), CICA$(K,L) string változók.
Az A$(...) és CICA$(...) tömbök valamennyi eleme string minden elem hossza 1 és 255 byte között lehet. Egy programban használható A%, A, A#, A$ változó, különbözõ memóriarekeszt jelentenek, egymáshoz semmi közük nincs, nem jelenti egyik a másik átalakított értékét.
A BASIC igyekszik elnézõ lenni a felhasználóhoz, programozási hibáit egy bizonyos határig tolerálja, ezért pl.: a tömbök deklaráció nélkül is használhatók. A tömbnév elsõ elõfordulásakor az indexek számának megfelelõ dimenziójú tömb helyfoglalása automatikusan megtörténik, azzal a korlátozással, hogy az egyes indexek értéke a 10-et nem haladhatja meg (és az indexek számozása 0-nál kezdõdik).
Példák egész típusú konstansokra: 5,-32000,16000,&Hb800 (hexad.)
Példák egyszeres pontosságú lebegõpontos konstansokra: 5.,-32000!,16000.57,16E+3
Példák dupla pontosságú lebegõpontos konstansokra: 5.D+0,-32000#,16000.57D+0,16D+3
Példák string-konstansokra: "ablak","Ajto","%12 Ab lak", "12345".
Példák logikai konstansokra: -1 (igaz), 0 (hamis) (A gép a matematikai logikai igaz 1 helyett a -1-et használja).
A mûveletek közötti prioritási szabály a matematikában szokásos. Egyenrangú mûveletek esetében balról jobbra haladva történik a mûveletek elvégzése. A mûveletek sorrendjének ettõl eltérõ kijelölése a ( ) zárójelek használatával lehetséges.
Aritmetikai kifejezésen olyan képletet értünk, amely számértékû konstansokat, változókat, függvényeket tartalmaz, aritmetikai mûveletekkel összekapcsolva. Aritmetikai kifejezés értéke numerikus szám. Az aritmetikai függvények argumentumát, azt a kifejezést, változót, vagy konstanst, amelynek függvényértékét kell kiszámítani ( ) zárójelbe kell tenni.
Példák aritmetikai kifejezésekre:
Valamennyi konstans és változó önmagában is kifejezés.
Egyszerû logikai kifejezés két aritmetikai vagy két string kifejezés relációval való összekapcsolása. Értéke logikai érték: igaz (-1) vagy hamis (0). Példák: A<=B A<>B A=B (A^2+B^3)/2 = SIN((4*ATN(1))/2) "ABC"+A$ <= LEFT$(B$,6)
Összetett logikai kifejezés egyszerû logikai kifejezések, logikai értékû változók összekapcsolása logikai mûveletekkel, vagy függvényekkel. Logikai kifejezés értéke logikai érték: igaz vagy hamis.
Példák:
String (vagy karakter) kifejezésen olyan képletet értünk, amely string konstansokat, változókat, függvényeket tartalmaz, esetleg az egyetlen + egyesítés (konkatenálás) string mûvelettel összekapcsolva. String kifejezés értéke string. String függvények argumentumát ( ) zárójelbe kell tenni.
Példák string kifejezésre:
Kifejezés alatt tulajdonképpen olyan képletet értünk, ami már korábban ismertetett formájú konstansokat, mûveleteket és függvényeket, korábban definiált változókat és szabályos zárójelezést tartalmazhat. Alapvetõ szabály, hogy a változó és a kifejezés típusa megegyezzen, ezen belül a számtípusok egymást helyettesíthetik, de pl. stringet nem rendelhetünk számhoz. A zárójelezés teszi lehetõvé a mûveletek elvégzése prioritásos sorrendjének felülbírálását, de a kezdõ és végzárójelek száma meg kell hogy egyezzen.
Adat beolvasható magából a program listájából (DATA és READ), billentyûzetrõl (INPUT, LINE INPUT), adatfile-ból (INPUT#, LINE INPUT#, GET#).
Adat kiírható a képernyõre (PRINT, WRITE), a nyomtatóra (LPRINT), adatfile-ba (PRINT#, WRITE#, PUT#).
Ciklusról beszélünk akkor, ha egy programrészletet többször egymás után akarunk végrehajtatni. Ha az ismétlések száma elõre ismert, akkor a ciklusba tartozó utasításokat (a ciklus magját) a FOR ..., NEXT utasításpárral fogjuk közre. Ha a ciklus ismétlése valamely logikai feltételtõl függ, akkor használjuk a WHILE ..., WEND utasításpárt.
Ha a program különbözõ pontjain ugyanazt az utasítássoro- zatot kell végrehajtanunk (csak esetleg más értékekkel, paraméterekkel), akkor szervezzünk szubrutint, azaz az ismétlõdõ utasítássorozatot különítsük el a fõprogramtól (tegyük pl. a program végére), és zárjuk le egy RETURN utasítással. A fõprogram megfelelõ pontjain az így kiemelt utasítássorozat végrehajtását a GOSUB szubrutinhívó utasítással kezdeményezhetjük.
A program általában olyan sorrendben hajtódik végre, ahogy a listán az utasítások sorban követik egymást. Ezt a végrehajtási sorrendet módosítják a ciklusok, a szubrutinok, de a vezérlés a program bármely más pontjára is átadható a GOTO utasítással (mindenesetre ciklus és szubrutin magjába 'kívülrõl' beugrani nem ajánlatos).
Logikai feltételtõl függõ vezérlés-átadást az IF...THEN... ELSE... utasítás-konstrukcióval kivitelezhetünk. Kijelölt címkéjû sorok között az ON utasítással választhatunk.
A számítógéphez kapcsolt háttértárolón (lemezegységen) programokat és adatfile-okat tarthatunk a 'felejtés' ve- szélye nélkül (a memória a számítógép kikapcsolása után elveszti tartalmát!). A BASIC-ben megírt programokat a SAVE utasítással menthetjük, és a LOAD vagy MERGE utasítással tölthetjük vissza. A háttértárolón található file-ok katalógusa a FILES parancssal kérdezhetõ le, tetszõleges file-t a KILL utasítással törölhetünk, és hossza a LOF függvénnyel kérdezhetõ le.
Az adatfile-ok rekordszervezésûek. Egy rekord a logikai (és bizonyos mértékig fizikai) értelemben összetartozó adatok halmaza. Ha a rekordok hossza nem rögzített, akkor a file csak szekvenciálisan (a rekordok csak felírásuk sorrendjében érhetõk el) kezelhetõ, ellenkezõ esetben lehetséges a file- on belüli közvetlen rekordra pozícionálás.
Az adatfile kijelölését, típusát, használatának módját az OPEN utasítással írhatjuk elõ, és a munka befejeztével a CLOSE utasítással zárhatjuk le. A program normál befejezõdése esetén külön utasítás nélkül is megtörténik a nyitott file-ok lezárása, de különösen írásra megnyitott file-ok esetén célszerû a lezárásról külön is gondoskodni, nehogy adatvesztés következzen be! Olvasáskor a file-vége figyelését az EOF logikai függvény biztosítja. Egyidejüleg csak korlátozott számú file lehet nyitva!
A számítógép egyes perifériái file-ként is elérhetõk, ha az alábbi egyezményes neveket használjuk (a kettõspont része a filenévnek!):
A BASIC-nek nagyon hasznos sajátossága, hogy beépített (pseudo-) véletlenszám generáló függvényt is tartalmaz (RND), ami a [0,1] intervallumon egyenletes eloszlású vé- letlenszámot ad vissza. A valószínûség-számításból ismert, hogy egy ilyen véletlenszám generátorral bármely más eloszlású véletlen számsorozat is elõállítható! A generált számsorozat megismételhetõ, mert a RANDOMIZE utasítás lehetõvé teszi, hogy más alkalommal is ugyanattól a ponttól indítsuk újra a sorozatot.
ON ERROR GOTO sorszám; alakú utasítás a futás közbeni hibák lekezelésére alkalmas. Rendszerváltozóként ERR a hiba kódját, az ERL függvény pedig elõfordulásának helyét szolgáltatja. Ezt a feltételfigyelést bekapcsolni nem kell, de a hibadetektáló rutint a RETURN helyett a RESUME utasítással kell lezárni.
Az alábbi leírásban szögletes zárójelbe [] írjuk a nem kötelezõen választható opciókat. A [] jelek nem tartoznak hozzá az utasításhoz a programsorba nem szabad beleírni. A mintapéldákban a programsorok sorszámmal kezdõdnek, mert az eredeti BASIC-ekben ez még kötelezõ volt.
10 X=125:Y=-442.7 20 PRINT ABS(X),ABS(Y) RUN 125 442.7
10 yx$="AbcD123" 20 PRINT asc(yx$) RUN 65
10 pi=4*atn(1) 20 x=16 30 PRINT pi,4*atn(x/16) RUN 3.141593 3.141593
10 y=125.0123456789 20 x#=cdbl(y) 30 PRINT y,x# RUN 125.0124 125.0123443603516
10 Y=890.76:A$="789abs" 20 X#=CDBL(Y) 30 PRINT Y,X#,A$ 40 CHAIN "a:konvert.bas",10,ALL RUN 890.76 890.760009765625 789abs 125.0124 19999.08984375 789abs tzuuio LIST 10 Y=125.0123456789# 20 E$="tzuuio" 25 X#=19999.09 30 PRINT Y,X#,A$,E$
10 X=65 20 PRINT CHR$(X) RUN A
10 X=3456.123:Y=-345.123:Z=123.78:W=-123.78 20 PRINT CINT(X),CINT(Y),CINT(Z),CINT(W) RUN 3456 -345 124 -124
10 A$="asdfghkjkl" 20 PRINT "A string 10 karakter.",FRE(A$),A$ 30 CLEAR 40 PRINT"A string ures.",FRE(A$),A$ 50 A#=12345.567879# 60 PRINT "8 byte-os valtozoval:",FRE(A#),A# 70 CLEAR 80 PRINT "Nelkule: ", FRE(A#),A# Ok RUN A string 10 karakter. 59908 asdfghkjkl A string ures. 59915 8 byte-os valtozoval: 59903 12345.567879 Nelkule: 59915 0
10 COMMON A$,Y 20 C=243:B$="asdf" :A$="qwert" 30 PRINT "elso program" 40 PRINT "C="C,"B="B$,"Y="Y,"X#="X#,"A$="A$ 60 CHAIN "a:lancolt.bas",10 70 PRINT A,B,C$,B$,Y,X# RUN elso program C= 243 B=asdf Y= 0 X#= 0 A$=qwert Lancolt program Y= 125.0124 X#= 19999.08984375 A$=qwert E$=tzuuio C= 0 LIST 10 Y=125.0123456789# 20 E$="tzuuio" 30 X#=19999.09 40 PRINT "Lancolt program" 50 PRINT "Y="Y,"X#="X#,"A$="A$,"E$="E$,"C="C Ok RUN Lancolt program Y= 125.0124 X#= 19999.08984375 A$= E$=tzuuio C= 0
10 PRINT "Elso sor" 20 PRINT "Masodik sor" 30 PRINT "Stop.Gepeld be -CONT-!" 40 STOP 50 PRINT "Otodik sor" Ok RUN Elso sor Masodik sor Stop.Gepeld be -CONT-! Break in 40 Ok cont Otodik sor
10 PI=4*ATN(1) 20 PRINT COS(PI/3) RUN .4999999
10 X#=1234.567890123457# 20 Y=CSNG(X#) 30 PRINT X#,Y RUN 1234.567890123457 1234.568
10 X$="123456789012345" 20 Y%=CVI(X$):Z=CVS(X$):W#=CVD(X$) 30 PRINT X$,Y% 40 PRINT Z,W# Ok RUN 123456789012345 12849 9.264219E-24 1.515492070353-22
Lásd még a GET utasítást!
10 DEF FNKOCKA(A)=6*A*A 20 X=3.28:Y=442 30 PRINT X;"oldalu kocka felszine";FNKOCKA(X) 40 PRINT Y;"oldalu kocka felszine";FNKOCKA(Y) RUN 3.28 oldalu kocka felszine 64.5504 442 oldalu kocka felszine 1172184
10 OPEN "I",#1,"a:adat.dat" 20 FOR I=1 TO 100 30 INPUT#1,Y 40 PRINT EOF(1);Y , 50 IF EOF(1) THEN GOTO 70 60 NEXT I 70 CLOSE #1 Ok RUN 0 1 0 0 0 1 0 3 0 0 0 3 0 6 0 0 0 6 0 10 0 0 0 10 0 15 0 7 0 15 0 21 0 0 0 21 0 28 0 0 0 28 0 36 0 0 0 3 0 45 0 0 0 45 0 55 0 0 -1 55 Ok
10 DIM A(10,10) 20 FOR I=1 TO 10 30 FOR J=1 TO 10 40 A(I,J)=123 50 NEXT J,I 60 PRINT "Szabad byte-ok a tombbel",FRE(A) 65 DIM A(5,5) 70 ERASE A 80 PRINT "ERASE utan:",FRE(A) 90 REM Lehet ujradimenzionalni. 100 DIM A(5,5) RUN Szabad byte-ok a tombbel 59406 Duplicate Definition in 65 delete 65 RUN Szabad byte-ok a tombbel 59419 ERASE utan: 59914
10 ON ERROR GOTO 100 20 INPUT "Hanyadik honap?",N 30 IF N<1 OR N>12 THEN ERROR 210 40 END 100 IF ERR=210 THEN PRINT "A honapok szama rossz!":GOTO 900 Ok RUN Hanyadik honap?13 A honapok szama rossz!
10 A=1:B=COS(4*ATN(1)/2) 20 PRINT EXP(1),EXP(A),EXP(B) RUN 2.718282 2.718282 .9999998
10 X=125.2:Y=125.7:X2=-125.2:Y2=-125.7 20 PRINT FIX(X),FIX(Y),FIX(X2),FIX(Y2) RUN 125 125 -125 -125
10 FOR I=1 TO 4 STEP .4 20 PRINT I; 30 J=J+1 40 NEXT I 50 PRINT 60 PRINT "A ciklusvaltozo erteke a ciklus elhagyasakor";I RUN 1 1.4 1.8 2.2 2.6 3 3.4 3.800001 A ciklusvaltozo erteke a ciklus elhagyasakor 4.200001
10 OPEN "R",#1,"vletlen.fle",40 20 FIELD #1,10 AS NEV$,15 AS SZEMSZ$,5 AS IR$,5 AS BER$ 30 FOR I=4 TO 2 STEP -1 100 GET #1,I 110 PRINT NEV$,CVD(SZEMSZ$),CVI(IR$),CVS(BER$) 120 NEXT I Ok RUN Nemeth 28509234567 9400 88.8 Molnar 18201175678 8777 99.90 Szabo 28305153456 8000 675.5
10 DIM A(5) 20 FOR I=1 TO 5 40 A(I) =I 50 NEXT I 60 PRINT "1.szubrutinhivas";:GOSUB 200 70 PRINT " Vissza 1" :A(4)=100 80 PRINT "2. szubrutinhivas";:GOSUB 200 110 PRINT " Vissza 2" :A(2)=200 120 PRINT "3.szubrutinhivas";:GOSUB 200 130 PRINT " Vissza 3" 140 END 200 FOR I=1 TO 5 210 PRINT A(I); 220 NEXT I 240 RETURN RUN 1. szubrutinhivas 1 2 3 4 5 Vissza 1 2. szubrutinhivas 1 2 3 100 5 Vissza 2 3.szubrutinhivas 1 200 3 100 5 Vissza 3
10 X=123.16 :Y$=HEX$(X) 20 PRINT Y$ RUN 7B
Alakja: IF kifejezés THEN utasítások [ELSE utasítások] ; vagy IF kifejezés GOTO címke [ELSE utasítások] ; ahol a 'kifejezés' egy logikai kifejezést, az 'utasítás' pedig egy BASIC parancssort jelent. Mûködése: ha a logikai kifejezés értéke igaz, akkor a végrehajtás a 'címke' soron folytatódik, ill. a THEN-t követõ utasítások kerülnek végrehajtásra, egyébként pedig az ELSE-t követõ utasításokat hajtja végre a gép.
10 IF x=x THEN PRINT "Ezeket az utasitasokat hajtja vegre
1." :I=I+1:PRINT "Kovetkezo utasitasra lep." ELSE PRINT
"Ezeket
nem.":Z=0
20 IF 0 THEN PRINT "Ezeket nem hajtja vegre":X=ATN(1)
ELSE PRINT "Ezeket hajtja vegre.":Y=123
RUN
Ezeket az utasitasokat hajtja vegre 1.
Kovetkezo utasitasra lep.
Ezeket hajtja vegre.
10 PRINT "Nyomjon meg egy billentyut!" 20 A$=INKEY$:IF A$="" THEN GOTO 20 30 PRINT A$ Ok RUN Nyomjon meg egy billentyut! g
10 INPUT "Adj meg egy valos szamot es egy stringet!";A,B$ 20 PRINT "A valtozok erteke:", A,B$ Ok RUN Adj meg egy valos szamot es egy stringet!? 34 ?Redo from start Adj meg egy valos szamot es egy stringet!? "string" ?Redo from start Adj meg egy valos szamot es egy stringet!? "ez is",34 ?Redo from start Adj meg egy valos szamot es egy stringet!? 12345.678,ezisstring A valtozok erteke: 12345.68 ezisstring
10 OPEN "I",#1,"adat.dat" 20 INPUT #1,X,B$,Y 30 PRINT"1. beolvasas:" X,B$,Y 40 INPUT #1,X,B$,Y 50 PRINT"2. beolvasas:", X,B$,Y RUN 1. beolvasas: 1 1 1 2. beolvasas: 3 12 3
10 OPEN "I",#1,"adat.dat" 20 Y$=INPUT$(7,#1) 30 PRINT y$ RUN 1,"1",1
10 A$="9876543abcd3456" 20 V=INSTR(A$,"3"):W=INSTR(8,A$,"3") 30 PRINT V,W RUN 7 12
10 x=12.4:y=12.7:x2=-12.4 :y2=-12.7 20 PRINT int(x), int(y), int(x2), int(y2) RUN 12 12 -13 -13
10 a$="123abc" 20 PRINT LEFT$(A$,2),LEFT$(A$,4) RUN 12 123a
10 x$="123abc":y$="12v" 20 PRINT len(x$),len(y$) RUN 6 3
10 let x=123.4 20 x2=123.4 30 let y =4*atn(1) 40 y2=4*atn(1) 50 PRINT x,x2,y,y2 RUN 123.4 123.4 3.141593 3.141593
10 rem Pelda INPUT-ra. 20 INPUT "Adjon egy karaktersort!",a$ 30 rem Pelda LINE INPUT-ra. 40 line input "Adjon egy karaktersort 2!",b$ 50 PRINT "1.sor",a$ 60 PRINT "2.sor",b$ RUN Adjon egy karaktersort! akarmi es vesszo, ?Redo from start Adjon egy karaktersort! akarmi es Adjon egy karaktersort 2! akarmi es vesszo, 1.sor akarmi es 2.sor akarmi es vesszo,
10 DIM H$(10) 20 OPEN "i" ,#1,"a:hput" 25 REM Beolvasunk egy programot,melyet hardcopy-val mentettunk el. 30 FOR I=1 TO 10 40 LINE INPUT# 1,H$(I) 50 NEXT I 60 FOR I=1 TO 10 70 PRINT H$(I) 80 NEXT I RUN LIST 10-800 10 OPEN "r",#1,"veletlen.fle",40 20 FIELD #1,15 AS NEV$,20 AS CIM$,5 AS TEL$ 30 FOR I=3 TO 1 STEP -1 40 INPUT "NEV;CIM;TELEFON",N$,C$,T$ 50 LSET NEV$=N$:LSET CIM$=C$:LSET TEL$=T$ 60 REM A FIELD mezökre nem történhet beolvasás. 70 PUT #1,I 80 REM Az i. rekordot töltjük fel . 90 NEXT I
LIST
10 LOCATE 13,20
20 PRINT "13.sor 20.oszlop"
30 LOCATE,,1
40 INPUT K
50 LOCATE 25,1
60 PRINT "Utolso sor"
70 LOCATE 20,,,1,7
Ok
RUN
13.sor 20.oszlop
? 4
Ok
10 OPEN "I",#1,"a:adat.dat" 20 PRINT "A file hossza!",lof(1) 30 CLOSE #1 RUN A file hossza! 150
10 PRINT exp(log(exp(1))) RUN 2.718282
10 FOR I=1 TO 10 20 LPRINT "1234567890";LPOS(0); 30 IF LPOS(0)>45 THEN LPRINT 40 NEXT I 50 REM Ha a sor hossza nagyobb,mint 45 ,uj sort kezd a nyomtato.
10 OPEN "O",#1,"adat.dat" 20 FOR I=1 TO 10 30 A=A+I:B$=B$+HEX$(I): C=C+I 40 WRITE#1,A,B$,C 50 NEXT I 60 CLOSE Ok MERGE"a:amerglt" Ok LIST 70-800 200 OPEN "I",#1,"adat.dat" 210 INPUT #1,X,B$,Y 220 PRINT"1. beolvasas:" X,B$,Y 230 INPUT #1,X,B$,Y 240 PRINT"2. beolvasas:", X,B$,Y Ok RUN 1. beolvasas: 1 1 1 2. beolvasas: 3 12 3 Ok
10 A$="123456789asd" 20 PRINT MID$(A$,3,5),MID$(A$,9,3) Ok RUN 34567 9as
10 x#=123456789.12345# 20 y$=mkd$(x#) 30 PRINT y$,len(y$) RUN jM_úóyk˘ 8
10 x%=12345 20 y$=mki$(x%) 30 PRINT y$, len(y$) RUN 90 2
10 x=12345.678 20 y$=mks$(x) 30 PRINT y$ ,len(y$) RUN µ@Ä 4
10 x=64 20 x$=oct$(x) 30 PRINT x$ RUN 100
10 ON ERROR GOTO 100 80 F$=123 90 END 100 PRINT "Hibakod!";ERR;"A"; ERL;"programsorban!":RESUME 1000 Ok RUN Hibakod! 13 A 80 programsorban!
10 INPUT "Hányadik rutin müködjön?",K 20 ON K GOSUB 50,80, 110 30 PRINT "Itt folytatódik." ,X,Y,W 40 END 50 PRINT "1. rutin" 60 X=X+1 70 RETURN 80 PRINT "2. rutin" 90 Y=125 100 RETURN 110 PRINT "3. rutin" 120 W=ATN(1) 130 RETURN Ok RUN Hányadik rutin müködjön? 2 2. rutin Itt folytatódik. 0 125 0
10 INPUT "Legyen 1<=k<4 :",K 20 ON INT(K) GOTO 50 ,100,150 30 PRINT "Nincs visszatérés." 40 STOP 50 PRINT "1. cím":END 100 PRINT "2. cím":END 150 PRINT "3. cím":END Ok RUN Legyen 1<=k<4 :2 2. cím Ok RUN Legyen 1<=k<4 :3.456 3. cím Ok
10 DEF SEG=0 20 PRINT PEEK(1200) 30 POKE 1200,65 40 PRINT PEEK(1200) Ok RUN 0 65
10 PRINT "a","B";"C"; 20 PRINT "Nincs uj sor." RUN a BCNincs uj sor.
10 A$="KONYV" :A=55 :DB=22
20 PRINT USING "Tétel:\ \ Ar:###.##Ft Mennyiség:"+
"**# Erték:**####,.##Ft";A$,A,DB,A*DB
RUN
Tétel:KONYV Ar: 55.00Ft Mennyiség:*22
Erték:**1,210.00Ft
10 OPEN "R",#1,"vletlen.fle",40 20 FIELD #1,10 AS NEV$,15 AS SZEMSZ$,5 AS IR$,5 AS BER$ 30 FOR I=1 TO 4 40 INPUT "NEV,SZEMELYSZ,IRANYITOSZ,BER",N$,SZ#,I%,B 50 LSET NEV$=N$:LSET SZEMSZ$=MKD$(SZ#):LSET IR$=MKI$(I%) 60 LSET BER$=MKS$(B) 70 REM A FIELD mezokre nem tortenhet beolvasas. 80 REM Ezert hasznaljuk LSET utasitast. 90 REM Randomfile-ba csak stringet irhatunk. 100 REM Ezert hasznaljuk mki$-t,mks$-t.mkd$-t. 110 PUT #1,I 115 REM Az i. rekord feltoltese 120 NEXT I Ok RUN NEV,SZEMELYSZ,IRANYITOSZ,BERHorvat,28308122345,9000,625.7 NEV,SZEMELYSZ,IRANYITOSZ,BER Szabo,28305153456,8000,675.5 NEV,SZEMELYSZ,IRANYITOSZ,BER Molnar,18201175678,8777,99.9 NEV,SZEMELYSZ,IRANYITOSZ,BER Nemeth,28509234567,9400,88.8
10 DATA 1,2,6,8,10 ,"A","B",12c",2.7,123456.987651#
20 DATA 1.419,5.678
30 READ A,B,C,D%,E%
40 READ F$,G$
50 READ H$,J,K#,L,M
60 REM Minden változó azt a DATA elemet kapja értékül
,melynek sorszáma a leírás sorrendjében ugyanaz
,mint a változó sorszáma a leírás sorrendjében.
70 REM Mindkét sorszám független attól,hogy hány DATA-ban
,ill READ-ben történik a leírás.
120 RESTORE 20
130 READ N,P
140 PRINT A,B,C,D%
150 PRINT E%,F$,G$
160 PRINT H$,K#,J
170 PRINT L,M,N,P
RUN
1 2 6 8
10 A B
12c" 123456.987651 2.7
1.419 5.678 1.419 5.678
10 A$="123456asdf"
20 PRINT RIGHT$(A$,3),RIGHT$(A$,6)
RUN
sdf 56asdf
10 INPUT"Adjon meg egy egesz szamot!", K% 20 RANDOMIZE K% 30 PRINT RND(0),RND(0),RND(0) 40 FOR I=1 TO 3 50 PRINT RND(I); 60 NEXT I RUN Adjon meg egy egesz szamot!5 .524762 .524762 .524762 3.537536E-02 .9370679 .8688921 Ok RUN Adjon meg egy egesz szamot!9 .5870789 .5870789 .5870789 .6609247 .62292 .1238359
10 x=-4.2 :y=0 :z=4.2 20 PRINT sgn(x),sgn(y),sgn(z) RUN -1 0 1
10 PRINT 2*SIN(4*ATN(1)/3) Ok RUN 1.732051
10 PRINT "AKARMI"+space$(5)+"valami" RUN AKARMI valami
10 PRINT "1234567890";spc(10);"1234567890"
20 PRINT spc(10);"1234567890"
RUN
1234567890 1234567890
1234567890
10 a=1:c=2:b=4 20 PRINT "DISZKRIMINANS",sqr(b^2-4*a*c) RUN DISZKRIMINANS 2.828427
10 x=127.48:v$=str$(x) 20 PRINT str$(x)+space$(5)+v$ RUN 127.48 127.48
10 PRINT string$(10,65),string$(7,"A") RUN AAAAAAAAAA AAAAAAA
10 x=121:y=442 20 swap x,y 30 PRINT "x="x,"y="y RUN x= 442 y= 121
10 FOR I=0 TO 5
20 PRINT TAB(20-I) STRING$(I*2+1,"X")
30 NEXT I
RUN
X
XXX
XXXXX
XXXXXXX
XXXXXXXXX
XXXXXXXXXXX
Ok
10 PRINT TAN(ATN(1)),TAN(4*ATN(1)/3) RUN 1 1.732052
10 v$=time$ 20 PRINT v$ RUN 13:32:16
10 PRINT timer RUN 12543.88 Ok RUN 12559.75 Ok RUN 12584.58
10 x$="1234.56" 20 xv=val(x$) 30 PRINT xv RUN 1234.56
10 x=127.5 :y=237 20 PRINT varptr(x),varptr(y) RUN 3056 3064
10 WHILE I<10 20 PRINT "Ez a ciklusmag",I 30 I=I+3 40 WEND 50 PRINT "Lejart a ciklus",I RUN Ez a ciklusmag 0 Ez a ciklusmag 3 Ez a ciklusmag 6 Ez a ciklusmag 9 Lejart a ciklus 12
10 x=115:y#=123457.98765#:y$="qwe" 20 write "Ez megjegyzes .",x,y#,y$ RUN "Ez megjegyzes .",115,123457.98765,"qwe"
000 NUL 032 (szóköz) 064 @ 096 `
001 SOH 033 ! 065 A 097 a
002 STX 034 " 066 B 098 b
003 ETX 035 # 067 C 099 c
004 EOT 036 $ 068 D 100 d
005 ENQ 037 % 069 E 101 e
006 ACK 038 & 070 F 102 f
007 BEL 039 ' 071 G 103 g
008 BS 040 ( 072 H 104 h
009 HT 041 ) 073 I 105 i
010 LF 042 * 074 J 106 j
011 VT 043 + 075 K 107 k
012 FF 044 , 076 L 108 l
013 CR 045 - 077 M 109 m
014 SO 046 . 078 N 110 n
015 SI 047 / 079 O 111 o
016 DLE 048 0 080 P 112 p
017 DC1 049 1 081 Q 113 q
018 DC2 050 2 082 R 114 r
019 DC3 051 3 083 S 115 s
020 DC4 052 4 084 T 116 t
021 NAK 053 5 085 U 117 u
022 SYN 054 6 086 V 118 v
023 ETB 055 7 087 W 119 w
024 CAN 056 8 088 X 120 x
025 EM 057 9 089 Y 121 y
026 SUB 058 : 090 Z 122 z
027 ESC 059 ; 091 [ 123 {
028 FS 060 < 092 \ 124 |
029 GS 061 = 093 ] 125 }
030 RS 062 > 094 ^ 126 ~
031 US 063 ? 095 _ 127