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

Foxpro


Qdidactic » stiinta & tehnica » informatica » foxpro
Programare structurata - structura alternativa



Programare structurata - structura alternativa


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

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

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