Upload
claudia-stanciu
View
4
Download
1
Embed Size (px)
DESCRIPTION
curs
Citation preview
Programarea calculatoarelor curs ID
Structuri fundamentale de control
Metoda programrii structurate implic utilizarea structurilor logice fundamentale n
programarea calculatoarelor electronice.
Clasificare:
- Structuri secventiale (liniare);
- Structuri alternative (de ramificare, conditionale);
- Structure repetitive (iterative, ciclice).
A. Structuri secventiale
Pentru programarea structurilor secveniale nu exist instruciuni specifice.
In cadrul structurilor secventiale operatiile se executa una dupa alta, neconditionat; liniile de
comanda sunt parcurse una dupa alta, iar interpretarea fiecarei linii, in parte, se face de la stanga
la dreapta.
Exemplu: Se doreste o eviden a contractelor, cuprinznd numele beneficiarului, denumirea
produsului i valoarea livrat
Private Sub Button1_Click()
Dim numebenef, denprod As String
Dim cant As Integer
Dim pret, valoare As Double
numebenef = InputBox(Tastati numele beneficiarului)
denprod = InputBox(Tastati denumirea produsului)
cant = InputBox(Tastati cantitatea livrata)
1
Programarea calculatoarelor curs ID
pret = InputBox(Tastati pretul de livrare)
valoare = cant * pret
MsgBox(Valoarea produsului & & denprod & este & & _
valoare, MsgBoxStyle.Exclamation, valoare produs livrat)
End Sub
B. Structuri alternative
Structurile de control alternative, numite si conditionale, evalueaza expresii in functie de
rezultatul carora executa secvente diferite de program.
Instructiuni pentru programarea structurilor alternative:
B1. IF END IF
B2. SELECT CASE END SELECT
B1. Instructiunea IF END IF
Are trei forme:
- Cu ramura vida (If Then End If);
- Cu doua ramuri (If Then Else End If);
- Cu mai multe ramuri (imbricata).
2
Programarea calculatoarelor curs ID
Structura alternativa cu ramura vida
Sintaxa:
If conditie Then
set-instructiuni
End If
Interpretare: Daca (IF) este adevarata conditia atunci (THEN) se executa setul de instructiuni. In
caz contrar se trece dupa End If.
Exemplu: n activitatea de eviden a contractelor, se solicit eventualele diferene datorate
beneficiarilor, fa de cantitile contractate pentru un anumit produs.
If cant_contractata > cant_livrata Then
diferenta = cant_contractata - cant_livrata
MsgBox(diferenta rezultata este: & diferenta)
End If
3
Programarea calculatoarelor curs ID
Structura alternativa cu doua ramuri
Sintaxa:
If conditie Then
set-instructiuni-1
Else
set-instructiuni-2
End If
Interpretare: Daca (IF) este adevarata conditia atunci (THEN) se executa setul de instructiuni 1,
altfel (ELSE) se executa setul de instructiuni 2. In ambele cazuri se trece dupa End If.
Exemplu: Sunt solicitate diferenele ntre cantitile contractate i cele livrate, pentru a
cunoate eventualele datorii sau eventualul plus de livrare.
If cant_contractata > cant_livrata Then
diferenta = cant_contractata - cant_livrata
MsgBox(diferenta datorata beneficiarului este: & diferenta)
4
Programarea calculatoarelor curs ID
Else
diferenta = cant_livrata - cant_contractata
MsgBox(surplusul livrat beneficiarului este: & diferenta)
End If
Structura alternativa cu mai multe ramuri (imbricata)
5
Programarea calculatoarelor curs ID
Sintaxa:
If conditie-1 Then
set-instructiuni-1
ElseIf conditie-2 Then
set-instructiuni-2
[ ]
ElseIf conditie-n Then
set-instructiuni-n
Else
set-instructiuni-(n+1)
End If
Interpretare: Daca (IF) este adevarata conditia 1 atunci (THEN) se executa setul de instructiuni
1, altfel daca (ELSEIF) este adevarata conditia 2 atunci (THEN) se executa setul de instructiuni
2, [], altfel (ELSE), daca nu este indeplinita nicio conditie, se executa setul de instructiuni
(n+1).
Exemplu: O firm angajeaz salariai conform unor contracte de colaborare de 2, 4, 6, 8, 10
ore. Drepturile salariale se calculeaz astfel: pentru 2 ore se va plti 1/4 din salariul negociat,
pentru 4 ore 1/2 fa de salariul negociat, pentru 6 ore 3/4 din salariul negociat, pentru
8 ore se pltete ntreg salariul negociat, iar pentru 10 ore se pltete 150% fa de salariul
negociat.
If ore = 2 Then
drept = salariu * 0.25
ElseIf ore = 4 Then
6
Programarea calculatoarelor curs ID
drept = salariu * 0.5
ElseIf ore = 6 Then
drept = salariu * 0.75
ElseIf ore = 8 Then
drept = salariu
ElseIf ore = 10 Then
drept = salariu * 1.5
Else
MsgBox(Numarul deore nu este n standarde. Reveniti!)
End If
B2. Instructiunea SELECT CASE END SELECT
Se aplica structurilor de control alternative generalizate. Se caracterizeaza prin existent mai
multor ramuri pe care exista secvente de instructiuni. Executia secventelor de instructiuni pe una
din ramuri este conditionata de rezultatul evaluarii expresiei (selectorului).
Sintaxa:
SELECT CASE selector
CASE expresie-1
set-instructiuni-1
CASE expresie-2
set-instructiuni-2
[]
7
Programarea calculatoarelor curs ID
CASE expresie-n
set-instructiuni-n
[CASE ELSE
set-instructiuni-(n+1)]
END SELECT
Exemplu: Sa se calculeaze dobanda la suma depusa, dupa formula:
Dobanda = (suma depusa * rata dobanzii/100) * termen / 12
Se are in vedere:
Termen = 1 (o luna) Rata dobanzii = 14%
Termen = 3 (3 luni) Rata dobanzii = 15%
Termen = 6 (6 luni) Rata dobanzii = 16%
Termen = 12 (un an) Rata dobanzii = 17%
Private Sub Button1_Click() Handles Button1.Click
Dim suma As Long, termen As Byte, ratadob As Byte
Dim dobanda As Double
suma = CInt(TextBox4.Text)
termen = CInt(TextBox5.Text)
Select Case termen
Case 1 : ratadob = 14
Case 3 : ratadob = 15
Case 6 : ratadob = 16
Case 12 : ratadob = 17
End Select
dobanda = (suma * ratadob / 100) * termen / 12
8
Programarea calculatoarelor curs ID
TextBox6.Text = CStr(dobanda)
End Sub
C. Structuri repetitive
Structura repetitiva determina executia repetata a unei secvente de program in functie de
indeplinirea unei conditii.
Aceste structuri pot fi clasificate:
Dupa locul in care se insereaza filtrul (conditia):
- conditionate anterior cand conditia apare la inceputul secventei repetitive --- este
posibil (atunci cand nu se respecta conditia) ca secventa de program sa nu se execute
deloc;
- conditionate posterior cand conditia apare la sfarsitul secventei repetitive ---
secventa de program se executa cel putin o data.
Dupa numarul de iteratii:
- contorizate cand se cunoaste de la inceput numarul de repetitii ale secventei de
program;
- necontorizate cand nu se cunoaste numarul de repetitii ale secventei de program.
Instructiuni pentru programarea structurilor alternative:
C1. NEXT FOR NEXT
C2. WHILE END WHILE
C3. DO LOOP
C1. Instructiunea FOR NEXT
9
Programarea calculatoarelor curs ID
Este specific operaiunilor iterative contorizate, condiionate anterior.
Sintaxa instruciunii este:
FOR variabil-numeric = valoare-iniial TO valoare-final [STEP pas]
set-instruciuni-1
[Exit FOR]
set=instructiuni-2
NEXT [variabila-numerica]
Sintaxa simplificata a instruciunii este:
FOR variabil-numeric = valoare-iniial TO valoare-final
set-instruciuni
NEXT
unde: variabila-numerica este o valoare numerica pentru care se cunosc valoare-initiala,
valoare-finala si pasul.
Exemplu: Se are in vedere evidena contractelor dintr-o firma, pentru care, intr-o anumita
activitate, se cunoaste ca vor fi incheiate 15 contracte.
Private Sub Button1_Click( )
Dim numebenef, denprod As String
Dim cant As Integer
Dim pret, valoare As Double
Dim contor As Integer
For contor = 1 To 15
10
Programarea calculatoarelor curs ID
numebenef = InputBox(tastati nume beneficiar)
denprod = InputBox(tastati denumire produs)
cant = InputBox(tastati cantitatea livrata)
pret = InputBox(tastati pret livrare)
valoare = cant * pret
MsgBox(Valoarea livrata este: & valoare)
Next
End Sub
Exemplu: Se are in vedere evidena contractelor dintr-o firma, pentru care, intr-o anumita
activitate, se cunoaste ca vor fi mai multe contracte, dar numarul acestora se va cunoaste
doar la inceputul programului.
Private Sub Button1_Click( )
Dim numebenef, denprod As String
Dim cant As Integer
Dim pret, valoare As Double
Dim contor, numar As Integer
numar = InputBox(Precizati numarul de iteratii)
For contor = 1 To numar
numebenef = InputBox(tastati nume beneficiar)
denprod = InputBox(tastati denumire produs)
cant = InputBox(tastati cantitatea livrata)
11
Programarea calculatoarelor curs ID
pret = InputBox(tastati pret livrare)
valoare = cant * pret
MsgBox(Valoarea livrata este: & valoare)
Next
End Sub
Exemplu:
For contor = 1 To 5000 Step 5
--- in acesta caz se executa 1000 de ciclri.
Exemplu: ( incrementrii negative)
For contor = 3 To 1 Step 1
--- in acest caz se executa 2 ciclari.
Uneori, exist situaii n care devine inutil ciclarea setului de instruciuni, datorit unor condiii
excepionale, dar prevzute de ctre programator. n aceste cazuri exist posibilitatea de a
ntrerupe forat ciclrile prin instruciunea EXIT FOR. Sintaxa instruciunii, pentru asemenea
cazuri este:
FOR .
set repetitiv de instruciuni
EXIT FOR
set continuativ de instruciuni repetabile
NEXT
12
Programarea calculatoarelor curs ID
Asemenea intervenii se realizeaz prin testarea unor condiii care verific necesitatea sau
non-necesitatea continurii ciclrilor pentru set continuativ de instruciuni repetabile.
C2. Instructiunea WHILE ... END WHILE
Este o instruciune repetitiv conditionata anterior, care poate fi utilizat n cu sau fr contor.
Sintaxa instruciunii este:
WHILE condiie
set-instruciuni
END WHILE
Interpretare: Atata timp (While) cat conditia este adevarata se executa setul de instructiuni. Cand
conditia nu este adevarata se trece la prima instructiune dupa End While.
Observatie: Este posibil ca instructiunea sa nu se execute niciodata (conditia sa nu fie adevarata).
Exemplu: (While ... End While contorizat)
Se doreste execuia programului contractelor de livrare, cu o iteraie necesar pentru 25 de
cazuri:
Private Sub Button1_Click( )
Dim numebenef, denprod As String
Dim cant As Integer
Dim pret, valoare As Double
Dim contor As Integer = 1
Dim numar As Integer = 25
While contor
Programarea calculatoarelor curs ID
numebenef = InputBox(tastati nume beneficiar)
denprod = InputBox(tastati denumire produs)
cant = InputBox(tastati cantitatea livrata)
pret = InputBox(tastati pret livrare)
valoare = cant * pret
MsgBox(Valoarea livrata este: & valoare)
contor += 1
End While
End Sub
Exemplu: (While ... End While necontorizat)
Se doreste execuia programului contractelor de livrare, pentru un numar de contracte
care nu se cunoaste decat la finalul programului (atunci cand utilizatorul doreste
finalizarea):
Private Sub Button1_Click( )
Dim numebenef, denprod As String
Dim cant As Integer
Dim pret, valoare As Double
Dim raspuns As Integer = InputBox(Doriti sa incepeti?)
While Ucase(raspuns) = DA
numebenef = InputBox(tastati nume beneficiar)
denprod = InputBox(tastati denumire produs)
14
Programarea calculatoarelor curs ID
cant = InputBox(tastati cantitatea livrata)
pret = InputBox(tastati pret livrare)
valoare = cant * pret
MsgBox(Valoarea livrata este: & valoare)
raspuns = InputBox(Doriti sa continuati?)
End While
End Sub
C3. Instructiunea DO ... LOOP
Este o instruciune repetitiv conditionata anterior sau posterior, care poate fi utilizat n cu sau
fr contor.
Instructiunea DO ... LOOP conditionata anterior
Sintaxa instructiunii este:
DO While | Until conditie
set-instructiuni-1
[Exit DO]
set-instructiuni-2
LOOP
Daca se utilizeaza Do While ... Loop setul de instructiuni se executa atata timp cat conditia este
adevarata.
Daca se utilizeaza Do Until ... Loop setul de instructiuni se executa atata timp cat conditia este
falsa.
15
Programarea calculatoarelor curs ID
Clauza EXIT DO determina iesirea din setul repetitiv.
Exemplu: (Do ... Loop contorizat)
Se doreste execuia programului contractelor de livrare, cu o iteraie necesar pentru 25 de
cazuri:
Private Sub Button1_Click( )
Dim numebenef, denprod As String
Dim cant As Integer
Dim pret, valoare As Double
Dim contor As Integer = 1
Dim numar As Integer = 25
Do While contor
Programarea calculatoarelor curs ID
Sintaxa instructiunii este:
DO
set-instructiuni-1
[Exit DO]
set-instructiuni-2
LOOP While | Until conditie
Daca se utilizeaza Do ... Loop While setul de instructiuni se executa atata timp cat conditia este
adevarata.
Daca se utilizeaza Do ... Loop Until setul de instructiuni se executa atata timp cat conditia este
falsa.
Clauza EXIT DO determina iesirea din setul repetitiv.
Exemplu: (Do ... Loop contorizat)
Se doreste execuia programului contractelor de livrare, cu o iteraie necesar pentru 25 de
cazuri:
Private Sub Button1_Click( )
Dim numebenef, denprod As String
Dim cant As Integer
Dim pret, valoare As Double
Dim contor As Integer = 1
Dim numar As Integer = 25
Do
17
Programarea calculatoarelor curs ID
numebenef = InputBox(tastati nume beneficiar)
denprod = InputBox(tastati denumire produs)
cant = InputBox(tastati cantitatea livrata)
pret = InputBox(tastati pret livrare)
valoare = cant * pret
MsgBox(Valoarea livrata este: & valoare)
contor += 1
Loop While contor