Documente Academic
Documente Profesional
Documente Cultură
m
o
b
i
l
Simpl
precizie
SINGLE SNG 4
Pozitive 3.402823E+38 2.802597E-45
Negative -2.802597E-45 -.402823E+38
!
(7 cifre)
Dubl
precizie
DOUBLE DBL 8
Pozitive 1.79769313486231D+308
4.940656458412465D-324
Negative -4.940656458412465D-324
-1.79769313486231D+308
#
(15 cifre)
Necesit declaraii (definiii) de tip n program, implicite (impuse automat de
Qbasic), sau expliciteimpuse de utilizator prin cuvinte-cheie, prescurtri i sufixe:
1
n interiorul modulelor/structurilor de definire Type-End_Type;
2
n comenzile simple Def<prescurtare>;
3
n orice instruciune direct, prin ataare drept ultim caracter al identificatorului; au
prioritate maxim la definire i nu pot fi dispuse n structuri Type-End_Type.
i
r
u
r
i
d
e
c
a
r
a
c
t
e
r
e
ir STRING STR
4 +
nr.caract.
lungime maxim/ir: 32.767 $
D
a
t
e
l
o
g
i
c
e
Datele logiceapar doar n contextul evalurii (calculrii) unor expresii logice: acelea n
care pot apare operatori logici sau/i relaionali.
Expresiile logice apar n programe (inclusiv n proceduri i funcii):
drept condiii sau clauze legate de unele instruciuni simple sau structurate (If-
Then-Else, While-Wend, Do-Loop_Until etc);
n comenzi de atribuire pentru variabile sau constante logice n vederea utilizrii
ulterioare;
n comenzi de atribuire, intrare (Input) sau ieire (Print) respectiv prelucrare
logic (la nivel de bit) pentru variabile sau constante logice.
Limbajul Qbasic lucreaz cu numerele0 i non-zero (uzual: -1) avnd semnificaia de
valori de adevr logice fals (F) i respectiv adevrat (T)
Definiia de tip este implicit (prin context). Nu se declar explicit!
i datele logice i adresele sunt i pot fi tratate formal n programe drept date de tip
numeric, fiind desemnate prin numere ntregi.
Scoase din propriul context (i supuse operaiilor de tip matematic) i pierd caracterul
definitoriu, devenind date numerice obinuite (ntreg: INTEGER sau ntreg-lung: LONG)!!!
A
d
r
e
s
e
Sistemul lucreaz permanent n timpul
execuiei programelor (dar netransparent
pentru utilizator) cu numerereprezentnd
adrese (la primul octet alocat) ale
variabilelor i constantelor, procedurilor i
funciilor.
Numrul de adrese depinde de memoria
disponibil i modul de gestiune (prin
segmente i octei) rezultat din
conlucrarea Qbasic DOS.
La versiuni mai noi sub Windows pot apare
probleme din cauza unei gestiuni proprii a MI.
Utilizatorul areacces direct la adreseleunor entiti memorate exclusiv prin intermediul
comenzilor i funciilor-sistem specializateale limbajului Qbasic (i numai n contextul
acestora): Def_Seg, Varseg, Varptr, Call_Absolute, Peek, Poke.
* dac se depesc valorile limit, Qbasic emite mesajul de eroare Overflow.
L0.3.2 Operatori specifici tipurilor de date
Fiecare tip de dat poate fi supus prin operatori specifici - doar la operaii bine
determinate. Limbajul Qbasic dispune dup cum se observ din Tabelul nr.III.9 - de 4 seturi
de operatori n coresponden direct cu tipurile de date admise: setul matematic, relaional,
logic i setul-operatori-ir.
Tabelul nr. III.9
Operatorii matematici
1
Operatorii relaionali Operatorii logici Operatorii-ir
(operanzi numerici) ir (rar) (operanzi logici) (operanzi ir-caractere)
+ adunare = egal NOT* negaia logic + concatenare*
- scdere <> diferit AND i
=
o
p
e
r
a
t
o
r
i
i
r
e
l
a
i
o
n
a
l
i
o
p
e
r
e
a
z
c
u
c
o
d
u
l
A
S
C
I
I
a
l
c
a
r
a
c
t
e
r
u
l
u
i
i
n
i
i
a
l
!
*
*
* nmulire < mai mic OR sau
/ mprire <= mai mic sau
egal
XOR sau exclusiv
MOD
modulo
(=restul mpririi
ntregi)
> mai mare EQV echivalena
logic
\ mprire
ntreag
>= mai mare
sau egal
IMP implicaia
logic
* ir care nsumeaz (n
ordine) toate
caracterele operanzilor
implicai
^ ridicarea la
putere
: puteri fracionare
pentru radicali
* operator unar;
! toi ceilali sunt binari!
numerice logice (de adevr):
adevrat/fals
logice (de adevr):
adevrat/fals
**logice (de adevr):
adevrat/fals
l Tipul valorilor rezultate n urma operaiilor efectuate l
1
la expresii cu operanzi de diferite tipuri, toi sunt convertii de operatorii matematici (naintea
efecturii operaiilor) la tipul operandului cu cea mai mare precizie;
Tabelul nr. III.10
Tabelele de adevr ale operaiilor logice admise
de limbajul Qbasic
Operand unic Negaia
:
Operator
unar
:
x NOT x
F A
A F
Operatori binari
Operand
1
Operand
2
Suma
(SAU)
Produsul
(I)
Sau exclusiv Echivalena Implicaia
x y x OR y x AND y x XOR y x EQV y x IMP y
FALS (F) F F F F A A
ADEVRAT (A) F A F A F A
F A A F A F F
A A A A F A A
Atenie: Qbasic furnizeaz la execuia programelor valorile de adevr valide : 0 (pentru fals )
i valoare non-zero (pentru adevrat;: +1 la operaii bit cu bit, respectiv valoarea 1! la cele
relaionale).
Se atrage atenia c n cazul cifrelor care apar n context de ir-caractere, acestea nu
pot fi tratate drept numere. Nu se pot efectua operaii matematice cu astfel de valori!
174
Operaiile logice admise de Qbasic sunt definite prin intermediul tabelelor de adevr
(conform Tabelului nr. III.10) n care se evideniaz toate combinaiile posibile ale valorilor
de adevr pentru argumentele/operanzii implicate/i n acestea i rezultatul operaiilor pentru
fiecare combinaie distinct. Numrul operanzilor definete tipul operatorului. Exist astfel
operatori unari (cu 1 operand: negaia logic) i operatori binari (cu 2 operanzi: toate celelalte
operaii admise).
I mportant. Limbajul opereaz n contextul operaiilor logice cu cifrele 0 i o valoare
non-zero, avnd ns semnificaie exclusiv de valoare de adevr: fals i respectiv adevrat!
Aceste valori nu reprezint numere dar uneori pot fi supuse operaiilor matematice caz n care
i pierd apartenena la tip! n limba englez, termenii corespunztori sunt false i respectiv
true.
L0.4 Expresii
Conveniile i notaiile utilizate n continuare sunt n conformitate cu subcapitolele
III.1.5.1, 2,3.
Combinaiile valide de: valori de dat sau variabile, constante i funcii (de acelai
tip/sau compatibil, desemnate prin intermediul identificatorilor, a se vedea mai jos explicaia)
realizate cu ajutorul unor operatori la rndul lor compatibili cu tipul de dat poart denumirea
de expresii. Entitile valoare dat singular enumerate, combinate sau nu prin operatori, se
denumesc operanzi. Operatorii trebuie plasai ntre doi operanzi. Exist i excepii:
specificarea semnului unui operand la nceputul expresiilor.
Dup cum s-a specificat i despre identificatori, expresiile nu pot forma singure o
instruciune/linie de program, ci numai n combinaie cu alte cuvinte. n combinaie direct
cu un identificator, n instruciuni de atribuire, expresiile confer valoare. Expresia este
convertit la tipul de dat al entitii specificate prin identificator.
Expresiile n Qbasic trebuie discutate funcie de tipul operanzilor i operatorilor. Dac
intervin operanzi de mai multe tipuri, nota de la Tabelul nr.III.8 semnaleaz modul de
convertire n cazul operatorilor matematici.
Dac apar operatori logici n contextul unor valori numerice, operanzii sunt convertii
n ntregi, rezultatul fiind de asemenea un ntreg. Altfel, operaiile logice se efectueaz bit cu
bit!
Pe baza informaiilor din Tabelul nr. III.11 se analizeaz modul de scriere pentru ca
ordinea operaiilor de executat s fie cea corect.
L0.4.1 Expresiile numerice i formele de notare a numerelor
A. Descrierea expresiilor
n cazul expresiilor cu date numerice, ordinea de execuie a operaiilor este cea
cunoscut din algebr. Pri ale expresiilor pot fi grupate cu ajutorul parantezelor rotunde,
singurele care sunt admise. Nu se accept celelalte tipuri de paranteze, care pot fi utilizate
doar n comentarii sau ca valori pentru iruri de caractere. Pot exista paranteze imbricate
(incluse, coninute n altele de rang mai mare). Pot exista serii de paranteze imbricate,
rangurile fiind succesiv din ce n ce mai mari. Rangul cel mai mic este cel al parantezei care
conine doar operatori i operanzi.
Se reamintete c:
^ operaiile din paranteze au prioritate;
^ n cadrul unei paranteze imbricate de rang mare, se execut parantezele n
ordinea cresctoare a rangului: de la inferior la superior;
^ un ir de paranteze de acelai rang se execut n ordinea apariiilor;
^ prioritatea operatorilor ntr-un ir care nu conine paranteze este: ^ apoi * /
MOD \ i respectiv + - ;
^ un ir de operaii de aceeai prioritate se execut pas cu pas, n ordinea
apariiilor din expresie.
Probleme apar doar atunci cnd trebuie editate relaii redate iniial sub form
fracionar. Aceast form nu poate fi reprodus n program: instruciunile pot fi nscrise ntr-
un singur rnd-text! Pentru rezolvare trebuie utilizate una sau mai multe perechi de paranteze
rotunde (simple sau imbricate, dup caz).
Iat n Tabelul nr. III.11 - un exemplu simplu de scriere corect i greit a unei
astfel de relaii: cea a soluiilor x
1,2
pentru o ecuaie de gradul al II-lea unde a, b i c sunt
coeficienii puterilor (n ordine descresctoare a) lui x.
Tabelul nr. III.11
Relaie matematic editare greit editare corect
a 2
c a 4 b b
x
2
1,2
=
x1=-b+b^2-4*a*c^1/2/2*a
x2=-b+(b^2-4*a*c)^1/2/(2*a)
x1,2=-b+/-(b^2-4*a*c)^(1/2)/(2*a)
x1=(-b+(b^2-4*a*c)^(1/2))/(2*a)
x2=(-b- (b^2-4*a*c)^(1/2))/(2*a)
l nu sunt variabile cu indici! l
Pentru notaii cu indici (=caz de
variabil indexat sau masiv/
tablou) trebuie declarat anterior
dimensiunea cu comanda Dim.
x(1)=(-b+(b^2-4*a*c)^(1/2))/(2*a)
x(2)=(-b- (b^2-4*a*c)^(1/2))/(2*a)
!variabile cu indici!
n coloana din mijloc, la execuia celui de-al treilea termen pentru x1, operaiile se
execut n ordine, deci rezultatul nmulirii primilor 3 operanzi (4, a, i c) se ridic la puterea
1, rezultatul se mparte de dou ori succesiv la 2 i se nmulete cu a! Se pot evita greelile n
cazul particular pentru radicalul de ordin 2, utiliznd conform cu lecia L13.2 - funcia Sqr.
B. Forme (notaii) posibile ale numerelor n Qbasic
Valorile numerice sunt gestionate i prezentate uzual (n instruciuni i n cadrul
dialogului cu sistemul de calcul) n sistemul de numeraie zecimal. n programe, un numr n
baza zece poate fi ntlnit n forme (se spune n notaii) diferite:
^ exclusiv cu cifre zecimale (notaia zecimal simpl a valorii);
^ notaia exponenial matematic (cea obinuit); n cadrul programului se
transpune printr-o expresie_numeric_Qbasic valid; pentru una i aceeai
valoare exist mai multe forme posibile;
^ notaia/reprezentarea exponenial Qbasic cu ajutorul cifrelor i iniialelor-
exponent (E sau D, n notaie zecimal-exponenial); caracterul E se folosete
la numere de tip Single, n simpl precizie (implicit i la valori ntregi), pe
cnd D apare la numerele Double, n dubl precizie; exist o singur form de
notaie/reprezentare posibil!! Este form specific limbajului.
Sunt trei situaii distincte n care pot apare valori numerice:
ncorporate n instruciuni;
la introducerea de valori n timpul execuiei (urmare a comenzilor de intrare
de tip Input);
valori afiate/imprimate drept rezultate (se mai poate spune reprezentate) n
pagina auxiliar, urmare a comenzilor de ieire (de tip Print).
Pentru primele dou situaii n care utilizatorul editeaz valorile, se utilizeaz uzual
notaia zecimal (pentru numere ntregi Integer sau Long) i notaia exponenial obinuit
(transpus ns prin expresii valide n cazul numerelor Single sau Double). Cea de-a treia
notaie este admis, dar se comport diferit la validare.
n cazul reprezentrilor de rezultate (la ieire) programul furnizeaz o valoare. Nu se
ntlnete notaia exponenial obinuit, ci notaiile zecimal i reprezentarea specific
Qbasic. Aceast form de notaie apare (uzual) la comenzile de ieire (afiare, imprimare cu
Print sau Lprint), indiferent de situaia prin care s-a atribuit valoare entitii n cauz dac se
depete spaiul de 7 pentru Single (respectiv 15 pentru Double) cifre semnificative (exclusiv
punctul zecimal i semnul; dac semnul lipsete se mai adaug un caracter).
176
Pentru ambele notaii exponeniale, valorile mantisei sunt n general numere reale, iar
ale exponentului, ntotdeauna valori ntregi, ambele n notaie zecimal simpl.
n Tabelul nr.III.12 se prezint exemple astfel alese nct s fie relevante pentru
comportamentul expus. Se sugereaz folosirea lor n exerciii. Pentru verificare, tabelul
conine formeleechivalente care apar n cele trei situaii de utilizare. Expresiile din coloana
de mijloc sunt cele care se editeaz.
Comportamentul difereniat poate fi observat dac se efectueaz exerciii cu diferite
forme de notaie ale numerelor, prin comenzi de atribuire/introducere i apoi de afiare cu
Print (sunt vizibile cteva astfel de exerciii n Figura nr. III.29).
Tabelul nr. III.12
Notaie matematic iniial Expresie_Qbasic_validat Reprezentare_Qbasic (notaie
exponenial sau din octal/hexa)
<mantis>10
<exponent>
<mantis>*10^<exponent> <mantis>{E|D}{+|-}<exponent>
42,6510
7
0,426510
9
426510
5
42.65*10^7
0.4265*10^9
4265*10^5
4.265E+8
4.265E+8
4.265E+8
S
I
N
G
L
E
42,651238210
7
0,42651238210
9
42651238210
5
42.6512382#*10^7
0.426512382#*10^9
426512382#*10^5
4.265124E+8
4.265124E+8
4.265124E+8
7142,1423210
15
71,421423210
17
7142.14232#*10^(15)
71.4214232#*10^(17)
7.14214232D+18
7.14214232D+18
D
O
U
B
L
E
-714214,232
-71421423210
-3
-714214.232
-714214232*10^(-3)
-714214.232
-714214.232
29118481,370105281 29118481.37010528# 29118481.37010528
248,1372517425614610
13
248137,2517425614610
10
248.1372517425615#*10^13
248137.2517425615#*10^10
2.481372517425615D+16
2.481372517425615D+16
723
8
&O723 467
OCTAL
723
16
&H723 1827
HEXA
Exist posibilitatea de a lucra n cadrul programului i cu valori numerice n sistemul
de numeraie octal i respectiv hexazecimal (pe post de expresii, argumente etc). Pentru
aceasta ns trebuie folosit o notaie special, cu prefixele &O i respectiv &H, conform
formei generale de mai jos (exemplu cu operaii de atribuire):
<identificator
1
> = { [+] | - }&[O]<ir_cifre_octale>
<identificator
2
> = { [+] | - }&H<ir_cifre_hexazecimale>
Se reamintete c intervalul cifrelor octale admise cuprinde irul (0 7) iar cel al
cifrelor hexazecimale irul (0 9, a f). Notaia se utilizeaz spre exemplu n instruciuni
grafice (Paint) i la nominalizarea adreselor de porturi.
n calcule, intern, valoarea este cea din zecimal, care reapare n notaie standard la
comenzile de ieire (cu Print).
Valorile octale i hexazecimale ale unor numere zecimale pot fi vizualizate (cu Print)
numai dac se transform n iruri de caractere cu funciile Oct$ i Hex$:
<identificator
1
$> = OCT$(<expresie_zecimal>)
<identificator
2
$> = HEX$(<expresie_zecimal>)
Valorile binare se pot vizualiza n forma contractat, cea a valorilor hexazecimale,
tiindu-se c exist coresponden biunivoc ntre 4 bii (cifre) n codul natural numeric binar
i 1 cifr din sistemul hexazecimal de numeraie. n general, PC-ul furnizeaz i informaii
binare legate de sistem prin forma lor hexazecimal.
Concluzii i comentarii
Este evident c exist mai multe forme de reprezentare exponenial (matematic i
respectiv editat prin instruciuni n expresii) pentru una i aceeai valoare numeric.
Indiferent de forma editat, se poate observa c reprezentarea n notaie exponenial Qbasic
este unic.
La numerele reale n notaii zecimale simple, cifrele care depesc formatul admis
amintit mai sus nu se mai afieaz/imprim. Aceeai regul se aplic i oricrei mantise n
cazul notaiei exponentiale. Apare reprezentarea rotunjit i trunchiat a valorii numrului.
Programul va lucra ns n continuare cu valoarea real, care rmne neschimbat!
Qbasic accept i n timpul editrii forme diferite de tip reprezentare (nscriere de
valori cu E sau D). La validare ns aceasta din urm se transform (dac este cazul)
automat n cea standard, unic.
Qbasic semnaleaz nc de la editare (la validarea liniei-program) posibilitatea ca la
execuie, s apar o notaie trunchiat pentru o valoare numeric nscris: se execut
automat trunchierea i apare sufixul # la captul irului de cifre editate.
Programatorul poate impune prin instruciuni, dup dorin (n anumite limite),
modul de reprezentare printr-un format determinat de notaie n cadrul comenzii
[L]Print_Using.
L0.4.2 Expresiile ir de caractere
pot conine valori sau identificatori. O caracteristic a valorilor de acest tip este faptul c n
instruciuni acestea trebuie specificate ntre ghilimele! Sunt vizibile n stare real fr
acestea - doar dac sunt afiate/imprimate n pagina auxiliar.
A. Expresii-ir propriu-zise. La irurile de caractere, operaiile (uzuale) admise sunt
cele de concatenare. Operatorul + acioneaz similar celui aritmetic, n ordinea apariiei n
expresie a operanzilor. irul rezultat const deci din alturarea/adugarea (pas cu pas) a
tuturor valorilor-caracter a operanzilor.
Iat un exemplu simplu de concatenare cu 2 valori-ir i dou variabile indexate.
Ionescu are prenumele: + prenume$(1) + + prenume$(2)
Cea de-a doua valoare-ir este necesar ntruct semnific caracterul spaiu (gol)
fr de care cele dou prenume ar fi reprezentate contopit; valorile variabilelor trebuie
cunoscute anterior.
Parantezele se pot utiliza dar nu influeneaz rezultatul, neavndu-i rostul n astfel de
operaii.
B. Expresii-ir mixte. Expresiile cu iruri accept de asemenea i operatori logici i
relaionali. Operatorii sunt activi fa de valoarea din codul ASCII a iniialei irului specificat.
Rezultatul este o valoare de adevr i se supune regulilor i operaiilor corespunztoare
acestui tip de dat. La aceste operaii sunt admise parantezele.
Din punct de vedere formal-funcional n astfel de cazuri expresiile i pierd caracterul
exclusiv de ir fiind n esen expresii logice mixte (cu iruri). Anticipnd, sunt posibile
formele:
nume$(1) < nume$(2) (nume$(1) = nume$(2)) AND (prenume$(1) <> prenume$(1))
L0.4.3 Expresiile logice
L0.4.3.1 Expresiile logice obinuite, cu operatori logici i relaionali
Conduc la un rezultat de tip valoare de adevr. Fiecare operator al unei astfel de
expresii este ncadrat de doi operanzi. Funcie de forma operanzilor expresiile pot fi:
178
^ simple (ambii constau dintr-o singur valoare, constant, variabil sau
funcie):
nota > 4 a < b abc = SIN(alfa)
^ simplu-compuse (unul din operanzi este o entitate singular, cellalt o
expresie simpl):
a < = (b + ce^2/3) (a NOT b) <> g abc = (ro MOD ro1)
^ multiplu-compuse (ambii operanzi sunt expresii simple):
(nota > 4) AND (nota < = 10) (a OR b) XOR (c AND d)
^ simplu-imbricate (cel puin un operand este o expresie multiplu-compus);
^ multiplu-imbricate (ambii operanzi sunt expresii multiplu-compuse).
Se pot crea uor exemple de expresii imbricate.
Exemplele de la subcapitolul anterior (cu iruri de caractere) sunt expresii simple i
respectiv multiplu-compuse.
Observaii
Caracterul = din exemple este operator relaional i nu semnific atribuire,
rezultatul operaiei fiind dup cum s-a artat, o valoare de adevr.
Expresiile logice sunt indispensabile n structurile alternative (de tip If-End_If) i
repetitive (cu numr necunoscut de pai, de tip While-Wend i Do-Loop cu clauzele While|
Until) unde apar drept condiii pentru executare (sau nu!) a unor secvene de instruciuni
indicate.
Traducerea n limbajul natural a unei astfel de condiii exprimate prin expresia n
cauz const n rspunsul la ntrebarea este adevrat (ndeplinit) condiia exprimat prin
expresie?. Evaluarea expresiei dup cum se tie const dintr-un rspuns de tip adevrat
sau fals. Qbasic le gestioneaz cu valorile 1 i respectiv 0 pe cnd n schemele logice
apar cuvintele-cheie DA i respectiv NU. Programul avanseaz pe una din ramificaiile
posibile funcie de sensul cuvintelor cheie (de regula impus de acestea) din comanda n care
a fost ncorporat condiia. Spre exemplu pentru structura If-End_If cu adevrat se
execut instruciunile care urmeaz liniei care conine evaluarea (de tip If), cu fals nu se
execut aceste instruciuni ci se sare la urmtoarea instruciune a structurii cu o nou
evaluare sau la instruciunea de final.
Dac este vorba de expresii care se constituie n operanzi pentru ali operatori
relaionali/logici, se observ c acestea se ncadreaz obligatoriu n paranteze rotunde. n
cazul expresiilor imbricate i multiplu-compuse trebuie utilizate cu atenie i discernmnt
perechi de paranteze rotunde simple sau imbricate. Nu sunt acceptate alte tipuri de paranteze.
Se reamintete c rezultatul oricrei expresii este o valoare de adevr: fals (false n
englez; Qbasic opereaz real cu valoarea de adevr numeric echivalent 0) sau adevrat
(true n englez; operare cu valoarea numeric echivalent 1).
Reinnd proprietatea definitorie comun (rezultatul este ntotdeauna o valoare de
adevr) pot fi distinse ntr-o sistematizare formal mai riguroas dou subcategorii:
^ expresii logice pure cu operatori logici i operanzi logici (valori de adevr);
^ expresii relaional-logice cu operatori relaionali i operanzi numerici; n
expresii imbricate pot fi utilizate doar ca operand de rang inferior, expresia n
sine fiind operand logic pentru o eventual expresie logic pur de rang mai
mare.
n exemplele de mai sus poate fi observat fr dificultate tipologia expresiilor.