Sunteți pe pagina 1din 50

Un sistem de calcul realizează prelucrarea automată a informației care poate căpăta

diferite forme:
- Text
- Numere
- Imagini
- Sunete
Informația este stocată pe diferite medii de memorare în diferite formate sub formă de
date. În principiu un sistem de calcul nu poate să prelucreze decât șirul de cifre binare ( 1
sau 0 ) care sunt modelate prin impulsuri de curent.
1 -> 5v
0 -> 0v
21 (10)= ? (2)

A
ASCII
A -> 65 -> b2: 1 și 0
Data reprezintă o informație în interiorul calculatorului. Pentru a putea rezolva o
anumită problemă trebuie să determinăm modul în care se poate rezolva cât mai eficient
problema respectivă. În informatică modul de rezolvare a unei probleme, setul de pași care
trebuie urmat pentru rezolvarea respectivei probleme se numește algoritm.
Un sistem de calcul nu înțelege limbajul natural, din acest motiv au fost create limbaje
de programare artificiale. Limbajul de programare este alcătuit din exprimări simbolice
( instrucțiuni) care descriu operațiile de prelucrare pe care le trebuie să le execute
calculatorul. În principiu în informatică dezvoltarea prelucrării automate a datelor s-a
făcut în două direcții:
- Dezvoltarea echipamentelor astfel încât acestea să fie capabile să stocheze cât mai
multă informație pe care să o prelucreze cu viteză cât mai mare folosind algoritm cât
mai complecși
- Găsirea de noi algoritmi cât mai performanți care să scurteze obținerea rezultatelor
În principiu disciplina informatică este divizată astăzi în mai multe subdomenii:
- Algoritm și structuri de date
- Limbaje de programare
- Arhitectura calculatoarelor
- Sisteme de operare
- Ingineria programării
- Calcule numerice și satistice
- Sisteme de gestiune a bazelor de date
- Inteligența artificială
- Animație și robotică

Pentru a putea prelucra cu ajutorul calculatorului o problemă dată trebuie să


stabilim:

 date de intrare adică ceea ce ni se dă în ipoteză


 data de ieșire ceea ce ni se cere sau concluzia
 date de manevră sunt date intermediare care ne ajută să transformăm datele de intrare
în date de ieșire
exp. : ax2 + bc+c=0
x1=?
x2=?
Datele noastre de intrare: a,b,c (DI)
Datele de ieșire: x1,x2 (DE)
Dată de manevră: D (DM)
Date de intrare Prelucrează ca să obțină date de ieșire ( informații)
Pentru a putea rezolva o problemă cu ajutorul unui calculator vom parcurge
următoarele etape:
1. analiza problemei presupune analiza enunțului problemei din care vom identifica datele de
intrare, datele de ieșire și datele de manevră
2. elaborarea modului de rezolvare a problemei presupune găsirea metodei de rezolvare prin
identificarea prelucrărilor ce trebuie efectuate și a ordinii acestor prelucrări. Prelucrările și
ordinile acestora formează algoritmul de rezolvare a problemei
3. codificarea într-un limbaj de programare a algoritmului. Pentru a putea implementa algoritmul
cu ajutorul calculatorului acesta trebuie transpus într-un limbaj artificial numit limbaj de
programare.
4. Testarea programului și corectarea erorilor
x dacă x>0
x = 0 dacă x=0
x dacă x<0
x= -2 => -2 = 2
A testa înseamnă a introduce diverse seturi date de intrare care să permit analiza
tuturor situațiilor posibile pentru problema respectivă.

Reprezintă o mulțime ordonată și finită de pași prin care se definește fără echivoc
modul de rezolvare a unei probleme.
Proprietățile algoritmului:
1. Claritate, orice algoritm trebuie să fie definit fără ambiguități
2. Finitudine, un algoritm trebuie să fie finit pentru a putea ajunge la un rezultat
3. Generalitatea, un algoritm trebuie construit încât să permită rezolvarea unei clase de
probleme de același tip
4. Eficiență, un algoritm este eficient dacă se obțin rezultate corecte într-un timp cât mai
scurt
Orice dată din punct de vedere logic este definită prin tripletul identificator,
valoare, atribut.

Identificatorul datelor este numele datei utilizat pentru ca data respectivă să poată
fi accesată de către sistemul de calcul.

Identificatorul unei date poate fi format din litere, cifre și caracterul underliner. Nu
se acceptă spațiu în numele unei date: A1 este incorect și trebuie a_1.

Numele unei date începe în mod obligatoriu cu o literă. Valoarea datei reprezintă
conținutul zonei de memorie în care este stocată data respectivă. Pentru fiecare dată definim
domeniul de valori al datei respective ca fiind mulțimea valorilor pe care le poate lua data în
procesul de prelucrare.

Cel mai important atribut al unei date este tipul de date. Acesta definește
apartenența datei respective la o anumită plasă de date căruia îi corespunde un anumit mod de
reprezentare în memoria internă. Tot timpul data determină dimensiunea zonei de memorare
alocată datei și operatori care pot fi aplicați pe aceea dată.

Clasificarea datelor:

1. După momentul în care se produc în fluxul de informație avem:


- Date de intrare
- Date de ieșire
- Date de manevră
2. În funcție de modul de compunere avem:
- Date elementare
- Structuri de date
3. În funcție de tip avem:
- Date numerice
- Date logice
- Date șir de caractere
4. În funcție de valoare avem constante și variabile. O constantă este o mărime a cărei
valoare nu se schimbă pe parcursul unui algoritm. O variabilă este o mărime a cărei
valoare se poate modifica pe parcursul unui algoritm prin operația de atribuire.
Operația de atribuire se simbolizează astfel: sintaxa operației de atribuire este
următoarea:
Nume_variabilă <- expresie
Se evaluează întâi expresia iar rezultatul obținut este atribuit variabilei cu numele
specificat.
Exp. O variabilă: a <- 1
a <- a+6
a <- a *2
a <- a+3
a <- a-5
a=? a=12

a) Tipul întreg: -20, 518, etc.


b) Tipul real ( sunt numere cu virgulă dar în informatică se folosește punct) : 3.14, etc.
c) Tipul logic pot avea doar 2 valori : TRUE și FALSE. Tipul logic se mai numește și tip
ureal.
d) Tipul caracter este format dintr-un caracter cuprins între apostrofuri. Exp. : ’a’, ’1’
e) Tipul șir de caractere cuprinde mai multe caractere între apostrofuri. Exp.: ’’alfa’’,
’’1125’’
Operatorii aritmetici . Avem operații uzuale adunare, scădere, înmulțire și
împărțire. Se mai adaugă doi operatori: operatorul div care furnizează câtul împărțirii a două
numere
7 div 2= 3
20 div 3=6
Operatorul mod care furnizează restul împărțirii a două numere
7 mod2=1
20 mod 3=2
1289 mod 10=9
1308 mod 10=2
Obs! Restul împărțirii unui număr la 10 furnizează ultima cifră a numărului
respectiv.
Obs! Un număr este par dacă restul împărțirii la 2 este 0. Un număr este impar
dacă restul împărțirii numărului la 2 este 1.
Obs. Putem modifica prioritatea operațiilor folosind paranteză. În informatică se
folosesc doar paranteze rotunde.
Se aplică pe propoziții. O propoziție este o afirmație despre care putem spune că
este adevărată sau falsă.
Exp. : P1: Afară ninge. (F)
P2: 2+3=6 (F)
P3: 13>0 (A)
Operatorii logici se clasifică în:
a) Operatori unari (lucrează pe o singură propoziție)
b) Operatori binari ( lucrează pe 2 propoziții)
Operatorul NOT este un operator unar și reprezintă negația logică. Tabelul de adevăr
pentru acest operator este următoarea:
p NOT p
A F
F A

Operatorul AND ( și logic) este un operator binar. O propoziție compusă cu „ and ”


este adevărată dacă ambele propoziții ce o compun sunt adevărate simultan.
p q p AND q
A A A
A F F
F A F
F F F

Operatorul OR ( SAU logic) este un operator binar adică lucrează pe 2 propoziții.


Propoziția compusă cu „or” este adevărata dacă măcar una din propozițiile ce o compun este
adevărată.
p q p OR q
A A A
A F A
F A A
F F F

a <– T
b< – T
c <– T
e <– T and T or ( not T and not T)
e <– T and T or ( F and F)
e <– T or F
e<–T
a <– T
b< – F
e <– T and F or ( not T and not T)
e <– T and F or ( F and A)
e <– F or F
e <– F

a <– F
b< – F
c <– F
e <– (not F or F) and ( ( not F and not F) or ( F or F or F)
e <– (T or F) and ( ( F and T) or ( F or F)
e <– T and ( T or F)
e <– T and T
e <– T

Un algoritm poate fi reprezentat prin schemă logică sau pseudocod


Elementele unei scheme logice.
O schemă logică reprezintă un ansamblu de elemente grafice și cuvinte cheie prin
care se reprezintă un algoritm.
1. Blocul terminal
START
STOP

Marchează începutul sau sfârșitul unei scheme logice.

2. Blocul de intra-re ieșire


CITEȘTE
SCRIE

Operația de citire înseamnă prelucrarea datelor de intrare de obicei de la tastatură și


stocarea lor în memorie pentru a putea fi utilizate în prelucrările impuse de algoritm.
Operația de scriere constă în afișarea datelor de ieșire pe monitor ( se iau din memoria
DE).

3. Blocul de calcul
Calculează una sau mai multe operații de atribuire.
4. Blocul de decizie

DA c.l NU

Are rolul de a ramnifica un algoritm în funcție de valoarea de valoarea de adevăr a


condiției logice.

5. Săgeata indică sensul de parcurgere a unei scheme logice.


6. Conectorul O unește două ramuri ale unui algoritm
Pseudocod formă de reprezentare a algoritmilor care folosește două cuvinte cheie:
CITEȘTE, SCRIE, DACĂ, ATUNCI, REPETĂ, etc.

 Se citește de la tastatură valoarea a două variabile x și y, să se realizeze un algoritm


care calculează suma și produsul celor două variabile.
DI: x,y
DE: S, P

START

Citește x,y

CITEȘTE x, y Calculează S <– x+y

Calculează P <– x *y
S <– x+y SCRIE S, P
P <– x *y

SCRIE S, P

STOP

 Se citește de la tastatură valorile a două variabile l1, l2 care reprezintă lungimea


respectiv lățimea unui dreptunghi. Să se realizeze un algoritm care determină perimetrul și
aria dreptunghiului.
D.I. : l1, l2
D.E. : P, A
START

CITEȘTE l1, l2

CALCULEAZĂ
P 2*l1 + 2*l2
A l1*l2

SCRIE P, A

STOP
Citește l1 , l2
Calculează
P 2*l1 + 2*l2
A l1*l2
SCRIE P, A

Da cl Nu

acțiune1 acțiune2

cl – condiția logică
Dacă cl atunci
acțiune1
astfel
acțiune2
Se evaluaeză c.l., dacă c.l. este adevărată atunci se merge pe ramura Da și se execută
acțiune1. În caz contrar pe condiție logică falsă se merge pe ramura Nu și se execută acțiune2
Obs. :
1. Dacă pe una dintre ramuri trebuie să se execute două sau mai multe acțiuni,
atunci acestea vor fi cuprinse în instrucțiunea compusă început sfârșit care se poate simboliza
astfel
2. Există situații în care pe ramura Nu, nu se execută nici o acțiune. Spunem în acest caz
că avem o structură alternativă.

Da c.l. Nu

acțiune Dacă c.l. atunci


acțiune

 Se citește de la tastatură două numere x și y. Să se determine maximul dintre cele


două valori citite:
D.I.: x,y
D.E. : max START

CITEȘTE x,y

Da x>y Nu

max x max y

SCRIE max

STOP

CITEȘTE x,y
Dacă x > y atunci
max x
altfel
max y
SCRIE max

 Se citesc de la tastatură două valori a și b care reprezintă numărătorul și respectiv


numitorul unei ecuații. Se citește apoi valoare pentru variabila k. Să se verifice dacă ecuația se
poate simplifica cu k în caz afirmativ să se afișeze fracția simplificată.
De exemplu:
1) a=4
b=16 2/8 se poate simplifica
c=2
2) a= 6
b= 19 nu se poate simplifica
=5
3) a=100
b=0 nu este o fracție
c=5

D.I. : a,b,k
D.E. : mesaj
START

CITEȘTE a,b,k

a mod k= 0
Da and Nu
a mod k=0

Scrie se „simplifică’’ SCRIE ”nu se simplifică’’

SCRIE
a div k,’ /’, b div k

STOP

Citește a,b,k
Dacă a mod k=0 and b mod k=0 atunci
Început
Scrie se „simplifică’’
Scrie a div k,’ /’, b div k
Sfârșit
Altfel
Scrie ”nu se simplifică’’
 Se citesc de la tastatură trei numere x, y, z. Să se verifice dacă numere sunt
pitagoreice afișând un mesaj corespunzător.

START

CITEȘTE x,y,z

x*x=y*y +z*z
OR
Da y*y= x*x+z*z Nu
OR
SCRIE sunt z*z== x*x+ y*y Scrie nu sunt
nr. pitagoreice nr. pitagoreice

STOP

CITEȘTE x,y,z
Dacă x*x=y*y +z*z
OR
y*y= x*x+z*z
OR
z*z== x*x+ y*y atunci
Scrie sunt nr. pitagoreice
Altfel
Scrie nu sunt nr. pitagoreice
Se utilizează în situațiile în care acțiunile trebuie să se execute de mai multe ori ( în
mod repetat). Se clasifică astfel:

1. Structuri repetitive cu un număr necunoscut de pași


- Structura repetitivă cu test inițial
- Structura repetitivă cu test final
2. Structuri repetitive cu un număr cunoscut de pași ( s.n. pentru)
Structura repetitivă cu test inițial

Cât timp cl execută

Nu cl Da acțiune

acțiune

Principiu de funcționare:

- Se testează inițial condiția logică cât timp condiția logică este adevărată se execută în
mod repetat acțiunea sau acțiunile
- Când condiția logică este falsă se iese din structura repetitivă și se continuă cu
următoarele acțiuni din algoritm
OBS! Dacă la un pas trebuie să se execute una sau mai multe acțiuni, aceasta va fi
cuprinsă în instrucțiunea compusă începu – sfârșit care se simbolizează astfel.

OBS! În cazul structurii repetitive cu test inițial este posibil ca acțiunea să nu execute
nici măcar o dată. Acest lucru este posibil atunci când condiția logică este falsă chiar de la
primul pas.
 Se citește de la tastatură un șir de valori una câte una cât timp nu a fost introdusă
valoarea 3. Să se realizez un algoritm care calculează produsul valorilor citite cu
excepția valorii 3.
D.I. : x
D.E.: P

START

CITEȘTE x

CALCULEAZĂ
P 1

Nu x<>3 Da

SCRIE P P P*x

STOP CITEȘTE X

CITEȘTE x
P 1
Cât timp x < > 3 execută
Început
P P*x
Citește x
Sfârșit
Scrie P
 Se citește de la tastatură un șir de valori cât timp nu s-a întâlnit valoarea 0. Afișați
valoarea din șirul citit care au produsul cifrelor numere pare. Fiecare număr citit are exact 3
cifre,
x= 121, 150, 513, 371, 213
D.I.: x START

D.E.: P

D.M.: a,b,c CITEȘTE x

NU x<> o Da

STOP cop x
c cop mod 10
cop cop div 10
b cop mod 10
cop cop div 10
a cop mod 10
cop cop div 10

P a*b*c

Da P mod 2 =0 Nu

Scrie x

Citește x

CITEȘTE x
Cât timp x < > o execută
Început
cop x
c cop mod 10
cop cop div 10
b cop mod 10
cop cop div 10
a cop mod 10
cop cop div 10
P a*b*c
Dacă P mod 2 =0 atunci
Scrie x
Citește x
Sfârșit

 Se citește de la tastatură un șir de valori cât timp nu am întâlnit valoarea 0. Să se


afișeze perechile de numere consecutive citite în care al doilea număr din pereche este dublul
primului.
2, 4, 29, 5, 10, 20, 7, 14, 0
2, 4
5, 10
10, 20
7, 14 START

D.I. : x CITEȘTE x
D.E.: P

Nu x<> 0 Da

Scrie P P x*(x+1)

STOP Citește x

Citește x
Cât timp x < > o execută
Început
P x*(x+1)
Citește x
Sfârșit
Scrie P
acțiune Repetă acțiune

până când cl

Da cl Nu

Principiu de funcționare
În această structură condiția logică se testează la sfârșit. Acțiunea sau acțiunile se
execută în mod repetat până când condiția logică devine adevărată. Practic repetarea acțiunilor
se execută pe condiția falsă.
 Se citește de la tastatură un șir de valori până când este întâlnită valoarea 0. Să se
calculeze suma valorilor citite
DI: x
DE: S, START

Citește x

S 0

S S+x

Citește x

Da x mod 2=0 NU

Scrie S

STOP
Citește x
S 0
Repetă
S S+x
Până când x= 0
Scrie S

X: 15, -3, 8, 1, 14, 0


X=15, S=0
Pas1 S= 0+15=15
x= -3
-3=0? Nu
Pas 2 S= 15+ (-3)= 12
x=8
8=0? Nu
Pas3 S= 12+8=20
x=1
1=0? Nu
Pas4 S=20+1=21
x=14
14=0? Nu
Pas5 S=21+14=35
x=0
0=0? Da
S=35
 Se citește de la tastatură un șir de valori pe rând fiecare valoare de la tastatură până când
se întâlnește valoare 3. Să se calculeze produsul.
D.I. : x
D.E. : P

Citește x
P 1
Repetă
P P*1
Citește x
Până când x=3
Scrie P
START

CITEȘTE x

P 1

P P*1

CITEȘTE x

Da x=3 Nu

Scrie P

STOP

OBS! În cazul structurii repetă până când acțiunea sau acțiunile se execută cel puțin o dată.
x: 2, -3, 1, 8, 4, 3
x=2, P=1
Pas1 P= 1*2=2
x=-3
-3=3? Nu
Pas 2 P=2*(-3)=-6
x=1
1=3? Nu
Pas3 P=-6*1=-6
x=8
8=3? Nu
Pas4 P=-6*8=-48
x=4
4=3? Nu
Pas5 P=-48 *4= -192
x=3
3=3? Da
P= -192
 Se citește un șir de valori de la tastatură până când este întâlnită valoarea 3. Determină
numărul de valori pare și numărul de valori impare din șirul citit.
D.I. : x
D.E.: nrp, nri
START

CITEȘTE x

nrp 0
nri 0

Da x mod 2=0 Nu

Nrp nrp+1 nri nri+1

CITEȘTE x

Da x=3 Nu

Scrie nri, nrp

STOP
Pentru contor ← vi la vf execută
acţiune
Unde:
- Contor este o variabila folosita la numarare;
- vi este valoarea initiala a contorului;
- vf reprezinta valoarea finala a contorului.
Principiul de functionare:
Actiunea ( sau actiunile) se executa in mod repetat pentru valori ale contorului incepand de la v i
pana la inclusiv vf. Contorul creste in mod automat la fiecare pas cu unul.
 Se citeşte de la tastatură un număr natural n. Să se calculeye suma numerelor naturale mai
mici sau egale cu n.
S=1+2+3+4+………+n
D.I. : n
D.E. : S
D.M. : cont
Citeşte n
S 0
Pentru cont 1 la n execută
S S+cont
Scrie S
n=5
S=0
Pas1: cont = 1
S=0+1=1
Pas2: cont = 2
S=1+2=3
Pas3: cont = 3
S=3+3=6
Pas4: cont = 4
S=6+4=10
Pas5: cont=5
S= 10+5=15
Observatie!
Daca la un pas trebuie sa se execute doua sau mai multe actiuni acestea vor fi cuprinse in
instructiunea compusa inceput, sfarsit.
 Se citeşte de la tastatură un număr natural n. Să se determine produsul numerelor
naturale pare mai mici sau egale cu n.
D.I. : n
D.E. : P
D.M. : cont
Citeşte n
P 1
Pentru cont 1 la n execută
Dacă cont mod 2=0 atunci
P P*cont
Scrie P

 Se citeşte de la tastatură două numere naturale a şi b. Să se realiyeye un algoritm care


calculează P=ab.
D.I. : a,b
D.E. : P
D.M. : cont
Citeşte a,b
P 1
Pentru cont 1 la b execută
P P*a
Scrie P

 Se citesc de la tastatură două numere naturale aşi b care reprezintă capetele unui interval
închis [a;b]. Să se afişeze toate numerele impare din intervalul [a;b].
Citeşte a,b
Pentru cont a la b execută
Dacă cont mod 2’1 atunci
Scrie cont

 Se citesc de la tastatură un număr natural n. Apoi se citesc pe rând n perechi de numere x, z.


Se cere să se afişeze perechile în care x este divizibil şi să se determine numărul acestor perechilor
Citeşte x,z
nr 0
Pentru cont 1 la n execută
Început
Citeşte x,z
Dacă x mod z=0 atunci
Început
Nr nr+1
Scrie x,z
Sfârşit
Sfârşit
Scrie nr

 Se citeşte de la tastatură un număr natural n. Apoi se citesc pe rând n valori fiecare valoare
având exact 2 cifre. Afişaţi oglinditul fiecărei valori.
D.I. : n,x
D.E. : o
D.M. : cont

Citeşte n
Pentru cont 1 la n execută
Început
Citeşte x
b x mod 10
x x div 10
a x
o b*10+a
Scrie o
Sfârşit

 Se citesc de la tastatură două numere naturale a şi b reprezentând capetele unui interval


închis [a;b], fiecare dintre ele având exact două cifre. Afişaţi numărul palindrom din intervalul închis
[a;b].
Citeşte a, b
Dacă (a >= 10) and ( a <= 99) and (b >=10) and (b <= 99) atunci
Pentru cont a la b execută
Început
ogl (cond mod 10) *10 +cond div 10
Dacă cont = ogl atunci
Scrie ogl
Sfârşit
aux a
a b
b aux
 Se citeşte de la tastatură valorile a trei variabile a, b, c. Să se realizeze un algoritm care
sa afişeze conţinutul variabilelor a,b , c în ordine crescătoare.

Exemplu: DI: DE:


a= 103 a= -3
b= 56 b=56
c= -3 c=103

Pas1: a > b ? Da a=56 b=103


a↔ b
a=-3
Pas2: b > c ? Da a= -3 b=103
b↔c
b = 56
Pas3: a > b? Da
a↔b a= -3 b=56 c = 103

Citeşte a,b. c
Dacă a > b atunci
Început Scrie aux a
a b
b aux

Sfârşit
Dacă b> c atunci
Început Scrie aux b
b c
c aux
Sfârşit

Dacă a > b
Început Scrie aux a
a b
b aux
Sfârşit
Scrie a,b,c

 Se citesc de la tastatură notele a trei elevi n1, n2, n3. Să se afişeze cele trei note în
ordine descrescătoare.

Citeşte n1, n2, n3


Dacă n1 < n2 atunci
Început Scrie aux n1
n1 n2
n2 aux

Sfârşit

Dacă n2 < n3 atunci


Început Scrie aux n2
n2 n3
n3 aux
Sfârşit

Dacă n1 < n2
Început Scrie aux n1
n1 n2
n2 aux
Sfârşit
Scrie n1, n2, n3
Un şir de valori se poate citi:
cat timp nu s-a întâlnit o valoare specificată ( cât timp);
pana când întâlnim o valoare specificată ( repetă până când);
se citesc pe rând n valori ( pentru).
Se iniţializează minimul cu prima valoare din şir.
Într-o structură repetitivă la fiecare pas:
 vom compara minimul cu noua valoare citită x ;
 dacă x > min vom schimba minimul prin atribuirea min x

Citeşte x
min x
Cât timp x < > valoarea specificată execută
Început
Dacă x< min atunci
min x
Citeşte x
Sfârşit
Scrie min

Citeşte x
min← x
Repetă
Dacă x < min atunci
min x
Citeşte x
până când x= valoarea specificată
Scrie min
Citeşte n, x
min x
Pentru i 2, n execută
Început
Citeşte x
Dacă x < min atunci
min x
Sfârşit
Scrie min

 Se citeşte de la tastatură un număr natural n. Apoi se citesc pe rând n numere întregi.


Determinaţi valorile din şirul de valori şi verificaţi dacă max obţinut este pozitiv sau negativ.

Citeşte nr. x
Max x
Pentru cont 2, n execută
Început
Citeşte x
Dacă x > max atunci
max x
Sfârşit
Dacă max < 0 atunci
Scrie „este negativ”
Altfel
Scrie „este pozitiv”
Scrie max

 Se citeste de la tastatura un sir de valori cat timp nu s-a intanit valoarea 3 . Se cere sa
se verifice daca max dintre valorile din sir este divizibil cu 5.
DI: x
DE: mesaj Citeşte x
DM: max max x
Cât timp x < > 3 execută
Început
Dacă x > max atunci
max x
Citeşte x
Sfârşit
Dacă max mod 5 = 0 atunci
Scrie „max este divizibil cu 5”
altfel
Scrie „max nu este divizibil cu 5”
Scrie max
Citeşte x
Cât timp x > 0 execută
Început
uc x mod 10
x x div 10
< prelucrează uc >
Sfârşit

Pornind de la numărul natural x vom extrage cifre din acesta într-o structură repetitive cu
număr necunoscut de paşi cât timp numărul are cifre ( x > 0).
La fiecare pas :
 vom extrage ultima cifră prin operaţia: uc x mod 10;
 vom indica noul x din care vom continua extragerea de cifre prin operaţia: x x div 10;
 vom prelucra ultima cifră conform cerinţei problemei.

Cât timp c.l execută Dacă c.l atunci


acţiune repetă acţiune
până când not c.l

Citeşte x
Dacă x > 0 atunci
Repetă
uc x mod 10
x x div 10
< prelucrează uc >
Până când x = 0

 Se citeşte de la tastatură un număr natural x. Determină câte cifre are x.


Citeşte x
nr 0
Cât timp < > execută
Început
uc x mod 10
x x div 10
nr nr +1
Sfărşit
Scrie nr

 Se citeşte de la tastatură un număr natural x. Verificaţi dacă x conţine cifre pare


afişând un mesaj corespunzător.
Citeşte x
par true
Cât timp ( x< > 0) and ( par = true) execută
Început
uc x mod 10
x x div 10
Dacă uc mod 2=1 atunci
par false
Sfârşit
Dacă par = true atunci
Scrie „are doar cifre pare”
altfel
Scrie „are doar cifre impare”
x: 856 ogl = 658
Citeşte x
olg 0
Cât timp x > 0 execută
Început
uc x mod 10
x x div 10
ogl ogl*10+uc
Sfârşit
Scrie ogl

Pornind de la un număr natural x considerăm că oglinditul lui iniţial este egal cu zero.
Vom extrage cifre din x cât timp are cifre şi la fiecare pas:
- extragem ultima cifră din relaţia: uc x mod 10;
- indicăm noul x şi vom continua extragerea de cifre;
- construim oglinditul prin relaţia: ogl ogl*10+uc;
x=856
ogl 0
Pas1: 856 > 0? Da
uc = 6, x=8
ogl 0*10+6=6
Pas2: 85> 0? Da
uc = 5, x = 8
ogl 6*10+5=65
Pas3: 8 > 0? Da
uc=8, x=0
ogl 65*10+8=658
Pas4: 0>0? Nu

Observaţie! Atât în algoritmul de extragere de cifre dintr-un număr cât şi în algoritmul de


construire a oglinditului a unui număr, valoarea iniţială a lui x se pierde. Dacă în problemă avem
nevoie şi de valoarea iniţială a lui x vom folosi o copie a lui x
 Se citeşte de la tastatură un număr natural x. Se cere să se verifice dacă x este
palindrom.
Un număr este palindrom dacă este egal cu oglinditul lui.

Citeşte x
o 0
Cât timp x > 0 execută
Început
uc x mod 10
x x div 10
ogl ogl*10+uc
Sfârşit
Dacă x=o atunci
Scrie o

 Se citesc de la tastatură două numere a şi b reprezentând capetele unui interval [a;b].


De câte numere palindrom sunt în intervalul [a;b].
Citeşte a,b
nr 0
o 0
Pentru x a la b execută
Început
uc x mod 10
x x div 10
ogl ogl*10+uc
Sfârşit
Dacă x=o atunci
nr nr+1
Scrie nr
V1: Citeşte x, y
Cât timp x < > y execută
Dacă x > y atunci
x x–y
Altfel
y y–x
cmmdc x
<prelucrează x>

Cât timp x < > y la fiecare pas se compară x cu y, dacă x > y atunci se modifică
valoarea lui x prin atribuire x x – y. În caz contrar (y > x) se modică valoarea lui y prin
atribuirea y y – x.
Cmmdc al celor două numere va avea valoarea ultimului x.
Exemplu: x=12, y=9
Pas1: 12 < > 9? Da
12 > 9? Da
x= 12-9=3
Pas2: 3 < > 9? Da
3 > 9? Nu
y= 9-3=6
Pas3: 3< >6? Da
3>6? Nu
y= 6-3=3
Pas4: 3 < > 3? Nu
Cmmdc 3
Observaţie! Algoritmul modifică valorile iniţiale ale numerelor x, y şi dacă avem mai
departe în problemă nevoie de valorile iniţiale vom lucra cu copii pentru a le conserva.
V2: Citeşte x, y
Cât timp y > 0 execută
Început
r x mod y
x y
z r
Sfârşit
cmmdc x
<prelucrează x>
Dându-se cele două valori x şi y cât timp y > 0 la fiecare pas:
- vom calcula restul împărţirii lui x la y;
- x va lua valoarea lui y;
- z va lua valoarea restului cmmdc va fi dat de ultima valoare a lui x.
Varianta prin împărţirii repetate este eficientă ca timp de execuţie faţă de varianta de
determinare cmmdc prin scădere repetate.
 Se citesc de la tastatură două numere naturale a şi b. Să se verifice dacă c dacă cele
două numere sunt prime între ele.
D.I.: a,b
D.E.: mesaj
D.M.:r
Citeşte a, b
Cât timp b > 0 execută
Început
r a mod b
a b
b r
Sfârşit
Cmmdc a
Dacă cmmdc=1 atunci
Scrie „sunt prime între ele”
altfel
Scrie „nu sunt prime între ele”

 Fiind date două numere x şi y care reprezintă numărătorul respectiv numitorul unei
fracţii. Se cere să se afişeze fracţia în formă simplificată.
Citeşte x, y
c1 x
c2 y
Cât timp y > 0 execută
Început
r x mod y
x y
z r
Sfârşit
x c1 div cmmdc
y c2 div cmmdc
Scrie x, ’/’ , y
Foloseşte metoda falsei ipoteze. Se presupune că numărul citit x este număr prim şi
marcăm acest lucru printr-o variabilă boolean prim pe care o iniţializăm cu zero. Parcurgem
posibilii divizori ai lui x începând de la 2 până la x div 2 şi dacă în această parcurgere găsim
un divizor al lui x atunci înseamnă că x nu este număr prim şi ceea ce am presupus devine
fals.
Varianta 1:
Citeşte x
Prim true
Pentru d 2 la x div 2 execută
Dacă x mod d = 0 atunci
prim false
Dacă prim = true atunci
Scrie „număr prim”
altfel
Scrie „nu e număr prim”
x=10, prim=true
Pas1: d=2
10 mod 2=0? Da
Prim=false
Pas2: d=3
10 mod 2=0? Nu
Pas3:d=4
10 mod 4=0? Nu
Pas4: d=5
10 mod 5=0? Da
Prim=false
Prim=true? Nu
Nu e prim

Varianta a2:
Citeşte x
prim true
d 2
Cât timp (d<= x div 2) and (prim =true) execută
Început
Dacă x mod d=0 atunci
prim false
d d+1 // trecem la următorul divizor posibil
Sfârşit
Dacă prim’ true atunci
Scrie „e prim”
altfel
Scrie „nu e prim”
 Se citeşte de la tastatură un număr natural x. Construiţi oglinditul lui x şi verificaţi
dacă oglinditul lui x este număr prim.
Citeşte x
prim true
d 2
ogl 0
Cât timp x > 0 execută
Început
uc x mod 10
x x div 10
ogl ogl*10+uc
Sfârşit
Scrie ogl
Cât timp (d <= x div 2) and (prim=true) execută
Început
Dacă ogl=0 atunci
prim false
d d+1
Sfârşit
Dacă prim=true atunci
Scrie „e prim”
altfel
Scrie „nu e prim”

 Se citeşte de la tastatură un număr nat a. Determină primul număr prim.


Citeşte a
găsit false
x a-1
Cât timp ( x>= 2) and ( găsit=false) execută
Început
Prim= true
d 2
Cât timp (d <= x div 2) and (prim=true) execută
Început
Dacă x mod d=0 atunci
prim false
d d+1
Sfârşit
Dacă prim= true atunci
Început
găsit true
Scrie x
Sfârşit
x= x-1
Sfârşit

 Se citeşte de la tastatură două numere naturale a şi b care reprezintă capetele unui


interval închis[a;b]. Determină câte numere prime se află în [a;b].
Citeşte a,b
nr 0
Pentru x a la b execută
Început
Prim true
d 2
Cât timp (d <= x div 2) and (prim=true) execută
Început
Dacă x mod d=0 atunci
prim false
d d+1
Sfârşit
Dacă prim=true atunci
nr nr+1
Sfârşit
Scrie nr
Citeşte x
Pentru d 2 la x div 2 execută
Dacă x mod d=0 atunci
<prelucrează x>

Se parcurg într-o structură repetitivă cu număr cunoscut de paşi posibilii divizori ai lui
x. Dacă restul împărţirii lui x la posibilul divizor d este egal cu zero, atunci d este într-adevăr
divizor al lui x şi va fi prelucrat conform cerinţelor problemei.

 Se citeşte de la tastatură un număr natural x. Să se afişeze divizorii proprii a lui x.


D.I.: x
D.E.: d
Citeşte x
Pentru d 2 la x div 2 execută
Dacă x mod d=0 atunci
Scrie d

 Se citeşte de la tastatură un număr natural x. Să se verifice dacă suma divizorilor


proprii a lui x este un număr par afişându-se un mesaj corespunzător.
D.I.: x
D.M.: d,S
D.E.: mesaj
Citeşte x
S 0
Dacă x mod d=0 atunci
S S+d
Dacă S mod d=0 atunci
Scrie „suma este pară”
altfel
Scrie „suma este impară”
 Se citeşte de la tastatură şi b care reprezintă capetele intervalului închis [a;b].
Determinaţi câte numere perfecte există în intervalul închis [a;b].
Citeşte a,b
nr 0
Pentru x a la b execută
Început
S 1
Pentru d 2 la x div 2 execută
Dacă x mod d=0 atunci
S S+d
Dacă x=S atunci
Nr nr+1
Sfârşit
Scrie nr

 Se citeşte de la tastatură două numere naturale a şi b care reprezintă capetele unui


interval unui interval închis [a;b]. Afişaţi perechile de numere prietene din [a;b].

D.I.: a,b
D.M.: d1,d2,S1,S2,x,z
D.E.: x,y
Citeşte a,b
Pentru x a la b-1 execută
Început
S x+1
Pentru d1 2 la x div 2 execută
S S 1 + d1
Pentru y x+1 la b execută
Început
S2 y+1
Pentru d2 2 la y div 2 execută
S S 2 + d2
Dacă S1=S2 atunci
Scrie x,z sunt numere prietene
Sfârşit
Sfârşit
Citeşte x
f 2
Cât timp x > 1 execută
Început
P 0
Cât timp x mod f=0 execută
Început
P P+1
x x div f
Sfârşit
Dacă prim > 0atunci
Scrie f, ’^’ , p
Sfârşit

Se pleacă cu primul factor prim posibil, doi. Cât timp x se poate descompune în
factori primi la fiecare pas:
 iniţializăm puterea pentru factorul prim curent cu zero;
 cât timp x se divide cu f cu factorul prim curent vom incrementa puterea şi vom
determina noul x ca fiind x div f;
 dacă f adică factorul prim curent apare în descompunere îl vom afişa cu puterea
corespunzătoare;
 trecem la următorul factor prim posibil.
 Se citeşte un număr natural x. Afişaţi unul din factorii prim care apare la puterea cea
mai mare în descompunerea lui.
Baza10: 0,1,2,3,4,5,6,7,8,9
Numărul de simboluri utilizate pentru reprezentarea unei valori determină baza de
numeraţie în care se lucrează
cifra < q
baza4 : 0,1,2,3

15(10) = ? (2)

15(10) = 1111(2)
32(10) = ? (2)

32(10) = 100000(2)
Pentru implementarea algoritmului vom folosi următoarele variabile:
nr10 – numărul în baza 10
nq – număeul în baza q
q – baza în care vrem să-l transformăm
p – variabila pe care ne ajută să realizăm mutarea cifrelor pe zeci, sute, etc.

D.I.: n, 10, q
D.M.: nq
D.E.: p
Citeşte n10, q
nq 0
p 1
Cât timp n10 > 0 execută
Început
nq nq + p* (n10 mod q )
n10 n10 div q
p p*10
Sfârşit
Scrie nq
n10 = 15, nq =0
q= 2
p=1
Pas1: 15 > o? Da
nq =0 + 1* (n10 mod 2 ) = 1
n10 =15 div 2 = 7
p= p*10= 10

Pas2:7 > 0? Da
nq =1 + 10* (7 mod 2 ) = 11
n10 =7 div 2 = 3
p= 10*10=100

Pas3: 3 > 0? Da
nq =11 + 100* (3 mod 2 ) = 111
n10 =3 div 2 = 1
p= 100*10=1000

Pas4: 1 > 0? Da
nq =111 + 1000* (1 mod 2 ) = 1111
n10 =1 div 2 = 0
p= 1000*10=10000

Pas5: 0 > 0? Nu

Se citeşte de la tastatură un număr natural n şi un număr q aparţinând intervalului


închis de la 2 până la 9. Să se verifice dacă n poate fi considerat o reprezentare a unui număr
în baza q.
Şirul lui Fibonacci
1, dacă i = 1 sau i= 2

Fibi =

fibi-1 + fib i-2, în caz contrar

În elaborarea algoritmului vom folosi următoarele variabile:


n – numărul de termeni ai şirului
fib1 – termenul anteprecedent
fib2 – termenul precedent
fib3 – termenul curent
Să se genereze primii n termeni ai şirului lui Fibonacci.
Date de intrare: n
Date de ieşire: fib3
Date de manevră: fib1 , fib2
Citeşte n
fib1 1
fib2 1
Scrie fib1 , fib2
Pentru i 3 la n execută
Început
fib3 fib1 + fib2
fib1 fib2
fib2 fib3
Scrie fib3
Sfârşit
Să de afişeze toţi termenii şirului lui Fibonacci mai mici decât un număr natural n
introdus de la tastatură.
Citeşte n
fib1 1
fib2 1
Scrie fib1 , fib2
Cât timp fib1 + fib2 < n execută
Început
fib3 fib1 + fib2
fib1 fib2
fib2 fib3
Scrie fib3
Sfârşit
Code Blocks
Limbajul de programare C++ este un limbaj artificial.
Pentru a putea executa cu ajutorul calculatorului algoritmii descrişi în pseudocod,
aceştia trebuie implementaţi într-un limbaj de programare. Implementarea algoritmului într-un
limbaj de programare se realizează într-un editor de texte obţinându-se în acest mod
programul sursă cale în C++ are extensia .cpp .
Pentru a ajunge la programul executabil cu extrema exe se va trece prin mai multe
etape:
- Compilarea ( traducerea instrucţiunilor din limbajul de programare în limbajul maşină, obţinut
program obiect care va avea extensia .obj.
- Editarea legăturilor ( ajut 2 programe numite compilator şi editor de legături)
La fel ca şi un limbaj natural orice limbaj de programare e caracterizat de:
 Sintaxă reprezintă totalitatea legăturilor de scriere corectă astfel încât să se realizeze
construcţii de compilator
 Semantica reprezintă semnul construcţiilor corecte d.p.v. sintactic
 Vocabularul limbajului este format din totalitatea cuvintelor ce pot fi folosite într-un
program.
 Setul de caractere reprezintă construirea cuvintelor ; format din litere mari şi mici ale
alfabetului englez ; cifrele de la 0 la 9 ; caractere speciale +, -, #, =. Cuvintele pot fi identificatori,
separatori, constantă, cuvinte cheie şi operatori.
Identificatori indică variabilele; formaţi din litere şi cifre; începe cu o literă; nu se admite
spaţiul doar underline.
OBS! Limbajul de programare C++ face diferenţa dintre litere mici şi litere mari.
Separatori: spaţiul, tab, „ ; ” , „ ,”.
Cuvinte cheie sunt cuvinte speciale folosite în limbajul de programare cu o semnificaţie
precisă neputând fi folosiţi în alt context decât cel permis de limbaj de programare.
Tipuri de date se clasifică în:
- Tipuri de date standard adică tipuri implementate în limbaj
- Tipuri predefinite de utilizatori
Tipuri standard:
 Chiar pentru memoria caracterelor interne – memoria numerelor întregi
 Float
 Double memoria numerelor reale
 Void: date ce nu au tip precizat
În C++ nu e implementat tipul logic în schimb unei expresii al cărui rezultat e logic îi putem
atribui valoarea 0 pentru false şi 1 pentru true.
Tipul de dată poate fi schimbat cu ajutorul modificatorilor de tip schimbându-se în acest mod
şi elementele zonei de memorare rezervată datei respective
Modificatorii de tip sunt: short, log, signed, unsigned.
Pe tipul de dată chiar se pot aplica doar modificatorii signed şi unsigned.
Pe tipurile de date reale se poate aplica doar modificatorul long şi acesta doar pe tipul double.
Dacă aplicăm un modificator de tip int numai trebuie să precizăm int acesta fiind subînţeles.
# include< iostream.h> // directivă de procesare ci fişier header
void maine ( )funcţie rădăcină void – nu întoarce rezultatul
{ int a,b, S // daclaraţii variabile
cout <<”a=”;
cin >>a;
cout <<”b=’; instrucţiuni
cin >>b;
S= a+b;
cout<<”S=”<<S<<endl;
}

( ) – nu are parametri
{ …… - bloc sau instrucţiune compusă
…}
Comentariu
Reprezintă zone de program neexecutabile utilizate pentru a face anumite precizări.
Comentariu de o linie.
Comentariu de mai multe linii. / *………….
………….*/
Declararea variabilelor
Tip variabilă nume_variabilă
Dacă avem mai multe variabile de acelaşi tip ele se separă prin virgulă.
Dacă avem variabile de tipuri deferite ele se separă prin punct şi virgulă.
Exemplu: float a,b;int

Instrucţiuni de citire – scriere

TASTATURĂ memorie
Zona de memorie rezervată variabilei
Cin>>nume_variabila
În fluxul de citire cin putem introduce valori pentru mai multe variabile.
Exemple: cin>>a>>b>>c;
Însă după introducerea valorii unei variabile trebuie apăsată tasta enter.
12 <Enter>
5 <Enter>
6 <Enter>

Scrierea
Monitor Memorie

Cout<<”mesaj”<<nume_var;
- cout <<”mesaj”;
- cout<<nume_var;
- cout<<var1<<var2<<….
Afişează valoarea variabilei cu numele specificat
Endl mută cursorul pe rândul următor.
Colegiul Național Calistrat Hogaș, Tecuci

Clasa a IX-a A

Prof.: Ciocanel Adriana

S-ar putea să vă placă și