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:

  1. Sa se rezolve ecuatia de gradul I: ax+b=0
  2. Sa se determine minimul a 3 numere
  3. Fie tabela produse (denumire, pret, cantitate). Se citeste denumirea unui produs. Daca cantitatea este egala cu 0 produsul se sterge si se afiseaza continutul tabelei.
  4.  Fie tabela produse (denumire, pret, cantitate). Se citeste denumirea unui produs. Se cauta produsul respectiv. Daca se gaseste se afiseaza toate datele altfel se afiseaza un mesaj.
  5. Fie tabela produse (denumire, pret, cantitate). Se citeste denumirea unui produs. Se sterge produsul respeciv numai dupa confirmare. Utilizatorul va tasta (y daca se doreste stergerea sau n daca nu se doreste stergerea).

 

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>]
       <secventa instructiuni>
ENDFOR

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

-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