Scrigroup - Documente si articole

     

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


Structuri de control de baza

fox pro



+ Font mai mare | - Font mai mic



Structuri de control de baza

Structura secventiala - controlul este transferat



de la o operatie la alta in secventa.

Structura alternativa - permite alegerea intre doua alternative.

In unele situatii algoritmul de rezolvare a problemei impune ramificarea programului in doua ramuri conditionata de valoarea de adevar a unei conditii , astfel incat, la executarea acestuia , in functie de datele problemei, calculatorul sa poata executa una din cele doua actiuni posibile.

Instructiunea IF

Aceasta facilitate este asigurata de instructiunea IF. Forma generala (doua variante ) a acestei instructiuni este:

1.Formatul pentru structura alternativa cu doua ramuri

IF conditie

< instructiuni1>

ELSE

<instructiuni2>

ENDIF

2.Formatul pentru structura alternativa cu o ramura vida

IF conditie

< instructiuni>

ENDIF

In limba engleza IF inseamna "daca" , iar ELSE inseamna "altfel". Functionarea instructiunii IF poate fi explicata prin urmatoarele diagrame.

1.Formatul pentru structura alternativa cu doua ramuri este urmatoarea:

2.Formatul pentru structura alternativa cu o ramura vida


La intalnirea unei instructiuni IF se va evalua in primul rand valoarea de adevar a expresiei booleene conditie. In cazul in care aceasta are valoarea TRUE se va executa grupul de instructiuni <instructiuni1>, dupa care executia comenzii se va termina.

Daca conditia are valoarea FALSE si daca exista ELSE se va executa instructiunile din grupul <instructiuni2>, dupa care executia comenzii se va termina.

In ambele cazuri urmatoarea instructiune care se va executa este cea de dupa terminarea instructiunii.

Exemplu:

SET TALK OFF

CLEAR

a = 0

b = 0

@4,10 SAY ' Primul numar' GET a PICTURE '9999'

@5,10 SAY ' Al doilea numar' GET b PICTURE '9999'

READ

IF a>b

? " Primul numar este mai mare " && se executa cand a>b

ELSE

? " Al doilea numar este mai mare sau sunt egale"

NOTE se executa cand a<=b

ENDIF

IF b<> 0

NOTE se executa cand b este diferit de 0

? a, ":",b,"=",a/b

ENDIF

Un efect asemanator, de selectie dintre doua variante, se obtine prin functia IIF () avand sintaxa:

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

Aceasta functie evalueaza expresia logica <expl> si in functie de rezultatul obtinut, returneaza valoarea uneia dintre expresiile <expr1> si <expr2>:

returneaza valoarea obtinuta prin evaluarea expresiei <expr1> daca <expl> este evaluata la .T.

returneaza valoarea obtinuta prin evaluarea expresiei <expr2> daca <expl> este evaluata la .F.

Cele doua expresii <expr1> si <expr2> nu trebuie neaparat sa aiba acelasi tip, acestea putand fi de tip sir de caractere, data calendaristica, logic sau numeric.

Exemplu:

SET TALK OFF

CLEAR

a = 0

b = 0

@4,10 SAY ' Primul numar' GET a PICTURE '9999'

@5,10 SAY ' Al doilea numar' GET b PICTURE '9999'

READ

sir1=" Primul numar este mai mare "

sir2= " Al doilea numar este mai mare sau sunt egale"

? IIF a>b, sir1, sir2

Mai multe comenzi IF ...ENDIF pot fi imbricate, incluse una in alta, obtinandu-se conditionarea unui grup de instructiuni prin mai multe expresii logice, sau obtinandu-se selectii diverse intre mai multe grupuri de instructiuni.

Exemplu:

SET TALK OFF

CLEAR

a = 0

b = 0

@4,10 SAY ' Primul numar' GET a PICTURE '9999'

@5,10 SAY ' Al doilea numar' GET b PICTURE '9999'

READ

sir1=" Primul numar este mai mare "

sir2= " Al doilea numar este mai mare sau sunt egale"

sir3= " Numerele sunt egale"

IF a>b

? sir1 && a>b

ELSE

IF a<b

? sir2 && a<b

ELSE

? sir3 && a=b

ENDIF

ENDIF

In acest exemplu structura de comenzi IF..ENDIF poate fi inlocuita cu:

? IIF ( a>b, sir1, IIF ( a<b, sir2 , sir3))

in care avem doua apeluri ale functiei Iif ( )incluse unul in altul.

Instructiunea CASE

Instructiunea IF permite selectarea uneia dintre cele doua actiuni in concordanta cu valoarea unei expresii booleene.

Instructiunea CASE este o generalizare a instructiunii IF in sensul ca asigura executarea conditionata a uneia din cele cateva actiuni posibile, in functie de valoarea unei expresii de tip scalar sau subdomeniu ( numita selector ), ca urmare permite alegerea din atatea instructiuni cate valori distincte are tipul expresiei.

Sintaxa este:

DO CASE

CASE <expL1>

< instructiuni1>

[CASE <expL2>

< instructiuni2>

..........

CASE <expLN>

< instructiuniN>]

[ OTHERWISE

< instructiuni>]

ENDCASE

Comanda va determina executia grupului de instructiuni pentru care expresia logica corespunzatoare are valoarea .T.. Executia comenzii va decurge in modul urmator:

Se evalueaza prima expresie logica <expL1> si daca valoarea obtinuta este .T. se executa grupul de instructiuni <instructiuni1>. Daca expresia logica <expL1> are valoarea .F. se trece la evaluarea urmatoarei expresii logice. Dupa gasirea primei expresii logice cu valoarea .T. si executarea grupului de instructiuni corespunzator, executia comenzii se incheie, programul continuand cu prima comanda de dupa ENDCASE.

Daca nici una dintre expresiile <expL1>, <expL2>...<expLN> nu are valoarea .T., apar doua cazuri:

cand nu exista clauza OTHERWISE, executia comenzii se incheie;

in prezenta clauzei OTHERWISE, se va executa grupul de instructiuni <instructiuni>, dupa care se trece la prima comanda de dupa ENDCASE.

Observatie: numai unul dintre grupurile de instructiuni <instructiuni1> ..<instructiuniN> si <instructiuni> va fi executat si anume acela pentru care expresia logica este .T.


c1

Exemplu:

SET TALK OFF

CLEAR

DIMENSION a (4 )

a (1) = Primavara'

a (2) = 'Vara'

a (3) = 'Toamna

a (4) = 'Iarna

anotimp =' Prim[vara'

@ 6,26 GET anotimp FROM a FUNCTION '&'

READ

@ 15,10 SAY ' Acest anotimp con'ine lunile: '

DO CASE

CASE anotimp = ' Primavara'

?? ' Martie, Aprilie, Mai '

CASE anotimp = 'Vara'

?? ' Iunie, Iulie, August '

CASE anotimp = 'Toamna'

?? ' Septembrie, Octombrie, Noiembrie '

OTHERWISE

?? ' Decembrie, Ianuarie, Februarie '

ENDCASE



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


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