CATEGORII DOCUMENTE |
SUBPROGRAME
ORGANIZAREA fisierelor program
Proceduri si functii definite de utilizator
DO - poate fi folosita si in interiorul unui program =>modularizarea programelor complexe (de dimensiuni mari) Grupuri de instructiuni pot fi folosite independent (separate de programul principal). Comunicarea cu programul principal se realizeaza prin PARAMETRII.
Modulele pot fi: exteriore si in interiorul fisierului program. Programul care apeleaza un modul: program apelant. Programul apelat de programul principal: program apelat, sau subprogram. Un subprogram poate fi apelat de mai multe ori.
program apelant
apel subprogram -------------> program apelat
<----| -------------
| -------------
| <---- -------------
Un subprogram este: procedura sau functie.
Procedura: un grup de instructiuni care primeste de la progr.apelant un grup de parametrii,
realizeaza anumite prelucrari si reda controlul programului apelant.
Functia: un grup de instructiuni independente care primeste de la progr. apelant un grup de
parametrii, realizeaza anumite prelucrari si DAR RETURNEAZA O VALOARE.
Organizarea fisierelor program:
Caz1.
Fiecare program este intr-un fisier separat: Program de actualizare:
Functiuni: adaugare,modificare,stergere,vizualizare,listare.
C:programactual.prg -program principal
Programe apelate:
C:programadaug.prg -functiune de adaugare
C:programmodif.prg -functiune de modificare
C:programsterg.prg -functiune de sterg
C:programvizual.prg -functiune de vizualizare
C:programlist.prg -functiune de listare
Dezavantaj:
Toate apelurile deschid fisiere care raman deschise simultan,prin apelari
succesive!
Caz2.
Fisierul program contine programul principal si programele apelate in acelasi fisier.
instructiuni
do adaug
do modif
do sterg
do vizual
do list
procedure adaug
instructiuni
return
function modif
instructiuni
return -reda cooontrolul programului principal
** ** ******** s.a.m.d.
Caz3.
Mai multe subprograme sunt grupate intr-un fisier de proceduri si
functii cu caracter general.
C:programutile.prg -program de proceduri
procedure adaug
instructiuni
return
actual.prg -program principal
SET PROCEDURE TO UTILE - DESCHIDE fisierul de proceduri
do adaug
SET PROCEDURE TO
CANCEL
PROCEDURI SI FUNCTII - definire si apelare
Proceduri
Definire Apel
PROCEDURE <nume_procedura> DO <nume_procedura>
RETURN
Comanda RETURN
RETURN TO MASTER -la program principal
RETURN TO nume_procedura
EXEMPLU:
modi comm utile
procedure p1
clear
?'Inceput procedura p1'
do p2
wait ''
?'Sfarsit procedura p1'
return
procedure p2
clear
?'Inceput procedura p2'
do p3
wait ''
?'Sfarsit procedura p2'
return
procedure p3
clear
?'Inceput procedura p3'
do p4
wait ''
?'Sfarsit procedura p3'
return TO p2
procedure p4
clear
?'Inceput procedura p4'
?'Fara apel'
wait ''
?'Sfarsit procedura p4'
return to master
cancel
Tema: programul CURSMOD de modificat,folosind proceduri. Capul de tabel este realizat cu o procedura, care se apeleaza la trecerea pe o pagina noua.
FUNCTII UTILLLIZATOR
Definire Apel
FUNCTION <nume_functie> <nume_functie>()
RETURN <expresie>
Exemplu: afiseaza data curenta sub forma: Vineri_14_sseptembrie_2001
FUNCTII folosite: DATE()-data curenta
DAY(data)-ziua
MONTH(data)-luna
YEAR(data)-an
DOW(data)-nr.zilei din sapt.( 1-duminica)
?'Data curenta:' + dat_rom()
FUNC DAT_ROM
DO CASE
CASE DOW(DATE())=1
ZI='DUMINICA'
CASE DOW(date())=2
ZI='LUNI'
ENDCASE
DO CASE
CASE MONTH(DATE())=1
LUNA='IANUARIE'
ENDCASE
RETURN ZI+', '+STR(DAY(DATE())+' '+LUNA+STR(YEAR(DATE()))
Domeniul de vizibilitate al variabilelor
Variabile: globale(publice) si locale(private)
Definirea variabilelor:
<nume_variabila> = <valoare>
*Variabilele globale sunt accesibile si pot fi modificate in modulul
curent si in orice alt modul.
*Variabilele locale sunt accesibile doar in modulul curent si in cele
subordonate si nu pot fi modificate in orice modul.
Comenzile de declarare a variabilelor:
PRIVATE <lista_variabile>
<nume_variabila> = <valoare>
PUBLIC <lista_variabile>
<nume_variabila> = <valoare>
Implicit sunt subordonate.
Exemplu:
modi comm exvar.prg
clear
priv a
public b
a=1
b=2
do test
?'a = ' a
?'b = ' b
?'Variabila c nu se poate afisa'
?'Este o variabila locala a procedurii test !'
?'d = ' d
wait wind 'Terminat testul pentru variabile!'
procedure test
priv c
public d
c=3
d=4
?'a = ' a
?'b = ' b
?'c = ' c
?'d = ' d
return
cancel
Pentru aplicatii complexe care includ mai multe procedduri,functii se recomanda folosirea variabilelor locale iar comunicarea sa se faca prin parametrii. Apelul unei proceduri cu parametrii:
DO <nume_procedura> WITH <lista_parametrii> In interiorul proccedurii dupa PROCEDURE <nume_procedura> este:
PARAMETERS <lista_variabile_locale>
<lista_parametrii> este identica cu <lista_parametrii>
Transmiterea parametrilor pt. o functie : <nume_functie>(<lista_parametrii>)
Ex.:
MODI COMM PROG
CLEAR
INPUT 'PRIMUL NR. ' TO N1
INPUT 'AL DOILEA NR. ' TO N2
N3=0
DO VALOARE WITH N1, N2, N3
?'VALOAREA PRODUSULUI: ',N3
PROCEDURE VALOARE
PARAMETERS P1, P2, P3
P3=P1*P2
RETURN
MODI COMM IMPOZIT
CLEAR
SET PROCEDURE TO UTILE
INPUT 'INRODUCERE SALRIU: ' TO MSAL
? 'IMPOZITUL CALCULAT ESTE: ', IMP(MSAL)
FUNC IMP
PARAMETERS S
DO CASE
CASE S<=750000
IMPOZIT = 0.18*S
CASE S<=1500000
IMPOZIT = 300000+(0.2 *S)
OTHERWISE
IMPOZIT = 0.4*S
ENDCASE
CANCEL
MODI COMM DATA
ACCEPT 'DATA NASTERII' TO DATAN
?? DAT_ROM (DATAN)
FUNC DAT_ROM2
PARAMETERS DATA
DO CASE
CASE DOW(DATA))=1
ZI='DUMINICA'
CASE DOW(DATA)=2
ZI='LUNI'
www.atestate-informatica.tk
ENDCASE
DO CASE
CASE MONTH(DATA)=1
LUNA='IANUARIE'
ENDCASE
RETURN ZI+', '+STR(DAY(DATA))+' '+LUNA+' '+STR(YEAR(DATA)))
EDITAREA DATELOR
- TREBUIESC CONSTRUITE ECRANE PENTRU EDITAREA DATELOR: se face cu comanda
@ SAY GET
Comanda SAY
@ <rand,coloana> SAY '<expresie>'
- tipareste la ecran expresia ipe randul si coloana specificata ;
Comanda GET
-afiseaza in vederea editarii continutul unui
Sintaxa generala:
@ <rand,coloana> SAY <expresie_doar_afisata> GET <camp/variabila>
(-> se creaza un obiect GET)
Comanda READ activeaza obiectele GET create anterior.
Exemplu:
@2,2 say 'Nume si Prenume: '
@2,25get nume
read
MODI COMM GETURI
USE REG_CAT
MNUME=SPACE(30)
MDATAN=SPACE(10)
MLOCN=SPACE(12)
@2,5 SAY 'NUME SI PRENUMELE: ' GET MNUME
@5,5 SAY 'DATA NASTERII: ' GET MDATAN
@8,5 SAY 'LOCALITATEA: ' GET MLOCN
READ
APPE BLANK
REPL NUME WITH MNUME,DATAN WITH MDATAN, LOCN WITH MLOCN
GO BOTT
BROW
CLEAR
Comanda get
Editarea datelor:
@<rand,coloana> SAY <expresie> GET <variabila/camp>
READ
READ - activeaza GET
READ activeaza toate geturile de deasupra lui
Clauze pentru SAY si GET
PICTURE <sablon> '9999999.99', 'xxxxxxxxxx'
FUNCTION <functie de afisare>: FUNC 'M lista_optiuni'
ex.:
@2,2 say 'Tipul actualizarii:' GET tip FUNC 'M A,M,S'
Clauza pentru GET
DEFAULT <expr> - creaza o variabila de memorie si ii atribuie valoarea expresiei
@2,2 say 'Tipul actualizarii:' GET tip FUNC 'M A,M,S' DEFAULT 'A'
(echivalent cu tip='A')
@2,2 say 'Continuati ? ' GET rasp FUNC 'M DA,NU' '!' DEFAULT 'NU'
VALID <nume_functie>
VALID codcurs()
- se foloseste pentru validarea continutului obiectului GET
la orice tentativa de mutare a cursorului de pe obiectul GET
Clauza VALID returneaza true .T. sau false .F.
@2,2 say 'Codcurs ? ' GET mcodcurs VALID vcodcurs()
FUNC VCODCURS
use cursuri
seek mcodcurs
if found()
ret=.T.
else
ret=.F.
wait wind 'Cod curs inexistent. Cursuri posibile: AJUT,PROG,OPER'
endif
return ret
0 = F (nu va afisa INVALID INPUT)
1 = T
MODI COMM VAL
*VALID-se mai foloseste pentru reafisarea obiectelor SAY:
defi wind f from 1,1 to 10,50 title 'clauza VALID'
mpret=0
mcant=0
ACTI WIND f
@2,2 say 'Pret ? ' GET mpret VALID calcval()
*executa comenzile din calcval() inainte de parasirea obiectului GET
@3,2 say 'Cantitate ? ' GET mcant VALID calcval()
@4,2 say 'Valoare : '+ STR(valoare,5)
READ
FUNC calcval()
valoare=mpret*mcant
@4,2 say 'Valoare : '+ STR(valoare,5)
-specifica un interval in care variabila numerica poate lua valori
RANGE [<exprnum1>,<exprnum2>]
@3,2 say 'Nota ? '
Clauza SIZE
-specifica dimensiunea de afisare a ob. GET
@3,2 say 'CURS ? ' GET mcodcurs SIZE 1,4
if lastkey()=27 ***TASTA Esc
RETURN
endif
MODI COMM
Politica de confidentialitate | Termeni si conditii de utilizare |
Vizualizari: 1205
Importanta:
Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved