Scrigroup - Documente si articole

     

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


Notiuni de programare structurata

fox pro



+ Font mai mare | - Font mai mic



Notiuni de programare structurata

Pentru a rezolva probleme mai complexe, executia secventiala a instructiunilor nu este intotdeauna solutia optima. Sunt necesare anumite comenzi pentru a schimba ordinea de executie a instructiunilor. In acest scop, FOXPRO contine functiile si comenzile de baza de programare structurata, care permit:



Executarea repetata a unui grup de instructiuni: FOR.ENDFOR, DO WHILE.ENDDO, SCAN.ENDSCAN;

Executarea unor instructiuni conditionata de rezultatul evaluarii unei expresii logice: IF.ENDIF, IIF ( ), DO CASE.ENDCASE.

IF.ENDIF

sintaxa: IF <expL>

<secventa 1 de instructiuni>

[ELSE]

<secventa 2 de instructiuni>

ENDIF

efect: Inainte de a incepe executarea comenzilor, se evalueaza expresia logica <expL>. Daca <expL> este adevarata (.T.), se va executa <secventa 1 de instructiuni>; daca <expL> este falsa (.F.), avem doua posibilitati:

Daca clauza ELSE este prezenta in comanda, se va executa <secventa 2 de instructiuni> si comanda se incheie;

Daca clauza ELSE este absenta, nu se executa nimic si comanda se incheie.

Se poate lucra cu decizii multiple, folosind o combinatie de comenzi IF.ENDIF imbricate (incluse unele in altele).

IIF ( )

sintaxa: IIF ( <expL>, <expr1>, <expr2>)

efect: Aceasta functie evalueaza expresia logica <expL> si, in functie de rezultatul evaluarii, returneaza: valoarea expresiei <expr1>, daca <expL> este adevarata (.T.), si valoarea expresiei <expr2>, daca <expL> este falsa (.F.). Expresiile <expr1> si <expr2> pot fi de tipuri diferite (Character, Date, Logical sau Numeric).

DO CASE.ENDCASE

Unele programe trebuie sa decida intre mai multe posibilitati (si nu numai doua, asa cum permite instructiunea IF.ENDIF; solutia in astfel de situatii este data de comanda DO CASE.ENDCASE.

sintaxa: DO CASE

CASE <expL1>

<secventa 1 de instructiuni>

[ CASE <expL2>

<secventa 2 de instructiuni>

.

CASE <expLn>

<secventa n de instructiuni>]

[ OTHERWISE

<secventa (n+1) de instructiuni>]

ENDCASE

efect: Comanda declanseaza executarea secventei de instructiuni corespunzatoare expresiei logice care este evaluata ca fiind adevarata (.T.). Executia comenzii are loc in modul urmator: este evaluata prima expresie logica, <expL1>; daca valoarea obtinuta este .T., se executa <secventa 1 de instructiuni>; altfel, urmatoarea expresie logica este evaluata. Dupa identificarea primei expresii logice adevarate si executarea secventei de instructiuni corespunzatoare, comanda se incheie, iar programul continua cu prima instructiune de dupa ENDCASE.

Daca toate expresiile <expL1>, <expL2>, . <expLn> sunt false, avem doua posibilitati: atunci cand clauza OTHERWISE este prezenta, se executa secventa corespunzatoare de instructiuni, <secventa (n+1) de instructiuni> si se trece la prima comanda de dupa ENDCASE; atunci cand clauza OTHERWISE este absenta, executia comenzii se incheie.

Exemplu: Dorim sa cream un program cu cateva optiuni posibile (legate de operatii cu o baza de date). Ideea este ca utilizatorul sa poata alege din lista de optiuni, programul urmand a executa operatii diferite in functie de alegerea utilizatorului. Sa presupunem ca avem definite urmatoarele optiuni:

CLEAR

? ' 1. Introducere de inregistrari noi'

? ' 2. Listarea inregistrarilor'

? ' 3. Editarea unei inregistrari'

? ' 4. EXIT "

Acesta este menu-ul de optiuni; cu ajutorul comenzii INPUT, utilizatorul isi introduce optiunea proprie din menu:

INPUT 'Introduceti optiunea dvs. ' TO OPT

Apoi, in functie de alegerea facuta, programul va executa operatii diferite:

DO CASE

CASE OPT = 1

APPEND

CASE OPT = 2

LIST TO PRINT

CASE OPT = 3

BROWSE

OTHERWISE

QUIT

ENDCASE

FOR.ENDFOR

sintaxa: FOR <var> = <expN1> TO <expN2> [step <expN3>]

<secventa de instructiuni>

[EXIT]

[LOOP]

ENDFOR

efect: Secventa de instructiuni precizata este executata de mai multe ori, numaratoarea fiind facuta de variabila <var>. Valoarea initiala a variabilei <var> este obtinuta prin evaluarea expresie numerice <expN1>; dupa fiecare executie a <secventei de instructiuni>, valoarea variabilei <var> este incrementata sau decrementata, cu o valoare constanta, obtinuta prin evaluarea expresiei numerice <expN3>, atunci cand clauza STEP este prezenta, sau cu 1, atunci cand clauza STEP lipseste. Cand valoarea variabilei <var> devine mai mare decat valoarea expresiei numerice <expN2> (cand valoarea <expN3> este pozitiva), sau mai mica decat valoarea <expN2> (cand valoarea <expN3> este negativa) iesim din acest ciclu, iar programul continua cu urmatoarea instructiune de dupa ENDFOR.

Parametri:

EXIT: Folosind acest parametru, putem iesi din ciclu si continua executia programului cu prima comanda de dupa ENDFOR, fara a mai testa valoarea variabilei contor, <var>;

LOOP : Folosind acest parametru putem sari peste urmatoarele instructiuni din ciclu (intre LOOP si ENDFOR); contorul <var> va fi incrementat sau decrementat, si incepe o noua parcurgere a <secventei de instructiuni>, daca conditia de ramanere in ciclu este verificata).

SCAN.ENDSCAN

sintaxa: SCAN

[<domeniu>] [FOR <conditie>]

<secventa de instructiuni>

[LOOP]

[EXIT]

ENDSCAN

efect: Aceasta comanda este similara cu FOR . ENDFOR, fiiind insa specializata pentru lucrul cu baze de date. Baza de date curenta este inspectata, iar <secventa de instructiuni> este executata pentru fiecare inregistrare care cade in interiorul domeniului specificat de <domeniu>, sau care face adevarata conditia FOR <conditie>.

Parametri:

EXIT

LOOP

(au acelasi efect ca in comanda anterioara).

DO WHILE.ENDDO

sintaxa: DO WHILE <expL>

<secventa de instructiuni>

[LOOP]

[EXIT]

ENDDO

efect: Aceasta comanda duce la executarea repetata a <secventei de instructiuni>, atata timp cat valoarea expresiei logice <expL.> este adevarat (.T.). Se evalueaza <expL>; daca valoarea obtinuta este fals (.F.), executia secventei de instructiuni se incheie. Altfel, aceasta se executa si, la intalnirea instructiunii ENDDO se face salt inapoi la prima linie, DO WHILE, si se evalueaza din nou <expL>.

Acest ciclu continua pana cand <expL> devine falsa (.F.); in acest moment executia este stopata, iesim din ciclu iar programul continua cu prima instructiune de dupa ENDDO.

Parametri:

EXIT

LOOP

(au acelasi efect ca in comanda anterioara).

Exemplu: Daca dorim sa listam toate inregistrarile unei baze de date (numai cateva campuri ale acestora), o solutie adecvata ar putea fi urmatoarea secventa de comenzi (de obicei o astfel de secventa este folosita in interiorul unui program):

DO WHILE .NOT. EOF ( )

? NUME, ADRESA

SKIP

ENDDO



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


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