Basic abc-doar


instructiunea WINDOW.Are inteles doar in modul grafic.Coordonatele



Yüklə 1,91 Mb.
səhifə19/20
tarix06.08.2018
ölçüsü1,91 Mb.
#67460
1   ...   12   13   14   15   16   17   18   19   20

instructiunea WINDOW.Are inteles doar in modul grafic.Coordonatele

x1y1 definesc coltul NV al dreptunghiului iar x2y2 coltul SE al

dreptunghiului (ferestrei de ecran) in care se vor face proiectiile

Optional dreptunghiul poate fi umplut cu o culoare desemnata prin

(culoare=nr0-3)si eventual se poate incadra prin trasarea unei

frontiere daca parametrul (frontiera) este diferit de 0.Optiunea

SCREEN arata ca toate coordonatele grafice se vor calcula relativ

la intregul ecran(absolut) iar in caz contrar se vor calcula

relative la dreptunghiul descris.

-forma VIEW [SCREEN](x1,y1)-(x2,y2),(culoare),(frontiera)

-exemplu ................

120 CLS:SCREEN 2

130 VIEW:REM-vizorul 1 ocupa tot ecranul

140 VIEW (10,10)-(300,180):REM al doilea vizor

150 CLS

160 LINE (0,0)-(310,190),1

170 LOCATE 1,11:PRINT "vizorul doi"

180 VIEW SCREEN (50,50)-(250,150),,1:REM vizorul 3

190 CLS:REM se sterge doar vizorul 3

200 LINE(300,0)-(0,199),1

210 LOCATE 9,9:PRINT "Vizorul trei"

220 VIEW SCREEN (80,80)-(200,125),,1:REM vizorul 4

230 CLS

240 CIRCLE (150,100),20,1

250 LOCATE 11,9:PRINT "VIZORUL PATRU"

-expresii asociate;

VIEW PRINT,WINDOW
VIEW PRINT

-enunt

-Determina limitele unei ferestre de text stabilita intre numerele

de linie (linie 1) si (linie 2) care pot fi numere cu valori de

la 1-24.Toate functiile de scriere,pozitionare,editare,defilare au

loc in aceasta fereastra.

-forma VIEW PRINT (linie 1) TO (linie 2)

-exemplu 10 SCREEN 0:REM-se creaza o fereastra de 6 linii

20 VIEW PRINT 1 TO 5

-expresii asociate;nu sint

-154-

WAIT -enunt

-Suspenda executia programului in timpul monitorizarii unuia

din porturile calculatoruluidesemnat prin (port=nr 0-65535).

Parametrii n si m pot avea valori de la 0 la 255 si reprezinta

operatiile ce se efectueaza asupra unui sir de caractere primit

la portul desemnat.Astfel se opereaza operatia XOR cu expresia

intreaga m si apoi operatia AND cu n dupa care se reia citirea

datelor de la port.Daca rezultatul este diferit de zero,executia

continua cu urmatoarea instructiune iar in caz contrar se ia

valoarea 0.Se utilizeaza pentru comunicatii (sau pentru blocarea

portului de comunicatii in lipsa unei parole)

-forma WAIT(port),(n),[m]

-exemplu 100 WAIT 32,2

-expresii asociate;nu sint
WHILE...WEND

-enunt

-Executa operatiile dalimitate intre WHILE si WEND de un numar

repetat de ori atit timp cit conditia specificata prin (conditie)

este adevarata.Daca parametrul (conditie) este o expresie numerica

atunci se considera ca valorile diferite de zero sint adevarate iar

pentru zero conditia este falsa (nu este indeplinita).

-forma WHILE (conditie)..........WEND

-exemplu 10 REM executa suma primelor zece numere

20 LET a=0

30 LET b=0

40 WHILE b<11

50 LET S=a+b:LET b=b+1

60 PRINT S

70 WEND

-expresii asociate; nu sint
WIDTH LPRINT

-enunt

-Defineste lungimea liniei de tiparire la imprimanta prin parametrul

(dimensiune=numar intreg cu valoarea 0-255)

-forma WIDTH LPRINT (dimensiune)

-exemplu WIDTH LPRINT (80)

-expresii asociate;nu sint
WIDTH -enunt

-Determina lungimea unei linii de adresa prin parametrul (dimensi-

une=nr 0-255) pentru un dispozitiv(obiect) sau un fisier care

urmeaza a fi identificat ulterior prin (numar canal).Practic

determina numarul maxim de caractere pentru fiecare linie de

adresa ca se trimite la un periferic sau intr-un fisier.

-forma WIDTH(obiect),(dimensiune)

cu (obiect)::=(dispozitiv)|(numar canal)

dispozitiv poate fi;

SCRN(ecran),LPT1,LPT2,LPT3(imprimante),COM1,COM2,COM3,COM4(porturi

de comunicatie)

-exemplu 10 WIDTH 3:PRINT "123456789"
-expresii asociate;nu sint

-155-

WINDOW

-enunt

-Defineste coordonatele unei ferestre de ecran prin x1,y1 si x2,y2

care desemneaza colturile de NV si SE ale ferestrei.Coordonatele

definite de programator se numesc coordonate universale in timp ce

marginile ecranului sint coordonate fizice.In coordonate universale

se pot executa desene si grafice care depasesc cu mult marginile

ecranului.Coordonatele fizice pentru SCREEN 2 sint 0,0 si 199,639.

Se accepta orice valori atit timp cit x1 nu este egal cu x2 si

y1 este diferit de y2.Daca nu se specifica nici un parametru pentru

WINDOW se trece din nou in coordonate fizice(marginile ecranului)

Enuntul WINDOW permite efectuarea efectelor de ZOOM si TIMBRU adica

de marire sau micsorare a imaginilor.

-forma WINDOW[SCREEN](x1,y1)-(x2,y2)

-exemplu 10 WINDOW (-10,-20)-(30,40)

20 VIEW (40,60)-(100,120)

30 LINE (-5,-12)-(25,37)
sau 10 SCREEN 2:CLS

20 WINDOW (-6,-6)-(6,6)

30 CIRCLE (4,4),5,1

40 REM-cercul este vizibil doar partial

50 WINDOW (-100,-100)-(100,100)

60 CIRCLE (4,4),5,1

70 REM -cercul este mic

80 END

-expresii asociate;

VIEW
WRITE -enunt

-Scrie pe ecran valorile din (lista de expresii)utilizind virgula

(,) pe post de separator si ghilimelele(") pentru incadrarea

sirurilor de caractere alfanumerice (litere).Dupa fiecare linie

de adresa executa automat salt la linia urmatoare.

-forma WRITE(lista de expresii)

-exemplu 10 LET A=10:LET B=20:LET C$="abcdefg"

20 WRITE A,B,C$

-expresii asociate;

READ,WRITE#
WRITE# -enunt

-Scrie date intr-un fisier secvential desemnat prin (numar canal)

Datele din (lista de expresii) pot fi separate prin virgula(,)

sau punct si virgula (;) si incadrate intre ghilimele daca sint

caractere alfanumerice(litere).

-forma WRITE#(numar canal),(lista de expresii)

-exemplu 10 LET A=1.23

20 LET B$="abcde"

30 WRITE #1,A,B$

-expresii asociate;

INPUT#,READ,WRITE
Pentru toate definitiile limbajului GW-BASIC notiunea de enunt se

suprapune cu cea de instructiune.

-156-

SINTEZA GW-BASIC
COMENZI:AUTO,BLOAD,BSAVE,CHDIR,CLEAR,CONT,DELETE,EDIT,FILES,GWBASIC,

KILL,LCOPY,LIST,LLIST,LOAD,MERGE,MKDIR,NAME,NEW,RENUM,RESET,

RMDIR,RUN,SAVE,SHELL,SYSTEM,TRON,TROFF,
ENUNTURI(INSTRUCTIUNI):CALL,CHAIN,COMnON\OFF\STOP,COMMON,DATE$,DEF FN,

DEF SEG,DEF USR,DEFINT,DEFSNG,DEFDBL,DEFSTR,DIM,END,ENVIRON,

ERASE,ERROR,FOR\NEXT,GOSUB\RETURN,GOTO,IF...GOTO...ELSE,

IF...THEN...ELSE,KEY\ON\OFF\STOP,LET,MID,ON COMn GOSUB,ON ERROR\

GOTO,ON...GOSUB,ON...GOTO,ON KEYn GOSUB,0N PLAYn GOSUB,ON TIMERn\

GOSUB,OPTION BASE,PLAY,PLAY\ON\OFF\STOP,POKE,RANDOMIZE,REM,

RESTORE,RESUME,STOP,SWAP,TIME,TIMER\0N\OFF\STOP,WAIT,WHILE\WEND,
ENUNTURI(INTRARE-IESIRE cu transfer de date):BEEP,CIRCLE,CLOSE,CLS,COLOR,

DATA,DRAW,FIELD,GET,INPUT,INPUT#,IOCTL,LINE,LINE INPUT,LINE INPUT#

LOCATE,LPRINT,LPRINT USING,LSET/RSET,ON TIMERn GOSUB,OPEN,OPEN COM,

OUT,PAINT,PRESET,PRINT,PRINT USING,PRINT#,PRINT# USING,PSET,PUT,

READ,RESET,SCREEN,SOUND,VIEW,VIEW PRINT,WIDTH,WINDOW,WRITE,WRITE#
FUNCTII:ABS,ATN,CDBL,CINT,COS,CSNG,EXP,FIX,INT,LOG,RND,SGN,SIN,SQR,TAN,
FUNCTII SIR:ASC,CVI,CVS,CVD,INSTR,LEN,VAL
FUNCTII(INTRARE-IESIRE):CSRLIN,EOF,ERDEV,ERR,ERL,FRE,INP,LOC,LOF,LPOS,

PEEK,PLAY,PMAP,POINT,POS,SCREEN,TIMER,USR,VARPTR
FUNCTII TIP SIR:CHR$,LEFT$,MID$,RIGHT$,SPACE$,STRING$
FUNCTII(INTRARE-IESIRE TIP SIR):DATE$,ENVIRON$,ERDEV$,HEX$,INKEY$,INPUT$,

IOCTL$,MKI$,MKS$,MKD$,OCT$,SPC,STR$,TAB,TIME$,VARPTR$
REGULI GENERALE DE EDITARE SI DEPANARE

Fiecare linie de program trebuie numerotata.Numarul de linie este

cuprins intre 0-65535.O linie contine o instructiune sau mai multe sepa-

rate prin (:).Variabilele se definesc prin litere si/sau cifre (primele

40 sint semnificative) si pot fi siruri,nr intregi,nr reale in simpla sau

dubla precizie.Dupa numele variabilei $=sir,%=intregi,!=simpla precizie,

#=dubla precizie.Variabilele se declara explicit prin DEFINT,DEFSTR,

DEFSNG,DEFDBL.Orice variabila poate fi indexata.Nr max pentru variabile

indexate este 255.Nr max de elemente/dimensiune=32767.Operatorii aritme-

tici sint:+,-,*,/,^.Operatorii de relatie sint:=,<,>,<=,=>,>=,=<,<>,><.

Operatorii logici sint:NOT,AND,OR,XOR,IMP,EQV.Functii aritmetice:ABS,INT,

SQR,EXP,LOG,RND,SGN,COS,SIN,TAG,ATN.Functii de intrare:INKEY$,INPUT$,INP,

POS,LPOS,PEEK.Functii disponibile:FREE,USR,VARPTR,LOC,EOF,SWAP.Cicluri

de operatii:FOR...NEXT,WHILE...WEND.Salturi peste linii:GOTO,IF...THEN,

IF...GOTO,ON...GOTO,ON ERROR GOTO.Operatii intrare/iesire disc:SAVE,LOAD,

OPEN,CLOSE,INPUT,LINE INPUT,PRINT,PRINT USING,WRITE,GET,PUT,KILL,NAME.

Comenzi suplimentare grafice:VIEWPORT,WINDOW,MOVE,RMOVE,DRAW,RDRAW,ROTATE

Dupa scrierea unei linii se tasteaza ENTER.Se pot utiliza majuscule sau

minuscule.Stergerea memoriei se face cu NEW,a ecranului cu CLS,a liniilor

cu DELETE.CLEAR initializeaza variabilele la zero.LIST listeaza programul.

Programele din memorie se incarca cu LOAD.Programele se lanseaza cu RUN.

STOP sau ESC intrerupe programul CONT il continua iar END il inchide.

-157-

EXEMPLE DE PROGRAME SI JOCURI IN LIMBAJ BASIC
EXERCITIU PENTRU FORMARE DE TABELE
10 CLS

20 PRINT "Introduceti numarul de produse"

30 INPUT P

40 DIM T(12,P)

50 FOR K=1 TO P

60 PRINT "Introduceti cantitatile de produse"

70 INPUT A(K)

80 NEXT K

90 PRINT "Introduceti luna (in cifre 1,2....12)"

100 INPUT L

110 FOR K=1 TO P

120 PRINT "LUNA";L;"PRODUSUL NUMARUL";K;

130 PRINT "CANTITATEA";A(K)

140 NEXT K
Observatie;exercitiul contine mai multe variabile notate cu P,K,L si

mai multe constante alfanumerice de gen text cum sint "LUNA","PRODUSUL

NUMARUL" si "CANTITATEA".Ca regula generala,orice valaore numerica sau

caracter grafic din program care pastreaza aceesi marime sau forma in

tot programul poarta numele de constanta iar cele care pot primi sau

in urma unor operatii urmeaza sa primeasca valori diferite in timpul

executiei programului poarta numele de variabile.Pentru introducerea

de constante si variabile numerice se utilizeaza ca identificatori

cifre si litere iar pentru introducerea de constante si variabile de

tip text sau reprezentari grafice se utilizeaza litere si cifre urmate

de semnul $.
EXERCITIU PENTRU CALCULUL DE PERMUTARI SI COMBINARI
10 PRINT "PERMUTARI SI COMBINARI"

20 PRINT "Introduceti numarul total de elemente"

30 INPUT N

40 PRINT "Introduceti numarul de elemente din subgrupa"

50 INPUT D

60 LET P=1

70 LET C=1

80 FOR I=N-D+1 TO N

90 LET P=P*I

100 NEXT I

110 FOR J=2 TO D

120 LET C=C*J

130 NEXT J

140 PRINT "Sint posibile";p;"Permutari"

150 PRINT "si";P/C;"Combinari"

160 END
Observatie;cele doua bucle for...next executa cite o serie de operatii

echivalente cu scrierea unui numar factorial (unele programe au functie

directa pentru numerele factoriale).In mod similar se pot calcula si

reprezenta grafic functii cu un domeniu definit de valori.

-158-
JOC DE ZARURI

5 CLS

10 PRINT "JOC DE ZARURI TIP POKER "

15 PRINT "NR1";"NR2";"NR3";"NR4";"NR5"

20 LET A=INT(RND*6+1)

30 LET B=INT(RND*6+1)

40 LET C=INT(RND*6+1)

50 LET D=INT(RND*6+1)

60 LET E=INT(RND*6+1)

69 PRINT "**************************"

70 PRINT A;B;C;D;E

71 PRINT "**************************"

80 PRINT "Doriti sa schimbati numerele?Pentru NU tastati 0 altfel

tastati 1,2 sau 3 numere"

81 INPUT w:PRINT "Alegeti numerele pe care le schimbati,cu virgula

intre ele"

82 IF w=0 THEN 91

83 IF w=1 THEN 86

84 IF w=2 THEN 87

85 IF w=3 THEN 90

86 INPUT x:GOTO 91

87 INPUT x,y:GOTO 91

90 INPUT x,y,z

91 LET L=A

92 LET M=B

93 LET N=C

94 LET O=D

95 LET P=E

100 IF x=1 OR y=1 OR z=1 THEN LET L=0

110 IF x=2 OR y=2 OR z=2 THEN LET M=0

120 IF x=3 OR y=3 OR z=3 THEN LET N=0

130 IF x=4 OR y=4 OR z=4 THEN LET O=0

140 IF x=5 OR y=5 OR x=5 THEN LET P=0

150 REM-Se opereaza modificarile pentru numerele selectate

160 IF L=0 THEN LET L=INT(RND*6+1)

170 IF M=0 THEN LET M=INT(RND*6+1)

180 IF N=0 THEN LET N=INT(RND*6+1)

190 IF O=0 THEN LET O=INT(RND*6+1)

200 IF P=0 THEN LET P=INT(RND*6+1)

208 PRINT "Formatia finala este"

209 PRINT "****************************************"

210 PRINT L;M;M;O;P

211 PRINT "****************************************"

220 PRINT "CONTINUATI? pentru DA tastati 1 pentru nu 0"

230 INPUT s

240 IF s=1 THEN GOTO 5

250 END

-159-
ARIA UNUI POLIGON
10 PRINT "Calculul ariei pentru un poligon neregulat"

20 PRINT "Se incadreaza aria dorita cu un dreptunghi impartit in

patratele cu latura de o unitate"

30 PRINT "Se descrie fiecare punct din marginea poligonului prin

numarul de patratele in jos si lateral (coordonate)"

40 PRINT "Se calculeaza aria prin formula:"

50 PRINT "A=(x1+x2)*(y1-y2)/2+(x2+x3)*(y2-y3)/2+....+(xn+x1)*(yn-y1)/2"

60 PRINT "In formula n reprezinta numarul de puncte descrise iar x este

numarul de patratele in sus si y nr patratele la dreapta

pentru fiecare punct descris."

70 PRINT "Introduceti numarul de puncte descrise"

80 INPUT n

90 PRINT "Introduceti coordonatele fiecarui punct cu virgula intre ele"

95 PRINT "Prin x introduceti numarul de patratele in sus si prin y

numarul de patratele la dreapta in dreptunghiul grila"

100 FOR x=1 TO n

110 INPUT a(x),b(x)

120 NEXT x

130 PRINT "Aria de calculat este descrisa prin punctele cu coordonatele:"

140 FOR x=1 TO n

150 PRINT a(x),b(x)

160 NEXT x

170 FOR x=1 TO n-1

180 LET q=q+(a(x)+a(x+1))*(b(x)-b(x+1))

190 NEXT x

200 LET w=q+(a(n)+a(1))*(b(n)-b(1))

210 LET S=ABS(w/2)

220 PRINT "Aria poligonului este:"

230 PRINT S

240 PRINT "unitati (patratele)"

250 END

VOLUMUL BUTOIULUI

5 CLS

10 PRINT "Volumul butoiului"

15 PRINT "Daca nu se cunoaste raza se masoara perimetrul si

se imparte la 2x3,14"

20 PRINT "V=3,14xhx[d/2+2/3(D/2-d/2)]^2(^2=ridicare la patrat)"

30 PRINT "Introduceti inaltimea butoiului h= ?cm"

40 INPUT h

50 PRINT "Introduceti raza mare= ?cm"

60 INPUT R

70 PRINT "Introduceti raza mica= ?cm"

80 INPUT d

100 DEF FNV(h,R,d)=4*R*R*h*3.14/36+12*d*R*h*3.14/36+9*d*d*h*3.14/36

110 PRINT "Volumul butoiului este de ;";FNV(h,R,d);"cm cubi"

120 PRINT "sau";FNV(h,R,d)/1000;"litri"

130 END

-160-
JOC LOTO
10 PRINT "JOC LOTO"

20 PRINT "Introduceti numerele preferate de la 1 la 45"

30 PRINT "Introduceti primul numar"

40 INPUT A

50 PRINT "Introduceti al doilea numar"

60 INPUT B

70 PRINT "Introduceti al treilea numar"

80 INPUT C

90 PRINT "Introduceti al patrulea numar"

100 INPUT D

110 PRINT "Introduceti ultimul numar"

120 INPUT E

125 PRINT "Numerele alese sint:"

130 PRINT A;B;C;D;E

140 LET x=INT(RND*45+1)

150 LET y=INT(RND*45+1)

160 LET z=INT(RND*45+1)

170 LET q=INT(RND*45+1)

180 LET w=INT(RND*45+1)

190 IF x=y OR x=z OR x=q OR x=w THEN 140

200 IF y=x OR y=z OR y=q OR y=w THEN 150

210 IF z=x OR z=y OR z=q OR z=w THEN 160

220 IF q=x OR q=y OR q=z OR q=w THEN 170

230 IF w=x OR w=y OR w=z OR w=q THEN 180

235 PRINT "Numerele extrase sint"

240 PRINT x;y;z;q;w

250 IF x=A OR x=B OR x=C OR x=D OR x=E THEN LET L=x

260 IF y=A OR y=B OR y=C OR y=D OR y=E THEN LET M=y

270 IF z=A OR z=B OR z=C OR z=D OR z=E THEN LET N=z

280 IF q=A OR q=B OR q=C OR q=D OR q=E THEN LET O=q

290 IF w=A OR w=B OR w=C OR w=D OR w=E THEN LET P=w

300 PRINT "Aveti urmatoarele numere cistigatoare"

310 PRINT L;M;N;O;P

320 PRINT "Doriti sa continuati? pt DA TASTATI 1 pt NU 0"

330 INPUT K

340 IF K=1 THEN GOTO 10

350 END

EXERCITIU GRAFIC
5 CLS

10 FOR x=0 TO 6 STEP 28*36/3650

20 FOR y=0 TO 10 STEP 1/60

30 PLOT 200+150*SIN(x),200+150*COS(x)

40 PLOT 200+150*SIN(x)+50*SIN(y),200+150*COS(x)+50*COS(y)

50 NEXT y

60 NEXT x
In exercitiul de mai sus modificati pe rind valorile numerice si

observati modificarile produse in imaginea grafica.

-161-

NUMARUL DE ZILE DINTRE DOUA DATE

10 PRINT "Numarul de zile dintre doua date"

20 PRINT "Introduceti prima data"

30 PRINT "Ziua"

40 INPUT Z1

50 PRINT "Luna"

60 INPUT L1

70 PRINT "Anul"

80 INPUT A1

90 LET x=INT(365.25*A1)+30*(L1-1)+Z1

100 IF L1=2 THEN LET x=x+1

110 IF L1=3 THEN LET x=x-1

120 IF L1=6 OR L1=7 THEN LET x=x+1

130 IF L1=8 THEN LET x=x+2

140 IF L1=9 OR L1=10 THEN LET x=x+3

150 IF L1=11 OR L1=12 THEN LET x=x+4

160 PRINT "data 1=";x;"zile de la CHRISTOS"

170 PRINT "Introduceti a doua data"

180 PRINT "Ziua"

190 INPUT Z2

200 PRINT "Luna"

210 INPUT L2

220 PRINT "Anul"

230 INPUT A2

240 LET y=INT(365.25*A2)+30*(L2-1)+Z2

250 IF L2=2 THEN LET y=y+1

260 IF L2=3 THEN LET y=y-1

270 IF L2=6 OR L2=7 THEN LET y=y+1

280 IF L2=8 THEN LET y=y+2

290 IF L2=9 OR L2=10 THEN LET y=y+3

300 IF L2=11 OR L2=12 THEN LET y=y+4

310 PRINT "data 2=";y;"zile de la CHRISTOS"

320 LET N=y-x

330 PRINT "Numarul de zile dintre cele doua date (data2-data1) este="

340 PRINT N

350 PRINT "Continuati? pentru DA tastati 1"

360 INPUT q

370 IF q=1 THEN GOTO 10

380 END

CEAS ELECTRONIC

10 FOR h=0 TO 24

20 FOR m=0 TO 60

30 FOR s=0 TO 60

40 PRINT "CEAS ELECTRONIC"

50 PRINT "ora minut secunda"

60 PRINT h;TAB(5)m;TAB(10)s

70 FOR x=0 TO 750:NEXT x

80 CLS

90 NEXT s

100 NEXT m

110 NEXT h

120 GOTO 30

130 CLEAR:GOTO 10

(pentru reglarea ceasului in linia 70 se modifica 750(nr mai mic/mai mare)

Yüklə 1,91 Mb.

Dostları ilə paylaş:
1   ...   12   13   14   15   16   17   18   19   20




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin