Documente Academic
Documente Profesional
Documente Cultură
Calculatoarelor
Ce este programarea ?
• Programarea calculatorului este acțiunea
de scriere a programelor în diverse
limbaje de programare.
• Programul reprezintă o serie de
instrucțiuni ce sunt comunicate unui
calculator pentru a îndeplini o sarcină
• Programul este un produs finit al
activității de programare.
Obiective
Studiul conceptelor fundamentale ce
stau la baza limbajelor de programare.
De ce?
• Înțelegerea noțiunilor generale ale unui
limbaj de programare.
• Învățarea mai ușoară a unui limbaj de
programare nou.
• Utilizarea eficientă a oricărui limbaj de
programare.
• Rezolvarea unei probleme cu ajutorul
calculatorului.
Noțiuni generale
• Un limbaj de programare reprezintă o
notație formală prin care se specifică
anumite operații ce urmează a fi
executate de un calculator.
Limbaj de asamblare
Imperative C++
Limbaje de programare
Bazate pe obiecte
Logice Prolog
SĂ FIE CÂT
MAI SĂ FIE BINE
GENERAL DEFINIT
SĂ FIE
SĂ FIE FINIT REZOLVABIL
• Cerințe fundamentale pentru algoritmi:
ALGORITM
OBIECTE
DATE EXPRESII
CONSTANTE VARIABILE
Este o dată a cărei valoare nu se modifică în timpul execuției algoritmului
CONSTANTE ÎNTREGI
Număr din mulțimea Z (numere întregi)
232, +87, -1400
CONSTANTE REALE
Valori raționale, cu virgula zecimală, cu număr
finit de zecimale
CONSTANTA 2.34, -45.26
CONSTANTE CARACTER
Caractere cuprinse între apostrofuri
‘a’, ‘M’, ‘9’
Codomeniu
Domeniu de
definiție Legea de asociere
x, Variabila, pentru ca
valoarea să se poate
modifica în orice moment
La nivel de algoritmi se folosesc patru tipuri, cele patru
tipuri fiind aceleași cu cele enumerate la constante. La
fel ca la matematica, variabila trebuie sa aibă un
nume, căruia îi spunem identificator de variabilă.
• Pentru efectuarea calculelor, algoritmii folosesc
expresii.
• O expresie este alcătuită dintr-unul sau mai
mulți operanzi legați prin operatori.
• De exemplu, în expresia 2 * a – b + c / 2, a, b, c
sunt operanzii iar *, -, +, / sunt operatorii.
• Operanzii reprezintă valorile care intră în calcul.
Ei pot fi constante și variabile.
• Operatorii desemnează operațiile care se
execută în cadrul expresiei.
• În timpul execuției algoritmului expresiile sunt
evaluate.
• O expresie se evaluează respectând regulile
învaţate la matematică.
* / % + -
• Evaluarea unei expresii are loc astfel: se
înlocuiesc variabilele cu valorile lor și se
efectuează calculele, obținându-se astfel
valoarea expresiei.
• Expresiile se împart în două categorii:
Expresii aritmetice, care se construiesc așa
cum știm de la matematică, utilizând
operațiile matematice obișnuite (+, -, *, /).
Expresii logice care se construiesc utilizând
operatorii raționali: “=”, “<“, “>”, “<=“, “>=“,
“≠“ (diferit). În funcție de limbajul de
programare folosit, apar convenții de notație
specifice pentru operatori.
– Operatorii relaționali sunt operatori binari și
se pot aplica numai operanzilor numerici,
logici și de tip caracter.
– Operațiile se efectuează în ordinea apariției
operatorilor, de la stânga la dreapta.
– Propozițiile logice sunt folosite la
construirea expresiilor logice, utilizând
operatorii logici: și (and), sau (or) și negația
logică (not).
– Rezultatul expresiilor ce conțin operatori
logici este cel prezentat în logică
matematică și descris în tabelul următor:
a b not a a or b a and b
0 0 1 0 0
0 1 1 1 0
1 0 0 1 0
1 1 0 1 1
Pașii realizării unui algoritm
ALGORITM = înlănțuirea de pași simpli, operații
distincte care descriu modul de prelucrare a
unor date (de intrare) în scopul rezolvării unei
probleme (obținerea unor date de ieșire).
1. Citirea cu atenție a enunțului problemei.
2. Identificarea datelor de intrare și a celor de
ieșire.
3. Rezolvarea problemei pe cazuri particulare
și reprezentative.
(Determinarea metodei de rezolvare, generalizarea și
înțelegerea a problemei.)
Pașii realizării unui algoritm
4. Descrierea soluției problemei în limbaj
natural.
(prezentarea metodei folosite de rezolvare în limbaj
natural.)
CITESTE b,h;
DACA (b>0 si h>0)
SCRIE (b*h/2);
ALTFEL
SCRIE “Date incorecte”;
STOP
REPREZENTAREA ALGORITMILOR.
SCHEME LOGICE
• Schemele logice sunt reprezentări
grafice ale algoritmilor. Fiecărei operații
îi corespunde un simbol grafic.
• Schemele logice sunt notații grafice
formate din blocuri legate între ele prin
săgeți.
• O schemă logică descrie grafic pașii
unui algoritm.
• O schemă logică specifică prelucrările
care se execută asupra datelor.
Operații de bază
Simbolurile de bază utilizate într-o schemă logică
sunt:
Blocul de start
Blocul de stop
Blocul de citire
Blocul de scriere
Blocul de atribuire
Bloc de prelucrare
Blocul de decizie
Orientarea blocurilor
• “Curg” pe pagină de sus în jos ;
• Se dezvoltă arborescent;
• Sunt legate între ele prin săgeți direcționale;
• Conectori de pagină = leagă blocuri aflate pe
aceeași foaie de hârtie (cerculețe cu numere în
ele);
• Conectori între pagini = leagă blocuri aflate pe
foi de hârtie diferite (săgeți pline cu numere în
ele).
Blocul de start START
Citește
Schema logică ce se a și b
asociază determinării
valorii maxime dintre
două numere Da
a>b
Nu
max=a max=b
Afișează
max
STOP
Schemă logică / pseudocod
START
CITESTE b, h;
DACA (b>0 si h>0)
Citește SCRIE (A=b*h/2);
b și h
ALTFEL
b>0
SCRIE “date incorecte”;
Da Nu
and STOP
h>0
A=b*h/2 “date incorecte”
Afișează
STOP
Corespondență schemă logică - pseudocod
SCHEMĂ LOGICĂ PSEUDOCOD
START START
Citește
a, b
CITEȘTE a, b
Scrie SCRIE a, b
a, b
X←expresie X ← expresie
Operații Instrucțiuni
DACA c ATUNCI
Instructiunea 1
ALTFEL
Instructiunea 2
STOP STOP
Care tehnică de descriere este mai bună, pseudocodul
sau schemele logice ?
S2 Instrucțiunea 1
• Generalizând afirmația anterioară, se poate
ajunge la structura liniară alăturată. S1
S2
...
Sn
STRUCTURA SECVENȚIALĂ / LINIARĂ
Exemplu – Se dau două numere întregi de la
tastatură și se dorește calcularea sumei lor.
DACA expresie Da Nu
expresie
secventa_1
ALTFEL
S1 S2
secventa_2
STOP
Pașii algoritmului
– Se evaluează expresia logică;
– Dacă aceasta este adevărată se execută instrucțiunea 1;
– Dacă aceasta NU este adevărată se execută instrucțiunea 2.
STRUCTURA ALTERNATIVĂ (DE SELECȚIE)
Exemplu de la scheme logice: Maximul a două numere
întregi a și b citite de la tastatură.
max ← b;
Afișează
SCRIE max;
APLICAȚIE
Să se calculeze valoarea funcției matematice
f(x), pentru o valoare a lui x introdusă de la
tastatură.
: → ,
+ 1, ≤ −3
= − 2, ∈ (−3, 3)
− 4 + 5, ≥3
STRUCTURA DE SELECȚIE MULTIPLĂ
• O instrucțiune similară cu cea alternativă de tipul
DACA → Altfel (IF → ELSE), este instrucțiunea ALEGE
→ CAZUL (SWITCH → CASE) atunci când avem
secvențe imbricate complexe.
• Acest tip de structură execută selectare unei
instrucțiuni în funcție de o condiție dată.
• De multe ori poate apărea necesitatea de a alege o
secvență din mai multe posibile.
• Această alegere se va face în funcție de valoarea
unei expresii numită selector.
• În cele mai multe cazuri expresia selector este o
variabilă.
• Valorile selectorului în funcție de care alegem
secvența se vor numi cazuri.
STRUCTURA DE SELECȚIE MULTIPLĂ
START
ALEGE selector
CAZUL val_1:
secventa_1
IESIRE
CAZUL val_2:
secventa_2
IESIRE
............
CAZUL val_n:
secventa_n
IESIRE
ALTFEL
secventa_0
STOP
• Linia alege (<selector>) înseamnă “alege unul din mai
multe cazuri posibile, în funcție de valoarea variabilei
(<selector>).
• Fiecare dintre simbolurile <val_1>, <val_2>, ... , <val_n>,
reprezintă o valoare posibilă pentru <selector>.
• Fiecare “ramura”, după secvența de instrucțiuni aferentă,
urmează cuvântul cheie “IESIRE”.
– Acesta va determina compilatorul să abandoneze complet
instrucțiunea de selecție multiplă după execuția secvenței de
instrucțiuni aferentă cazului selectat.
• Pe lângă “ramurile” ce descriu cazurile, mai poate exista și
o ramură numită “ALTFEL”.
– Aceasta se va executa dacă valoarea selectorului nu este
cuprinsă în nici unul dintre ramurile anterioare <val_1>,
<val_2>, ... , <val_n>.
– Prezența ramurii “altfel” nu este obligatorie, situație în care
dacă nu este îndeplinit nici unul din cazurile date, pur și simplu
nu se execută nimic.
• Întreaga instrucțiune de selecție multiplă trebuie
cuprinsă între cuvintele cheie “inceput” și “sfarsit”.
STRUCTURA DE SELECȚIE MULTIPLĂ
Exemplu
Se citește de la tastatură valoarea variabilei x, care este selectorul
unei instrucțiuni de selecție multiplă. În funcție de valoarea lui x se
alege unul din cele patru cazuri:
• daca s-a citit x=-1, atunci se face atribuirea y ← x+2;
• dacă s-a citit x=0, atunci se execută o secvență de două
instrucțiuni: afișarea unui mesaj și atribuirea y ← x;
• dacă s-a citit x=1 atunci are loc atribuirea y ← x-1;
• dacă valoarea citită a lui x este diferită de -1, 0, 1, atunci se intră
pe ramura “ALTFEL” care conține o instrucțiune de afișare și
atribuirea y ← 100
• După cuvântul “STOP” care marchează încheierea instrucțiunii de
selecție multiplă, urmează afișarea variabilei y.
START
CITESTE x;
ALEGE (x)
CAZUL -1:
y ← x+2;
IESIRE
CAZUL 0:
scrie “Ati introdus 0”;
y ← x;
IESIRE
CAZUL 1:
y ← x-1;
IESIRE
ALTFEL
SCRIE “Nu e -1, 0, 1 “;
y ← 100;
STOP
SCRIE y;
Aplicație
START
S←0;
i←1;
CAT TIMP i<=3
CITESTE x;
S←S+x;
i←i+1;
SCRIE S;
STOP
Suma ← 0;
CITESTE a
CAT TIMP a<>10
CITESTE a
Suma=Suma+a
STOP
Structură repetitivă cu număr necunoscut de repetiții
II. Structură repetitivă cu test final
Paşii algoritmului:
1. se execută intrucţiunile;
2. se evaluează expresia;
– dacă aceasta este adevărată se trece la pasul 3;
– dacă este falsă se trece la pasul 4.
3. se execută instrucţiunile;
4. se iese din structură.
Pentru a nu intra într-o buclă infinită este necesar ca cel puțin una
din variabilele ce intervin în condiție să își modifice valoarea.
Spre deosebire de structură repetitivă cu test inițial, această
structură va permite execuția secvenței cel puțin o dată indiferent
de ce valoare logică conține condiția.
EXECUTA
Instrucțiuni
CAT TIMP expresie logică
Structură repetitivă cu număr necunoscut de repetiții
N ← 0;
EXECUTA
CITESTE a
N=N+1
CAT TIMP a==10
SCRIE N
STOP
Structură repetitivă cu număr cunoscut de repetiții
i, Suma: întreg
Suma ← 0;
PENTRU i = 1,10
Suma ← Suma +i
SCRIE Suma
STOP
Structură repetitivă cu număr cunoscut de repetiții
• Contorul i parcurge valorile 1, 2, .... , 10, și la fiecare pas,
pentru fiecare valoare a lui i, se execută corpul ciclului.