Home - Rasfoiesc.com
Educatie Sanatate Inginerie Business Familie Hobby Legal
Doar rabdarea si perseverenta in invatare aduce rezultate bune.stiinta, numere naturale, teoreme, multimi, calcule, ecuatii, sisteme




Biologie Chimie Didactica Fizica Geografie Informatica
Istorie Literatura Matematica Psihologie

Informatica


Index » educatie » Informatica
» STRUCTURI DE PROGRAMARE


STRUCTURI DE PROGRAMARE


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 =

Este o comanda de atribuire si totodata de evaluare. Ea are acelasi efect cu al comenzii STORE, cu deosebirea ca initializeaza o singura variabila si nu o lista de variabile.

Sintaxa: <var_mem> = <expr>.

b) Comenzi pentru operatii de intrare-iesire

b1)Comenzi pentru afisare pe ecran

Sunt: ? pe linia urmatoare

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

A permite introducerea doar a caracterelor alfabetice

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

CASE <expL1>

<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





Politica de confidentialitate





Copyright © 2024 - Toate drepturile rezervate