![]()
Foxpro
Programare structurata - structura alternativaProgramarea structurata este o metoda independenta de limbajul de programare care impune reguli stricte in conceperea algoritmilor de rezolvare a problemelor. Ea disciplineaza realizarea algoritmilor prin restrangerea structurilor de control utilizabile la un numar redus de tipuri. Acest principiu de baza deriva din teorema de structura a lui Böhm-Jacobini care arata ca orice algoritm se poate construi folosind doar trei tipuri de structuri de control: secventiala, alternativa, repetitiva. Limbajul dBASE (ca si FoxPro) permite descrierea acestor structuri prin comenzi corespunzatoare:
|
![]() |
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
SAY ‘ Primul numar’ GET a PICTURE ‘9999’
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
SAY ‘ Primul numar’ GET a PICTURE ‘9999’
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
SAY ‘ Primul numar’ GET a PICTURE ‘9999’
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
Contact |- ia legatura cu noi -| | ![]() |
Adauga document |- pune-ti documente online -| | ![]() |
Termeni & conditii de utilizare |- politica de cookies si de confidentialitate -| | ![]() |
Copyright © |- 2025 - Toate drepturile rezervate -| | ![]() |
![]() |
||||||||||||||||||||||||
|
||||||||||||||||||||||||
|
||||||||||||||||||||||||
Proiecte pe aceeasi tema | ||||||||||||||||||||||||
| ||||||||||||||||||||||||
|
||||||||||||||||||||||||
|
||||||||||||||||||||||||