Programare
structurata in FoxPro
Instructiunile
limbajului
1. Instructiunea de decizie IF:
IF expresieLogica instructiune1 [ELSE instructiune2] ENDIF |
-
daca expresieLogica este TRUE, se executa instructiune1.
Altfel, se executa instructiune2. -
ramura ELSE poate lipsi |
Aplicatii:
2. Instructiunea de decizie multipa DO CASE
ENDCASE:
DO CASE CASE
conditie1 Instructiune1 CASE
conditie2 Instructiune2
.. CASE
conditieN InstructiuneN [OTHERWISE instructiuneN+1] ENDCASE |
-executa o instructiune din mai multe posibile, in functie de valoarea de
adevar a unei conditii. -se evalueaza conditie1. Daca
este adevarata, se executa instructiune1. Daca nu,
se testeaza conditie2 etc. - daca nici una din conditii nu este adevarata, se
executa instructiuneN+1, daca este prezenta clauza OTHERWISE. Daca nu, nu se
executa nimic. |
Aplicatii:
1. Sa se
realizeze o secvanta care sa permita executia unei operatii din mai multe
posibile in functie de raspunsul dat de un utilizator. Exemplu:
Pentru cautare tastati 1
Pentru adaugare tasatati 2
Pentru stergere articol tastati 3 etc.
2. Sa se calculeze si sa se afiseze
ultima cifra a lui 2n. (Indicatie: in functie de restul impartirii lui
n la 4, ultima cifra va fi 2, 4, 6 sau 8. Exceptie: n=0)
3. Instructiunea repetitiva cu numar cunoscut de pasi FOR
ENDFOR
Instrucţiunea for implementează structura ciclică cu număr cunoscut de
paşi .
FOR <memvar> = <exp1> TO <exp2> [STEP
<exp3>] |
-memvar este o variabila de tip contor -Expresia1 este o expresie de initializare a unei
variabilei contor -se initializeaza contorul deci cu exp1 -se executa corpul de instructiuni pana cand variabila
contor devine mai mare decat exp2 -la fiecare pas se va modifica valoarea contorului cu
exp3 daca este prezenta clauza STEP, sau incrementata cu o unitate daca
lipseste clauza STEP -contorul poate fi crescator sau descrescator, numeric:
intreg sau real |
Exemplul urmator
afiseaza pe randuri diferite valorile de la 1 la 10
for i=1 to 10
?i
endfor
Aplicatii:
1.
Se citesc n numere
intregi. Sa se determine cel mai mare dintre numerele citite.
2.
(atestat problema 15) Să se genereze formulare de tip adeverinţă pentru
elev, folosind informaţiile dintr-un fisier elevi.dbf. Adeverinţele
vor avea formatul:
Liceul .......................
ADEVERINŢĂ DE ELEV
Se adevereşte prin prezenta că
este
elev ξn clasa
.. cu numarul
matricol
.
Director,
Secretar,
..
.
3. (PROBLEMA 17 ATESTAT) Fie o bază de date ELEVI (nume,
clasă, abs_nemotivate). Pentru fiecare din elevii unei clase care au mai
mult de 10 absente nemotivate, sa se genereze un formular prin care să fie anunţaţi
părinţii asupra situaţiei elevului.
Liceul
.................... Data
(data curentă)
Elevul
..(nume) din clasa .
(clasa) are un număr de
.(nr_absenţe) absenţe nemotivate şi a fost sancţionat cu
mutare.
Poftiţi urgent la şcoala !
Diriginte,
4. Instructiunea repetitiva cu test initial DO WHILE...ENDDO
DO WHILE <conditie> |
-secventa de instructiuni se executa cat timp conditia
este adevarata. -in momentul in care conditia devine falsa se paraseste
ciclul -daca de la prima evaluare conditia este falsa ciclul
nu se mai executa nici macar odata |
Probleme propuse:
1.
Sa se determine cel
mai mare divizor comun a doua numere citite de la tastatura
2.
sa se determine suma
cifrelor unui numar citit
5. Comanda SCAN...ENDSCAN
SCAN
[domeniu] [FOR conditie] <secventa instructiuni> ENDSCAN |
-se parcurge baza de date activa selectand articolele
prin clauzele domeniu si for conditie -domeniu implicit este intreaga tabela |
Probleme propuse:
3.
Fie tabela fructe.
a)
Sa se determine daca
oricare doua fructe alaturate sunt diferite
b)
Sa se determine daca
fructele sunt distincte