18
Programarea calculatoarelor – curs ID Structuri fundamentale de control Metoda programării 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 secvenţiale nu există instrucţiuni 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, cuprinzând 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

progr calc

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