Home - qdidactic.com
Didactica si proiecte didacticeBani si dezvoltarea cariereiStiinta  si proiecte tehniceIstorie si biografiiSanatate si medicinaDezvoltare personala
referate stiintaSa fii al doilea inseamna sa fii primul care pierde - Ayrton Senna





Aeronautica Comunicatii Drept Informatica Nutritie Sociologie
Tehnica mecanica

Baze de date


Qdidactic » stiinta & tehnica » informatica » baze de date
Subprograme - organizarea fisierelor program



Subprograme - organizarea fisierelor program




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'


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 camp sau al unei variabile

Sintaxa generala:

@ <rand,coloana> SAY <expresie_doar_afisata> GET <camp/variabila>

(-> se creaza un obiect GET)

Comanda READ activeaza obiectele GET create anterior.


Exemplu:

say 'Nume si Prenume: '

@2,25get nume

read


MODI COMM GETURI

USE REG_CAT

MNUME=SPACE(30)

MDATAN=SPACE(10)

MLOCN=SPACE(12)

SAY 'NUME SI PRENUMELE: ' GET MNUME

SAY 'DATA NASTERII: ' GET MDATAN

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.:

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


say 'Tipul actualizarii:' GET tip FUNC 'M A,M,S' DEFAULT 'A'

(echivalent cu tip='A')


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.

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=

mcant=

ACTI WIND f

say 'Pret ? ' GET mpret VALID calcval()

*executa comenzile din calcval() inainte de parasirea obiectului GET

say 'Cantitate ? ' GET mcant VALID calcval()

say 'Valoare : '+ STR(valoare,5)

READ


FUNC calcval()

valoare=mpret*mcant

say 'Valoare : '+ STR(valoare,5)


Clauza RANGE


-specifica un interval in care variabila numerica poate lua valori


RANGE [<exprnum1>,<exprnum2>]


say 'Nota ? ' GET mnota RANGE 1,10


Clauza SIZE


-specifica dimensiunea de afisare a ob. GET

say 'CURS ? ' GET mcodcurs SIZE 1,4


if lastkey()=27 ***TASTA Esc

RETURN

endif

MODI COMM





Contact |- ia legatura cu noi -| contact
Adauga document |- pune-ti documente online -| adauga-document
Termeni & conditii de utilizare |- politica de cookies si de confidentialitate -| termeni
Copyright © |- 2024 - Toate drepturile rezervate -| copyright