Sunteți pe pagina 1din 13

Curs 13. FOXPRO 2.6 DOS pag.

1
10.3. Variabile i masive
10.3.1. Variabile
Variabila se utilizeaz n veerea ep!zitrii unei ate n "e"!ria #al#ulat!rului $i reprezint !
z!n e "e"!rie #reia i se atribuie un nu"e %ienti&i#at!r'
(le"entele spe#i&i#e unei variabile)
numele variabilei * utilizat pentru ienti&i#are. +ipuri e nu"e e variabil)
nu"e atribuit e pr!gra"at!r,
nu"e pree&init n F!-Pr!.
valoarea variabilei * reprezint ata "e"!rat n z!na e "e"!rie a variabile. C!n.inutul
%val!area' variabile se p!ate "!i&i#a prin #!"enzi F!-Pr!.
tipul variabilei * tipul atei #e se p!ate "e"!ra n z!na e "e"!rie. +ipul eter"in #!"enzile $i
&un#.iile #e se p!t apli#a variabilei.
Crearea sau "!i&i#area variabilei se p!ate realiza prin atribuire)
<variabil>=<expresie>
+ipul variabilei este at aut!"at e tipul val!rii rezultate in evaluarea e-presiei, ini&erent e
tipul anteri!r al a#elei variabile.
Obs. Variabilele se ini.ializeaz naintea re&eririi l!r n instru#.iuni %pr!gra"e'
(-.
a/2 nu"e) a, tip) nu"eri#0 val!are) 2
1 a
2
a/2F!-Pr!3 nu"e) a, tip) $ir e #ara#tere0 val!are) F!-Pr!
1 a
F!-Pr!
a/4516516778 nu"e) a, tip) at #alenaristi#0 val!are) 51651677
1 a
51651677
O #!"an e#9ivalent atribuirii este)
STORE :e-p; +O :lista<variabile; evalueaz val!area e-presiei $i ini.ializeaz
variabilele #u val!area e-presiei e-p.
(-.
STORE 5 +O a,b,#
a, b, #
5 5 5
Distrugerea unei variabile %eliberarea "e"!riei !#upat e a#easta'
RE!E"SE :lista<variabile; istruge variabilele prezente n
lista<variabile
RE!E"SE
"!!
=>?(:"a#9eta;@(XC(P+:"a#9eta; istruge t!ate variabilele #are
#!respun respe#tiv nu #!respun
"a#9etei e sele#tare
>n "a#9eta e sele#tarea se utilizeaz #ara#terele Ail#ars) 1, B
(-.
RE!E"SE "!! =>?( aB CC nltur t!ate variabilele a #r!r nu"e n#ep #u litera a
#!E"R D== istruge printre altele,t!ate variabilele e&inite e utilizat!r
#!E"R E(EORF istrutge t!ate variabilele $i "asivele e&inite e utilizat!r
S"VE +O :&isier;
+O E(EO:#G"p "e"!;
HD== =>?(:"a#9eta;@(XC(P+:"a#9eta;I
salveaz n &i$ier sau ntr*un
#G"p "e"! t!ate variabilele
utilizat!r eventual utilizGn
"a#9eta
pag.2 Curs 13. FOXPRO 2.6 DOS
RESTORE FROE :&isier;
FROE E(EO:#G"p "e"!;
HDDD>+>V(I
restaureaz intr*un &i$ier sau
intr*un #G"p "e"!
Da# se utilizeaz #lauza DDD>+>V( variabilele e-istente n "e"!rie nu se istrug, variabilele
n!i #are se n#ar# #u R(S+OR( augGnu*se %D' #el!r e-istente, a# au nume $i%erite0 a# au
a#ela$i nu"e, se va pstra n!ua val!are a variabilei n#r#at #u R(S+OR(. Fi$ierele n #are se salveaz
val!ri e variabile v!r avea e-tensia E(E) :nu"e<&i$ier;.E(E.
(-.
S(+ +D=? OFF CC inhib dialogul FoxPro utilizator
S(+ SDF(+F OFF && inhib validarea suprascrierii fiierelor (a fiierului f_var.MEM
C=(DR D==
CLEAR && terge ecranul
a/1
b/2
su"a/aJb
a,KJK,b,K/K,su"a CCsu!a va fi "#$%&
S"VE +O &<var CCse salveaz a%"' b%$
a/L
b/3
su"a/aJb
a,KJK,b,K/K,su"a CCsu!a va fi (#&%)
RESTORE FROE &<var CCse restaureaz a%"' b%$
a,KJK,b,K/K,su"a CCsu!a va fi "#$%&
Obs. >"pli#it prin #!"ana val!ril!r nu"eri#e se a&i$eaz pe 15 spa.ii. Pentru a #!ntr!la nu"rul e
spa.ii pe #are se &a#e a&i$area se &!l!se$te #!ul e &!r"atare P>C+MR(
(-
1
.
a/ 1
a
1
a P>C+MR(K7K
1
a P>C+MR(K777K
1
&a'rosubstitu(ia N #!n.inutul unei variabile e tip $ir e #ara#tere este tratat #a nu"e al altei variabile
sau ele"ent F!-Pr!) nu"e e #G"p sau nu"e e &i$ier.
)<var>*.<exp#>+
:var; este variabila #are se substituie #!n.inutului su,
:e-pC; $ir e #ara#tere #e se va #!n#atena la s&Gr$itul $irului e #ara#tere #!n.inut e variabil.
(-.
S(+ +D=? OFF
C=(DR D==
C=(DR
a/Kvar1K
var1/K"esaO testK
Pvar1/K,var1
var1/"esaO test
Ksubstitu.ia variabilei a/K,Ca
substitu.ia variabilei a/"esaO test
1
si"b!lizeaz spa.iul liber %blanQ'
Curs 13. FOXPRO 2.6 DOS pag.3
Expresii nume ! alt "et! e re&erire inire#t a unei variabile. Pentru #a ! e-presie s &ie tratat #a
un nu"e, a#easta se va n#ara ntre paranteze r!tune.
(-.
SET +D=? OFF
#!E"R D==
#!E"R
#!OSE D==
,SE bazaate.b& CCse *ncarc baza de date bazadate.dbf' care se afl creat pe disc.
-RO.SE CCse vizualizeaz baza de date+ nu!ele i prenu!ele vor fi diferite de ,Popescu- i ,.on-
a/Knu"eK CCvariabil a crei valoare va fi nu!ele pri!ului c/!p al bazei de date
b/Kprenu"eK CCvariabil a crei valoare va fi nu!ele celui de0al doilea c/!p al bazei de date
RE/!"#E %a' R>+S PP!pes#uK CC pentru *nregistrarea curent' con1inutul c/!pului ,nu!e- devine
&&Popescu
RE/!"#E %b' R>+S P>!nK && pentru *nregistrarea curent' con1inutul c/!pului ,prenu!e- devine -.on-
-RO.SE CCse vizualizeaz baza de date+ nu!ele i prenu!ele vor fi ,Popescu- i ,.on-
#!OSE D== CCse *nchide printre altele i baza de date.
"%iarea 'on(inutului variabilelor $in memorie
01S/!"2
&E&OR2
H=>?( :"a#9et;I
H+O PR>T+(R@+O F>=(:&i$ier;I
HTO COTSO=(I
D&i$eaz pagin #u pagin variabilele
%#!n&!r" "a#9etei' a&late n "e"!rie,
pe e#ran $i 6 sau la i"pri"ant 6 &i$ier.
!1ST &E&OR2 H=>?( :"a#9et;I
H+O PR>T+(R@+O F>=(:&i$ier;I
HTO COTSO=(I
=isteaz %t!ate !at' variabilele
%#!n&!r" "a#9etei' a&late n "e"!rie,
pe e#ran $i 6 sau la i"pri"ant 6 &i$ier.
Un a&ara variabilel!r e&inite e utilizat!r, F!-Pr! utilizeaz variabilele siste" pentru #!ntr!lul
"eiului.
10.3.2. Masive
O variabil "e"!reaz la un "!"ent at ! singur val!are. Easivul p!ate n"agazina "ai "ulte
val!ri la un "!"ent at)
(-)
Variabile
Variabila X -
Easive
Virul %ve#t!rul' X -
1
-
2
W -
n
Vir #u n ele"ente
Eatri#ea X -
11
-
12
W -
1n
Eatri#e #u " linii $i n #!l!ane
-
21
-
22
W -
2n
W
-
"1
-
"2
W -
"n
0e'lararea unui masiv N etape)
stabilirea tipului "asivului) $ir sau "atri#e,
rezervarea z!nei e "e"!rare n &un#.ie e nu"rul e ele"ente
atribuirea unui nu"e "asivului.
01&E3S1O3 :"asiv1;%:e-pT1;H,:e-pT2;I'
:"asiv2;%:e-pT3;H,:e-pTX;I'W
Creaz unul sau "ai "ulte "asive
0E#!"RE :"asiv1;%:e-pT1;H,:e-pT2;I'
:"asiv2;%:e-pT3;H,:e-pTX;I'W
Creaz unul sau "ai "ulte "asive
(-.
01&E3S1O3 a%15' CC #reeaz ve#t!rul a #u rezervare pt. 15 ele"ente
pag.X Curs 13. FOXPRO 2.6 DOS
01&E3S1O3 -%2,X' CC #reeaz "atri#ea - #u rezervare pt. 2 linii $i X #!l!ane
0E#!"RE ve#%3', "at%L,15'
Obs. Parantezele r!tune p!t &i nl!#uite #u #ele ptrate. Se pre&er parantezele ptrate pentru a nu #rea
#!n&uzii #u &un#.iile.
1$enti%i'area elementelor masivelor
Virul %ve#t!rul' X -
1
-
2
-
3
X%2' ienti&i# ele"entul -
2
Eatri#ea X -
11
-
12
-
13
X%2,2' sau X%L' ienti&i# ele"entul -
22
-
21
-
22
-
23
-
31
-
32
-
33
"tribuirea $e valori elementelor masivului
=a e#lararea "asivului, ele"entele sunt e tip l!gi# #u val!area .F. Val!area $i tipul
ele"entel!r unui "asiv p!t &i "!i&i#ate prin inter"eiul !pera.iei e atribuire %!perat!rul =' sau a
#!"enzii)
STORE <expr> TO <var>4<element5masiv>
1ni(iali6area masivelor
(-.
01&E3S1O3 a%15'
STORE 5 +O a CC t!ate ele"entele "asivului v!r avea val!area 5 $i v!r &i e tip nu"eri#.
Re$imensionarea masivelor N se utilizeaz #!"enzile D>E(TS>OT $i D(C=DR(
pentru $iruri
la "rirea nu"rului e ele"ente se aaug 2la reapta3 ele"ente n!i e tip l!gi# #u
val!area .F.
la "i#$!rarea nu"rului e ele"ente se v!r $terge 2e la stGnga3 ele"entele #are sunt n
plus.
Trans%ormarea masivelor uni$imensional bi$imensional) trans&!r"area se &a#e #u
augarea sau $tergerea ele"entel!r.
Trans%ormarea masivelor bi$imensional uni$imensional) ele"entele "atri#ei se
nu"er!teaz e la 1 pGn la un nu"r egal #u nu"rul e linii n"ul.it #u nu"rul e #!l!ane. Dst&el se
preiau ele"entele e pe pri"a linie e la #!l!ana1 pGn la ulti"a #!l!an ap!i se tre#e su##esiv la liniile
ur"t!are $i se pr!#eeaz anal!g.
(-. /ro7ram pentru re$imensionarea matri'ei a89:3; <n a 83:=;
SET TALK OFF
CLEAR ALL
CLEAR
DIMENSION a(2,3)&&se creeaz !atricea a cu ele!ente de tip logic
FOR i=1 TO 6
a(i)=i &&se ini1ializeaz !atricea cu ele!entele de tip nu!eric2 "'$'&'3
ENDFOR
FOR i=1 TO 2 &&se tiprete !atricea linie cu linie
?
FOR j=1 TO 3
?? a(i,j) PICTURE ''
ENDFOR
ENDFOR
DIMENSION a(3,!)&&!atricea a se redi!ensioneaz
? ' Ma"#i$%a &'(a #%&i)%*+i,*a#%(%-%)%*"%-% *,' $#%a"% +'*" &% "i( -,.i$)/'
FOR i=1 TO 3 &&se retiprete !atricea redi!ensionat
?
Curs 13. FOXPRO 2.6 DOS pag.L
$,-,a*a=2 && variabila coloana se utilizeaz exclusiv pentru afiare estetic
FOR j=1 TO !
IF T0PE('a(i,j)')='N' && se verific tipul ele!entului ce se va tipri
?? a(i,j) PICTURE'' && ele!entele nu!erice se tipresc cu for!at
ELSE
?? a(i,j) AT $,-,a*a && ele!entele logice se tipresc la pozi1ia coloana
ENDIF
$,-,a*a=$,-,a*a1!
ENDFOR
ENDFOR
Un pr!gra"ul anteri!r s*au utilizat instru#.iunile FOR $i >F
De&ini.ie instru#.iunea >OR)
>OR :var; /:e-pT1; TO :e-pT2; HSTE/:e-pT3;I
:instru#.iuni;
HE?1TI
H!OO/I
E30>OR43E?T
>nstru#.iunea repet e-e#u.ia #!"enzil!r :instru#.iuni; e un anu"it nu"r e !ri, up #are se
trans&er #!ntr!lul pri"ei instru#.iuni #are te!reti# ur"eaz up (TDFOR sau T(X+. C!nt!rul :var;
nu"r repetrile $i ia val!ri e la :e-pT1; la :e-pT2;.
Clauza (X>+ ntrerupe repetarea $i trans&er #!ntr!lul pri"ei instru#.iuni #are te!reti# ur"eaz
up (TDFOR sau T(X+.
Clauza S+(P spe#i&i# val!area #u #are #re$te sau es#re$te val!area #!nt!rului la &ie#are
repetare.
Clauza =OOP p!ate &i plasat !riune ntre FOR $i (TDFOR. >nstru#.iunile #uprinse ntre
=OOP $i (TDFOR nu v!r "ai &i e-e#utate t!tu$i #!nt!rul va #re$te 6 es#re$te #a $i #u" (TDFOR ar
&i &!st e-e#utat.
De&ini.ie instru#.iunea 1>)
1> :#!ni.ie;
:instru#.iune1;
H(=S(
:instru#.iune2;I
(TD>F
Per"ite e-e#utarea #!ni.i!nat. Se e-e#ut setul e instru#.iuni1 sau setul e instru#.iuni2, n
&un#.ie e val!area e aevr a #!ni.iei %e-presie l!gi#', up #are se trans&er #!ntr!lul pri"ei
instru#.iuni #are te!reti# ur"eaz up (TD>F. Da# #!ni.ia este aevrat se e-e#ut
:instru#.iune1; iar a# #!ni.ia este &als se e-e#ut :instru#.iune2;. (=S( p!ate lipsi, #az n #are
a# #!ni.ia este &als nu se va e-e#uta ni"i#.
>un'(ii re%eritoare la prelu'rarea masivelor
"!E3 %:"asiv; H,:e-pT;I' Returneaz nu"rul ele"entel!r, liniil!r sau
#!l!anel!r unui "asiv, n &un#.ie e val!area e-pT.
:"asiv; * nu"ele "asivului
a# :e-pT; este)
5 N se returneaz nu"rul e ele"ente ale "asivului0
1 N se returneaz nu"rul e linii ale "atri#ei sau nu"rul e ele"ente pentru $iruri0
2 N se returneaz nu"rul e #!l!ane ale "atri#ei sau 5 pentru $iruri0
"13S %:"asiv; ,:e-pT;H,2I' >nsereaz un ele"ent, rGn sau #!l!an ntr*un
"asiv.
Pentru $iruri &un#.ia insereaz un n!u ele"ent la p!zi.ia :e-pT; a $irului :"asiv;0
pag.6 Curs 13. FOXPRO 2.6 DOS
Pentru "atri#i)
insereaz linia :e-pT; n "atri#ea :"asiv; #Gn lipse$te para"etrul 20
insereaz #!l!ana :e-pT; n "atri#ea :"asiv; #Gn para"etrul 2 este prezent.
"0E! %:"asiv; ,:e-pT;H,2I' Vterge un ele"ent, rGn sau #!l!an intr*un
"asiv n "! ase"nt!r &un#.iei DD(=
"E!E&E3
T
%:"asiv; ,:e-pT1;H,:e-pT2;I' Returneaz p!zi.ia %spe#i&i#at printr*un singur
ini#e' unui ele"ent al "asivului #Gn se
#un!a$te linia %$i #!l!ana'
:"asiv; * $ir sau "atri#e
:e-pT1; * nu"rul e linie al ele"entului0
:e-pT2; * nu"rul e #!l!an al ele"entului0
Pentru a eter"ina p!zi.ia unui ele"ent, utilizGn un singur ini#e se utilizeaz &un#.ia)
"S,-S#R1
/T
%:"asiv; ,:e-pT1;,:e-pT2;' Returneaz linia $i #!l!ana unui ele"ent al
"asivului #Gn se #un!a$te p!zi.ia %spe#i&i#at
printr*un singur ini#e'
:"asiv; * $ir sau "atri#e
:e-pT1; * p!zi.ia ele"entului n tabl!u %spe#i&i#at printr*un singur ini#e'
:e-pT2; * eter"in tipul in&!r"a.iei returnate)
:e-pT2;/1) &un#.ia returneaz linia ele"entului0
:e-pT2;/2) &un#.ia returneaz #!l!ana ele"entului.
(-. "asivul e&init prin D>E(TS>OT a H3,3I
P!zi.ia ele"entului
spe#i&i#at prin 2 ini#i %linie,
#!l!an'
P!zi.ia ele"entului
spe#i&i#at printr*un ini#e
Pentru ele"entul "ar#at,
Mr"t!arele re&eriri sunt
(#9ivalente)
a
11
a
12
a
13
a
1
a
2
a
3
aHYI
aH3,1I
aHD(=(E(T+%a,3,1'I
a
21
a
22
a
23
a
X
a
L
a
6
a
31
a
32
a
33
a
Y
a
Z
a
7
aHDSM[SCR>P+ %a,Y,1',
DSM[SCR>P+ %a,Y,2'I
#opierea elementelor $intr@un masiv <n alt masiv
"#O/
2
%:"asiv1;,:"asiv2;H,:e-pT1;
H,:e-pT2;'H,:e-pT3;'III'
C!piaz :e-pT2; ele"ente in :"asiv1; n#epGn
e la p!zi.ia :e-pT1; n :"asiv2; n#epGn e la
p!zi.ia :e-pT3;
:e-pT1; * i"pli#it are val!area 1
:e-pT2; * i"pli#it are val!area N1) se #!piaz t!ate ele"ntelr :"asiv1; n#epGn e la p!zi.ia
:e-pT2; $i pGn la s&Gr$it.
Da# :"asiv2; nu este #reat a#esta se va #rea n &un#.ie e nu"rul ele"entel!r #!piate.
"01R %:"asiv; H,:e-pC1; H,:e-pC2;II' Un#ar# n "asivul :"asiv; in&!r"a.ii espre
ire#t!rul #urent %returneaz rezultat nu"eri#'
:e-pC1; * #alea sau "a#9eta %se &!l!ses# B, 1' pentru &i$ierele #are se v!r #uta0
:e-pC2; * spe#i&i#area atributel!r &i$ierel!r #e se v!r #uta D N ar#9ive, S N 9ien %as#uns', R NRea
Onl\ , S N s\ste" , D N ire#t!r\.
(-.
DD>R %in&!,KB.prgK, PRK' N n "asivul in&! se n#ar# nu"rul pr!gra"el!r F!-Pr!, in#lusiv #ele #u
rept nu"ai e #itire, in ire#t!rul #urent.
">1E!0S %:"asiv; ' Un#ar# n "asivul :"asiv; stru#tura tabele in z!na #urent
Un#r#area se realizeaz ast&el)
Curs 13. FOXPRO 2.6 DOS pag.Y
Coloana Coninut Tip
1 Tu"e #G"p Vir e #ara#tere
2 +ip #G"p Vir e #ara#tere
3 =ungi"e #G"p Tu"eri#
X Tu"r ze#i"ale Tu"eri#
#utarea unei expresii <ntr@un masiv
"S#"3 %:"asiv;, :e-p;, H,:e-pT1;H,:e-pT2;II'
:"asiv; * ese"neaz "asivul n #are se #aut e-presia :e-p;. Fun#.ia returneaz p!zi.ia n #are s*a
gsit a#est e-presie sau val!area 5 #Gn e-presia nu a &!st gsit.
:e-pT1; * eter"in #utarea e p!zi.ia e-pT10
:e-pT2; * spe#i&i# nu"rul e ele"ente #are v!r &i testate0
Sortarea elementelor <ntr@un masiv
"SO
RT
%:"asiv; H,:e-pT1;H,:e-pT2;H,:e-pT3;III' S!rteaz ele"entele "asivului n !rine
#res#t!are sau es#res#t!are.
Pentru s!rtarea $iruril!r)
:e-pT1; * eter"in ele"entul e une va n#epe s!rtarea
Pentru s!rtarea "atri#el!r)
s!rtarea n#epe e la linia pe #are se gse$te ele"entul :e-pT1;
Eatri#ele se s!rteaz se s!rteaz ast&el) se !r!neaz liniile up val!area #res#t!are sau
es#res#t!are a ele"entel!r e pe #!l!ana ele"entului :e-pT1;.
:e-pT2; * spe#i&i# nu"rul e ele"ente %$iruri' sau nu"rul e linii %"atri#i' s!rtate. >"pli#it se
s!rteaz t!ate ele"entele n#epGn e la p!zi.ia %linia' :e-pT1; %:e-pT2 ;/ N1 sau lipse$te'
:e-pT3; * eter"in !rinea s!rtrii, ast&el)
#res#t!are a# :e-pT3;/5 sau lipse$te0
es#res#t!are a# are !ri#e val!are i&erit e 5.
(-. pentru "atri#ea e&init D>E(TS>OT aH3,3I se apli# &un#.ia DSOR+%a,2'
=inia1 a
11
a
12
a
13
=inia2 a
21
a
22
a
23
=inia3 a
31
a
32
a
33
Se v!r s!rta #res#t!r liniile 1, 2, 3 n &un#.ie e val!area ele"entel!r e pe #!l!ana a !ua.
(-e"plu e pr!gra" #are #al#uleaz salariile pers!nalului unei unit.i, utilizGn "asive. Pentru
n"agazinarea atel!r se utilizeaz "atri#ea a #u n linii %n/nu"rul angaOa.il!r' $i patru #!l!ane, ast&el)
#!l!ana 1 N Tu"ele $i prenu"ele angaOatului %se #ite$te e la tastatur'0
#!l!ana 2 N Tu"rul e !re lu#rate %se #ite$te e la tastatur'0
#!l!ana 3 N Salariul !rar %se #ite$te e la tastatur'0
#!l!ana X N Salariul !b.inut) se #al#uleaz prin n"ul.irea, pentru &ie#are angaOat a !rel!r lu#rate, #u
salariul !rar.
SET TALK OFF
CLEAR ALL
CLEAR
INPUT 'Da"i *')a#'- a*.aja"i-,#/ ' TO *
DECLARE a(*,!)
FOR i=1 TO * && pentru fiecare anga4at3
?'A*.aja"'-',i && 3se afieaz nu!ele' apoi3
ACCEPT ' *')%-%/' TO a(i,1)&& 3se atribuie ele!entelor unui anga4at3
INPUT ' ,#% -'$#a"%/' TO a(i,2)&& 3o valoare introdus3
INPUT '#%"#i2'"ia ,#a#a/' TO a(i,3) && 3de la tastatur.
a(i,!)=a(i,2)3a(i,3)&& se calculeaz valoarea salariului ob1inut
pag.Z Curs 13. FOXPRO 2.6 DOS
ENDFOR
CLEAR
? 'Sa-a#ii ,2"i*'"%/'
4 2,5 TO 2,21 && se traseaz un chenar cu l1i!ea 5 %(o linie pentru aspect
FOR i=1 TO * && pentru fiecare anga4at se repet 3
? a(i,1), a(i,!) AT 26 PICTURE ',' && 3afiarea nu!e salariu
IF MOD(i,17)=6 && pe ecran *ncap ") anga4a1i+ dac sunt !ai !ult de ") 3
8AIT 'P%*"#' $,*"i*'a#% a(a+a"i , "a+"a 9'&& 3se continu listarea
4 3,6 CLEAR TO 26,: && se terge afiarea pri!ilor ") anga4a1i
ENDIF
ENDFOR
An a'est pro7ram s@au utili6at 'omen6ileB
"##
E/T
H:e-pC;I +O :var; St!#9eaz un $ir e #ara#tere n variabila sau ele"entul e "asiv
:var;. :e-pC; N un $ir e #ara#tere #e va &i a&i$at la intr!u#ere.
13/,
T
H:e-pC;I +O :var; St!#9eaz ! val!are nu"eri# n variabila sau ele"entul e "asiv
:var;. :e-pC; N un $ir e #ara#tere #e va &i a&i$at la intr!u#ere.
10.3.3. Introu!erea valorilor pentru variabilele e "e"orie #ele"ente "asiv$
(-e"plu e pr!gra" pentru #itirea $i a&i$area val!rii variabilei a
CLEAR
CLEAR ALL
SET ESCAPE OFF &&dezactiveaz *ntreruperea progra!ului prin ac1ionarea Esc
4 2,2 SA0 'I*"#,&'$%#%/' && afiarea expresiei la linia i coloana specificat
4 2,1! ;ET a SI<E 1,3 DEFAULT ' ' && creaz o regiune de editare a variabilei a
READ && citete valoarea pentru variabila a introdus *n regiunea de editare
4 !,2 SA0 'S=a i*"#,&'+/' && afiarea expresiei la linia i coloana specificat
4 !,15 ;ET a && editarea (afiarea valorii a la linia i coloana specificat
8AIT 8INDO8 'A(a+a , "a+"a 9' && oprete execu1ia progra!ului p/n la ac1ionarea
&& unei taste+ !esa4ul este afiat *n fereastr.
CLEAR
8AIT 8INDO8 'P#,.#a) "%#)i*a" 9' NO8AIT
SET ESCAPE ON && dezactiveaz *ntreruperea progra!ului prin ac1ionarea Esc
An pro7ramul anterior s@au utili6at 'omen6ile C D S"2: C D EET i RE"0B
C rFn$: 'oloan
S"2
:e-p; HP>C+MR( :e-pC1;I HFMTC+>OT :e-pC2;I HS>](
:e-pT1;,:e-pT2;I HCO=OR SCS(E( :e-pT3;@CO=OR :#ul!are;I
C!"ana a&i$eaz e-presia !rit la l!#a.ia spe#i&i#at e rGn $i #!l!an. Da# S(+ D(V>C(
este setat +O SCR((T, e-presia apare pe e#ran0 a# S(+ D(V>C( este setat +O PR>T+(R,
e-presia apare la i"pri"ant0
Clauzele P>C+MR( $i FMTC+>OT sunt utilizate sunt utilizate pentru #!ntr!lul "!ului e
a&i$are 6 i"pri"are a e-presiei :e-p;. C!urile FMTC+>OT p!t &i in#luse n #lauza P>C+MR( #az n
#are #!ul va n#epe #u si"b!lul ^.
#o$uri $e %ormatare %olosite 'u 'lau6a >,3#T1O3 pentru 'oman$a CDS"2
-
aliniaz la stGnga atele nu"eri#e n regiunea e a&i$are
#
a&i$eaz CR %#reit' up un nu"r p!zitiv
0
a&i$eaz ata n &!r"atul #urent S(+ DD+(
E
a&i$eaz ata n &!r"atul [R>+>SS
?
a&i$eaz D[ %ebit' up un nu"r negativ
Curs 13. FOXPRO 2.6 DOS pag.7
G
a&i$eaz zer!urile #a blan#*uri
H
#!nverte$te #ara#terele al&abeti#e n "aOus#ule
8
n#areaz nu"erele negative ntre paranteze
I
a&i$eaz atele nu"eri#e n &!r"at $tiin.i&i#
J
a&i$eaz atele n &!r"atul "!netar %si"b!lul "!neei apare naintea sau up val!area
#G"pului, n &un#.ie e setarea #urent S(+ CMRR(TCF'
#o$uri $e %ormatare %olosite 'u 'lau6a /1#T,RE pentru 'oman$a CDS"2
?
per"ite !ri#e #ara#tere
2
per"ite nu"ai val!rile l!gi#e F, \, T, n
H
#!nverte$te #ara#terele "i#i n "aOus#ule
8
n#areaz nu"erele negative ntre paranteze
J
a&i$eaz atele n &!r"atul "!netar %si"b!lul "!neei apare naintea sau up val!area
#G"pului, n &un#.ie e setarea #urent S(+ CMRR(TCF'
K
asteris#urile sunt a&i$ate n &a.a val!ril!r nu"eri#e
.
spe#i&i# p!zi.ia virgulei ze#i"ale
:
separ partea nu"eri# ntreag n grupe e #Gte trei #i&re
Clauza S>]( per"ite #!ntr!larea lungi"ii $i a l.i"ii regiunii e a&i$are sau i"pri"are
Clauzele CO=OR SCS(E( $i CO=OR per"it spe#i&i#area #ul!ril!r !rite la a&i$are.
Obs. C!"enzile ^ W SDF $i ^ W _(+ se p!t #!"bina ntr*! singur #!"an.
C rFn$: 'oloan
EET
:var;@:#G"p; HFMTC+>OT :e-pC1;I HP>C+MR( :e-pC2;I HD(FDM=+
:e-p1;I H(TD[=(@D>SD[=(I HE(SSD_(:e-pC3;I HHOP(TI
R>TDOR :nu"e<&ereastr;I HRDT_( H:e-p2;I H,:e-p3;II HS>](
:e-pT1;,:e-pT2;I HVD=>D :e-p=1;@:e-pT3; H(RROR :e-pCX;II
HRS(T:e-p=2;I HCO=ORSCS(E( :e-pT3;@CO=OR :#ul!are;I
C!"ana #reeaz ! regiune e eitare %intr!u#ere e la tastatur' a val!rii)
unei variabile e "e"!rie,
unui ele"ent e "asiv,
unui #G"p al tabelei %b&' a#tive.
=a #rearea unei regiuni e eitare se p!t in#lue #lauzele FMTC+>OT, P>C+MR( sau a"bele
e!at, pentru a #rea ! "as# e eitare.
Clauzele P>C+MR( $i FMTC+>OT sunt utilizate sunt utilizate pentru #!ntr!lul "!ului e
eitare a variabilei :var;@:#G"p;. C!urile FMTC+>OT p!t &i in#luse n #lauza P>C+MR( #az n #are
#!ul va n#epe #u si"b!lul ^.
#o$uri $e %ormatare %olosite 'u 'lau6a >,3#T1O3 pentru 'oman$a CDEET
"
per"ite nu"ai #ara#tere al&abeti#e &r spa.ii sau si"b!luri
-
aliniaz la stGnga atele nu"eri#e n #G"pul e eitare
0
a&i$eaz ata n &!r"atul #urent S(+ DD+(
E
a&i$eaz ata n &!r"atul [R>+>SS
1
#entreaz te-tul ntr*un #G"p
L
aliniaz la reapta te-tul n regiunea e eitare
M
se sele#teaz ntreaga regiune e eitare #Gn #urs!rul este "utat n a#el #G"p
!
a&i$eaz zer!urile e la n#eputil unui #G"p
&<list>
#reaz !p.iuni "ultiple preset
R
a&i$eaz ! "as# &!r"at n regiunea e eitare %#ara#terele e "as#are nu sunt
pag.15 Curs 13. FOXPRO 2.6 DOS
"e"!rate n variabil 6 #G"p la prsirea regiunii e eitare.
S<n>
liniteaz regiunea e eitare la n #ara#tere.
T
eli"in spa.iile ini.iale $i &inale in variabil 6 #G"p
G
a&i$eaz zer!urile #a blan#*uri
H
#!nverte$te #ara#terele al&abeti#e n "aOus#ule
I
a&i$eaz atele nu"eri#e n &!r"at $tiin.i&i#
J
a&i$eaz atele n &!r"atul "!netar %si"b!lul "!neei apare naintea sau up val!area
#G"pului, n &un#.ie e setarea #urent S(+ CMRR(TCF'
#o$uri $e %ormatare %olosite 'u 'lau6a /1#T,RE pentru 'oman$a CDEET
"
per"ite nu"ai #ara#tere al&abeti#e
!
per"ite nu"ai ate l!gi#e
3
per"ite nu"ai litere $i #i&re
2
per"ite nu"ai val!rile l!gi#e F, \, T, n. C!nverte$te \ $i n la F respe#tiv T
N
per"ite nu"ai #i&re n ate #ara#ter0 per"ite #i&re $i se"ne n ate nu"eri#e
O
per"ite #i&re, blan#*uri $i si"b!luri
H
#!nverte$te #ara#terele "i#i n "aOus#ule
J
a&i$eaz atele n &!r"atul "!netar %si"b!lul "!neei apare naintea sau up val!area
#G"pului, n &un#.ie e setarea #urent S(+ CMRR(TCF'
K
asteris#urile sunt a&i$ate n &a.a val!ril!r nu"eri#e
.
spe#i&i# p!zi.ia virgulei ze#i"ale
:
separ partea nu"eri# ntreag n grupe e #Gte trei #i&re
Da# pentru regiunea e eitare se spe#i&i# ! variabil #are nu e-ist, ea se #reeaz $i
ini.ializeaz aut!"at %nu $i pentru "asive `' prin in#luerea #lauzei D(FDM=+. Clauza D(FDM=+ este
ign!rat a# variabila e-ist eOa sau s*a spe#i&i#at :#G"p;.
Clauza D>SD[=( previne a##esul la regiunea e eitare. D##esul se per"ite prin #!"ana #u
spe#i&i#area ^ W _(+ W (TD[=(
(-presia #ara#ter a #lauzei E(SSD_( este a&i$at #Gn regiunea e eitare este sele#tat.
EesaOul este #entrat pe ulti"a linie a e#ranului, anulGn !ri#e e-presie S(+ E(SSD_(.
Clauza R>TDOR se in#lue a# se !re$te eitarea ntr*! &ereastr e&init e utilizat!r.
Da# este in#lus #lauza OP(T &ereastra e eitare a unui #G"p E(EO este aut!"at es#9is
atun#i #Gn se ntGlne$te #!"enzile R(DD sau R(DD CFC=(.
Clauza RDT_( pre#izeaz val!rile a##eptabile pentru ate e tip #ara#ter, nu"eri# sau at
#alenaristi#.
Clauza VD=>D per"ite valiarea intr!u#erii atun#i #Gn se prse$te regiunea e eitare.
Regiunea e eitare se prse$te a#.i!nGn (nter, sgeat reapta, +ab , #!"pletarea lungi"ii "a-i"e a
z!nei e eitare sau (s#.
Clauza (RROR per"ite spe#i&i#area unui "esaO e er!are a&i$at atun#i #Gn #lauza VD=>D
returneaz val!area &alse %intr!u#erea nu este valiat'.
Clauza RS(T per"ite sau "piei# a##esul la regiunea e eitare n &un#.ie e val!area e
aevr a e-presiei l!gi#e :e-p=2;
Clauza CO=OR SCS(E(@CO=OR per"it setarea #ul!rii regiunii e eitare.
RE"0 HCFC=(I HDC+>VD+(:e-p=1;I HD(DC+>VD+(:e-p=2;I HEODD=I
HR>+S:lista<tiltluri<&erestre;I HSSOR:e-p=3;I HVD=>D:e-p=X;@:e-pT1;I
HRS(T:e-p=L;I HO[a(C+:e-pT2;I H+>E(OM+:e-pT3;I HSDV(I
HTOEOMS(I H=OC?@TO=OC?I HCO=OR:#ul!are; @ CO=ORSCS(E(
:e-pTX;I
C!"ana a#tiveaz !bie#tele #reate #u ^W_(+ $i ^W (D>+.
Curs 13. FOXPRO 2.6 DOS pag.11
Clauza CFC=( eter"in #a la a#.iunile e prsire a #G"pului e eitare %(nter, sgeat
reapta, +ab , #!"pletarea lungi"ii "a-i"e a z!nei e eitare' #urs!rul s r"Gn n #!ntinuare n z!na
e eitare, !&erin p!sibilitatea reeitrii %#!re#trii' atel!r. Da# sunt e&inite prin ^W _(+ "ai
"ulte #G"puri e eitare, eplasarea e la un #G"p la altul se realizeaz prin a#.i!narea +ab, S9i&t*+ab
sgeat ire#.i!nal sus sau O!s. Un a#est #az prsire z!nei e eitare se realizeaz prin a#.i!narea)
tastei (s# %a# nu este in9ibat prin S(+ (SCDP( OFF' ,
#!"bina.iei :Ctrl*R;,
utilizarea #lauzel!r C=(DR R(DD sau +>E(OM+,
a#tivarea ele"entel!r pentru #!ntr!lul ie$irii in R(DD.
Clauza EODD= "piei# a#tivarea &erestrel!r e eitare, #u e-#ep.ia &erestrel!r i"pli#ate n
R(DD.
Clauza R>+S li"iteaz a##esul la !ar la &erestrele in#luse n :lista<tiltluri<&erestre;.
Clauza VD=>D este evaluat #Gn se n#ear# ie$irea in R(DD*ul #urent sau #Gn #!"ana
R(DD este ntGlnit &r ! #!"an ^W_(+ anteri!ar.
Clauza RS(T eter"in e-e#u.ia #!"enzii R(DD n &un#.ie e val!area e aevr a :e-p=L;
Clauza O[a(C+ eter"in !bie#tul %#u nu"rul :e-pT2;' #are va &i sele#tat ini.ial. Obie#tele
pri"es# nu"rul e !rine n &un#.ie e !rinea #rerii l!r.
Clauza +>E(OM+ eter"in #Gt ti"p #!"ana R(DD a$teapt intr!u#erea atel!r n z!na e
eitare #reat #u ^ W _(+. :e-pT3; ini# nu"rul e se#une e a$teptare.
Clauza SDV( eter"in salvarea e&ini.iil!r !bie#tel!r.
Clauza TOEOMS( "piei# sele#tarea !bie#tel!r #u "!use*ul .
Clauza =OC?@TO=OC? spe#i&i# a# ! nregistrare este sau nu pr!teOat la s#riere n ti"pul
e-e#utrii #!"enzii R(DD. Se utilizeaz pentru lu#rul n re.ea une "ai "ul.i utilizat!ri p!t a##esa
si"ultan a#eea$i nregistrare a unei baze e ate.
Clauza CO=OR SCS(E(@CO=OR per"it setarea #ul!rii regiunii e eitare ^W_(+ #urente.
Exemplu $e pro7ram utili6at pentru intro$u'erea valorilor variabilelor $e memorie.
CLEAR
CLEAR ALL
SET TALK OFF
DEFINE 8INDO8 i*"#,&'$%#% FROM 6,1! TO 1!,65 >
TITLE 'F%#%a+"#a &% i*"#,&'$%#%' FLOAT S?ADO8 S0STEM COLOR SC?EME 7
ACTI@ATE 8INDO8 i*"#,&'$%#%
4 2,2 SA0 'N')%/'
4 !,2 SA0 'P#%*')%/'
4 2,16 ;ET N')% SI<E 1,2! DEFAULT ''
4 !,16 ;ET P#%*')% SI<E 1,2! DEFAULT ''
4 6,1! ;ET 2'",* FUNCTION '3?N A?ABR%*'*">A9ABA$$%("' >
SI<E 1,,2 DEFAULT '' @ALID iesire()
READ C0CLE
RELEASE 8INDO8 i*"#,&'$%#%
? ALLTRIM(N')%) 1 ' '1 ALLTRIM (P#%*')%)
FUNCTION iesire
DO CASE
CASE 2'",* = 'R%*'*"'
N')% = SPACE(16)
P#%*')% = SPACE(16)
CCURODE = 1
S?O8 ;ETS
8AIT 8INDO8 'I*"#,&' &i* *,'' NO8AIT
CASE 2'",* = 'A$$%("'
CLEAR READ
8AIT 8INDO8 'I*"#,&'$%#% $,)(-%"a' NO8AIT
ENDCASE
pag.12 Curs 13. FOXPRO 2.6 DOS
T!utate a#estui pr!gra" #!nst n utilizarea)
&erestrei e eitare e&init e utilizat!r D(F>T( R>TDOR intr!u#ereW
#lauzei CFC=( a #!"enzii R(DD. >e$irea in R(DD, n a#est #az se realizeaz prin
a#.i!narea ele"entului e #!ntr!l %$e'lanator' #u 2 p!zi.ii 2Renun.3 6 2D##ept3 prin
#!"ana ^ W _(+ but!n W. Da# se a#.i!neaz 2Renun.3 intr!u#erile se rea#tualizeaz
#u spa.ii libere %blan#' ur"Gn reintr!u#erea %#!re#tarea' val!ril!r. Da# se a#.i!neaz
2D##ept3 variabilele pri"es# val!rile intr!use,
a instru#.iunii DO CDS(
&un#.iei 2ie$ire3 e&inite e utilizat!r prin FMTC+>OT ie$ire %z!na "ar#at #u albastru'.
Fun#.ia este utilizat ast&el) #!"ana ^ W _(+ buton, la #lauza VD=>D veri&i# prin apelul
&un#.iei ieire8 ;: #e e#lan$at!r s*a a#.i!nat. =a apelul &un#.iei #!ntr!lul e-e#u.iei
pr!gra"ului este trans&erat n z!na e e&inire a &un#.iei %z!na albastr'. Di#i prin
instru#.iunea DO CDS( se realizeaz)
reeitarea %#!re#tarea' z!nel!r e&inite prin ^ W _(+. %e!are#e se utilizeaz #lauza
CFC=( pentru #!"ana R(DD, z!nele e eitare nu p!t &i prsite #!nven.i!nal'. 3.
Prin <CMRO[a/1 se tri"ite la reeitarea pri"ei z!ne e eitare e&inite prin ^ W _(+
nu"e. Val!rile ns#rise n z!na e eitare se reini.ializeaz #u blan#*uri prin
%u"e/SPDC(%15', &renu"e/SPDC(%15'. Se a&i$eaz &ereastra "esaO 2>ntr!u in
n!u3.
prsirea z!nei e eitare, a# s*a a#.i!nat but!nul D##ept, prin #!"ana C=(DR
R(DD $i a&i$area "esaOului 2>ntr!u#ere #!"plet 2
Un #!n#luzie intr!u#erea ia s&Gr$it nu"ai la a#.i!narea e#lan$at!rului 2D##ept3 at!rit
prezen.ei instru#.iunii C=(DR R(DD
An pro7ramul anterior s@au utili6at 'omen6ile 0E>13E: "#T1V"TE: RE!E"SE: 0O #"SE:
pre'um i %un'(ia ieire $e%init $e utili6ator utili6Fn$ 'oman$a >,3#T1O3
2
8 ;B
0E>13E
.130O.
:nu"e<&ereastr1; FROE :r1, #1; +O :r2,#2; H>THR>TDORI
:nu"e<&ereastr2;@>T SCR((TI HFOO+(R :e-pC1;I H+>+=( :e-pC2;I
HDOM[=( @ PDT(= @ TOT( @ SFS+(E @ :#ara#ter DSC>>;I HC=OS( @
TOC=OS(I HF=OD+ @ TOF=OD+I H_ROR@TO_RORI HE>T>E>](I
HSSDDORI H]OOE @ TO]OOEI HF>== :e-pC3;I HCO=OR:#ul!are; @
CO=ORSCS(E(:e-pTX;I
C!"ana e&ine$te ! &ereastr ast&el)
:r1,#1;, :r2,#2; e&ines# #!l.ul stGnga sus $i reapta O!s a z!nei e e&inire a &erestrei
%rGn, #!l!an'0
"arginea &erestrei p!ate &i ubl %DOM[=(', p!ate lipsi %TOT(' et#.
Clauza >T R>TDOR@>T SCR((T plaseaz &ereastra ntr*! &ereastr spe#i&i#at sau pe
e#ranul F!-Pr!0
Clauza FOO+(R per"ite apli#area te-tului :e-pC1; n partea e O!s a &erestrei0
Clauza +>+=( per"ite apli#area te-tului :e-pC1; n partea e sus a &erestrei0
Clauza C=OS(@TOC=OS( per"ite 6 in9ib n#9ierea &erestrei0
Clauza F=OD+@TOF=OD+ per"ite 6 in9ib "utarea &erestrei0
Clauza _ROR@TO_ROR per"ite 6 in9ib rei"ensi!narea &erestrei0
Clauza F>== per"ite u"plerea &unalului &erestrei #u #ara#terul :e-pC3;
"#T1V"TE
.130O.
H:nu"e<&ereastr1;H,:nu"e<&ereastr2;II
"#T1V"TE
.130O. "!!
H>THR>TDORI :nu"e<&ereastr3; @SCR((TI H[O++OE @ +OP @ SDE(I
HTOSSORI
2
a nu se #!n&una #u #!ul e &!r"atare FMTC+>OT `
Curs 13. FOXPRO 2.6 DOS pag.13
C!"enzile a&i$eaz $i a#tiveaz ! &ereastr e&init n prealabil #u D(F>T( R>TDOR.
Clauzele [O++OE@+OP@SDE( per"it spe#i&i#area p!zi.iei e a&i$are a &erestrei %n &a.a tutur!r
&erestrel!r 6 n &a.a tutur!r &erestrel!r 6 &r e&e#t'. O &ereastr apare n &a. i"pli#it atun#i #Gn este
sele#tat $i evine a#tiv.
RE!E"SE R>TDOR H:list<&erestre;
C!"ana $terge in "e"!rie &erestrele spe#i&i#ate n list<&erestre
0O #"SE CDS( :e-p=1;
:instru#.iuni1;
HCDS( :e-p=2;
:instru#.iuni2;I
W
HO+S(RR>S(I
:instru#.iuniT;
(TDCDS(
>nstru#.iunea sele#teaz $i e-e#ut grupul e instru#.iuni #are #!respun #!ni.iei e-p= #u
val!are 2true3 %aevrat'. Da# ! e-p= este gsit aevrat instru#.iunile #!respunzt!are #el!rlalte
e-p= $i O+S(RR>S( sunt ign!rate up se tre#e la e-e#u.ia instru#.iunii #are ur"eaz te!reti# up
(TDCDS(.. Da# ni#i ! e-p= nu este aevrat se v!r e-e#uta instru#.iunile #!respunzt!are
O+S(RR>S( %alt&el'0 n a#est #az a# ni#i O+S(RR>S( nu este prezent se tre#e ire#t la e-e#u.ia
instru#.iunii #are ur"eaz te!reti# up (TDCDS(.
>,3#T1O
3
:nu"e; >enti&i# %es#rie' ! &un#.ie e&init e utilizat!r sub nu"ele :nu"e;.
Fun#.ia se p!ate apela prin spe#i&i#area nu"elui ei ur"at e para"etri
&un#.iei ntre paranteze r!tune, a# e-ist, a# nu nu"ai e paranteze
CMPR>TS
10.3. Variabile i masive 1
10.3.1. Variabile 1
15.3.2. Masive 3
15.3.3. Introu!erea valorilor pentru variabilele e "e"orie #ele"ente "asiv$ Z

S-ar putea să vă placă și