Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


SUBPROGRAME

fox pro



+ Font mai mare | - Font mai mic



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

@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)

Clauza RANGE

-specifica un interval in care variabila numerica poate lua valori

RANGE [<exprnum1>,<exprnum2>]

@3,2 say 'Nota ? ' GET mnota RANGE 1,10

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



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1205
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved