Biologie | Chimie | Didactica | Fizica | Geografie | Informatica | |
Istorie | Literatura | Matematica | Psihologie |
STRUCTURI DE PROGRAMARE
PLANUL LECTIEI
STRUCTURA SECVENTIALA
COMENZI PENTRU ATRIBUIRE
COMANDA STORE
COMANDA =
COMENZI PENTRU OPERATII DE INTRARE-IESIRE
COMANDA @ . SAY
COMANDA GET
STRUCTURA ALTERNATIVA
COMANDA IF . ENDIF
COMANDA CASE . ENDCASE
STRUCTURI REPETITIVE
COMANDA FOR . ENDFOR
COMANDA SCAN . ENDSCAN
COMANDA DO WHILE . ENDDO
1. STRUCTURA SECVENTIALA
a) Comenzi pentru atribuire
Comenzile pentru atribuire, realizeaza initializarea unor variabile cu o valoare. Aceasta valoare poate fi o constanta sau poate proveni dintr o expresie. Orice variabila, pentru a putea fi folosita in program, va fi in prealabil initializata.
Prin initializare, se face de fapt declararea si definirea variabilelor. Initializarea se face cu valori de tipul corespunzator definirii variabilei respective (numeric, caracter, lo gic, data calendaristica).
Exista 2 moduri de initializare: prin comanda specifica STORE sau atribuirea propriuzisa(=).
Comanda STORE
Comanda permite stocarea datelor in variabile de memorie sau in tablouri. Pentru date calendaristice se utilizeaza acoladele intre care este introdusa data, in formatul recunoscut de sistem.
Sintaxa: STORE <expr> TO <lista_var_mem <nume_tablou>
<expr> = o expresie ce contine valoarea ce va fi stocata.
<lista_var_mem> = o lista de variabile sau elemente ale unui tablou in care se stocheaza
valorile date de <expr>.
<nume-tablou> = numele unui tablou (uni sau bidimensional) in care se stocheaza valorile specificate de <expr>.
Ex.: Sa se initializeze variabila X1, cu valoarea 4.
store 4 to X1
disp memo like X1
Comanda =
Sintaxa: <var_mem> = <expr>.
b) Comenzi pentru operatii de intrare-iesire
b1)Comenzi pentru afisare pe ecran
?? pe linia curenta
Ex. ? "salut !"
? "buna "
?? "ziua !"
Comanda @ . SAY
Sintaxa: @ <linie>, <coloana> SAY <expr> [PICTURE <expC1>] [COLOR SCHEME <expN1> COLOR <lista perechi de culori>]
aceasta comanda va evalua expresia <expr> si va afisa valoarea obtinuta la coordonatele <linie>, <coloana> pe ecranul FOXPRO
Formatul de afisare este controlat de clauza PICTURE
Cod picture Semnificatie
X permite orice caractere
cu date de tip sir de caractere permite doar cifre iar cu date numerice permite cifre si semne
specifica pozitia punctului zecimal
Afisarea se va face cu culorile date de clauzele COLOR SCHEME si COLOR sau cu culorile implicite ale ferestrei de afisare, cand aceste clauze lipsesc din comanda.
b2)Citirea datelor de la tastatura
Comanda GET
Sintaxa : @ <linie>, <coloana> GET <var> <camp>
[PICTURE <expC1>]
[ENABLE DISABLE]
[VALID <expL1> <expN1>[ERROR<expC3>]]
COLOR SCHEME <expN2> COLOR <lista perechi culori>
Comanda va defini in pozitia <linie>, <coloana> un camp de editare in care va fi citita o valoare ce va fi depusa in variabila <var> sau in campul <camp> al unei tabele.
Clauza ENABLE permite accesul la campul citit cu comanda GET, iar clauza DISABLE nu permite acest acces.
Cu o singura comanda READ se pot citi mai multe campuri definite cu comenzi GET.
O comanda SAY si o comanda GET pot fi grupate, formand astfel o singura comanda, ce va avea forma:
@<linie, coloana> SAY <expr> GET <var>.
2. STRUCTURA ALTERNATIVA
Comenzile de acest tip, permit executarea conditionata a unor instructiuni, in functie de rezultatul evaluarii unei expresii logice.
Comanda IF . ENDIF
Sintaxa: IF <expL>
<instructiuni1>
[ELSE]
<instructiuni2>
ENDIF
Se evalueaza <expL> si daca <expL> este .T., se va executa grupul de instructiuni <instructiuni1>, dupa care executia comenzii se va termina; si daca <expL> este .F. si ELSE exista se va executa grupul de instructiuni <instructiuni2>, in absenta lui ELSE nu se va executa nici o instructiune, comanda terminandu-se.
Exemplu:
set talk off
clear
a=0
b=0
@4,10 SAY "Primul numar" GET a PICTURE
@5,10 SAY "Al doilea numar" GET b PICTURE "9999"
READ
IF a>b
?"Primul numar ete mai mare"
ELSE
?"Al doilea numar este mai mare"
ENDIF
IF b<> 0
? a, ":", b, "=", a/b
ENDIF
Comanda CASE . ENDCASE
Sintaxa: DO CASE
<instructiuni1>
[CASE <expL2>
<instructiuni2>
.
CASE <expLN>
<instructiuniN>]
[OTHERWISE
<instructiuni>]
ENDCASE
Comanda ceva determina executia grupului de insructiuni pentru care expresia logica respectiva 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.
Daca nici una dintre expresiile <expL1>, <expL2>, . , <expLN> nu are valoarea .T., apar 2 cazuri:
- cand nu exista clauza OTHERWISE, executia comenzii se incheie
- in prezenta clauzei OTHERWISE, se va executa grupul de instructiuni <instructiuni>
Obs. : Numai unul dintre grupurile de instructiuni <instr1>, . ,<instrN> si <instructiuni>, va fi executat si anume primul pentru care expresia logica este .T.
Exemplu:
set talk off
clear
dimension a[4]
a[1])= "Primavara"
a[2]= "Vara"
a[3]= "Toamna"
a[4]= "Iarna"
anotimp= a[1]
@6,26 GET anotimp FROM a FUNCTION `&`
READ
@22,5 SAY "Acest anotimp contine 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
3. STRUCTURI REPETITIVE
Executarea repetata a unui grup de instructiuni reprezinta unul dintre principalele avantaje ale elaborarii de programe.
Comenzile FOXPRO care realizeaza "buclele" din teoria programarii sunt FOR . ENDFOR, DO WHILE . ENDDO si SCAN . ENDSCAN, aceastea impartindu-se la randul lor in doua grupe:
- comenzi pentru bucle cu un numar dat de pasi, in care un grup de instructiuni se executa de un numar dat de ori: FOR, SCAN
-comenzi folosite pentru bucle cu un numar nedefinit de pasi, in care numarul de executari ale grupului de instructiuni este variabil, fiind dependent de o conditie asociata comenzii DO WHILE.
Comanda FOR . ENDFOR
Sintaxa: FOR <var> = <expN1> TO <expN2>
<instructiuni>
ENDFOR
Determina executarea repetata a grupului de instructiuni <instructiuni>, contorizarea acestor pasi fiind facuta printr-o variabila <var>. Valoarea initiala a variabilei contor va fi data de evaluarea expresiei <expN1>. Dupa fiecare executie a grupului de instructiuni <instructiuni>, variabila va fi incrementata cu 1. Cand valoarea variabilei <var> creste peste valoarea expresiei <expN2> (strict mai mare) se va iesi din bucla.
Exemplu:
clear
set talk off
FOR i = 1 to 4
?i
ENDFOR
i = variabila
1= valoarea initiala a variabilei
4 = valoarea finala a variabilei
La fiecare executie, variabila va fi incrementata cu 1.
Exemplu:
clear
set talk off
suma=0
FOR i=1 to 10
Suma=suma+i
ENDFOR
?"Suma primelor 10 numere naturale este : ", suma
Comanda SCAN . ENDSCAN
Sintaxa: SCAN
[<domeniu>] [FOR <expL1>] [WHILE <expL2>]
<instructiuni>
ENDSCAN
Este foarte asemanatoare cu FOR . ENDFOR, dar specializata in lucrul pe o tabela.
Aceasta comanda realizeaza parcurgerea tabelei curente si executarea grupului de instructiuni <instructiuni>, pentru fiecare inregistrare care apartine domeniului spe- cificat prin <domeniu>, FOR si WHILE.
Exemplu:
clear
set talk off
close all
use agenda
scan for sex="M"
?nume,prenume
endscan
close all
Comanda DO WHILE . ENDDO
Sintaxa: DO WHILE <expL>
<instructiuni>
[LOOP]
[EXIT]
ENDDO
Aceasta comanda determina executia repetata a grupului de instructiuni <instructiuni>, atata timp cat valoarea expresiei logice <expL> este adevarata.
Executia comenzii se va desfasura astfel: se evalueaza expresia <expL> si daca aceasta are valoarea .F., executia comenzii se incheie.Daca valoarea acesteia este .T. se vor executa instructiunile din <instructiuni>. La intalnirea lui ENDDO se sare la linia ce contine DO WHILE si expresia <expL> este reevaluata.
Acest ciclu continua pana cand o evaluare a expresiei logice <expL>, va conduce la valoarea .F., cand executia comenzii DO WHILE . ENDDO se incheie.
Comanda LOOP determina ignorarea restului de comenzi si reevaluarea lui <expL>.
Comanda EXIT determina iesirea fortata din bucla, indiferent de valoarea expresiei logice <expL>.
Exemplu: Sa se calculeze suma a p numere naturale, p fiind numarul maxim de asemenea numere astfel incat suma lor sa nu depaseasca 100.
set talk off
clear
suma = 0
p = 1
do while suma<100
suma = suma+p
p = p+1
enddo
suma = suma-p
a = p-1
?"S-au adunat primele", a," numere naturale,"
? "obtinandu-se suma de", suma
Copyright © 2024 - Toate drepturile rezervate