Documente Academic
Documente Profesional
Documente Cultură
INFORMATIE
Program informatic -> traducerea intr-un limbaj de programare (sau echivalent) a unui algoritm
Algoritm-> sir finit si logic de pasi,cu scopul rezolvarii unei clase de probleme pornind de la o suma de
date de intrare pt a obtine o suma de date de iesire (cu ajut unui sist de calcul)
2x+3=0 ? algoritm
Proprietati:
Obs. In cadrul alg deterministi: intoarce acelasi rezultat pt aceleasi date de intrare
2x+3=0, x=-3/2
1. scheme logice
2. l pseudocod
3. l de programare
Rez ec de grad I
L pseudocod: modalitate de a descrie un alg, bazat pe formalizarea unor actiuni prin cuvinte cheie:
daca, atunci, start, stop, citeste, scrie etc.
Nu este limbaj natural dar nici de programare-> formalism
1. start
2. citeste a, b // var de intrare
3. Daca a=0 atunci
4. Daca b=0 atunci
a. 5. scrie “x oarecare”
b. altfel 6. scrie “x nu exista”
SF DACA
7. 8. Afiseaza x
8. 9. STOP
#include <iostream>
int main()
int a, b;
double x;
cout<<"dati a:";
cin>>a;
cout<<"dati b:";
cin>>b;
if (a==0)
if (b==0)
cout<<" x oarecare";
else
cout<<" x nu exista";
{x=(double)-b/a;
return 0;
Elemente de limbaj C
Vocabular: contine lit mici, lit mari, cifre, operatori :, , +, %, ||, &&, car speciale #, cuv rezervate: if,
while etc (EN, 26 caractere)
Tastatura: max 256 simboluri (standard) ASCII -> coduri ASCII (2^8=256)
asciitable.com
Identificatori: nume valide pt entitati din program (cum denumesc constante, variabile, functii etc)
Reg de constr pt identificatori valizi: pot contine lit mari, lit mici, cifre, “_”. Nu pot incepe cu o cifra.
1. o litera NU
2. o_litera DA
3. o_literă NU
4. 0litera NU
5. _litera0 DA
6. _alta_litera DA
7. literaturĂ NU
8. literaMICA DA
9. litera1silitera2 DA
10. litera1+2 NU
Separatori si comentarii
Separa 2 entitati: …. spatiul (int x), ; (separa 2 instr) , (un sir de var/cte de acelasi tip=enumerare)
() (separa o fct de arg sale: calcul(a, 5-b) ), [] (vectori, matrici: v[3]= al 4-lea elem al vect v[])
Comentarii: pt a creste lizibilitate codului (explicarea lui)
- pe o linie: // <comm>
- pe mai multe linii:
/* <>
<>
<> */
Expresii: constr sintactice valida ce contin operatori, operanzi, paranteze, fctii etc
Eval unei expr (stg la dreapta, respectand reg de calcul din matem + folosirea parantezelor)
a=56;
Constante. Variabile
Matematica:
N (op permise: +, *, ?- D>=S -> D-S, daca nu, nu) 7>5-> 7-5=2, NU 5-7=-2 (nu e din N)
rad(2)=14143…/10000…0
short, long
https://www.pbinfo.ro/articole/58/tipuri-de-date-c-cpp
1. Tipuri simple
o Tipuri întregi
o Tipuri reale
o Tipul pointer
o Tipul bool (logic C++)
2. Tipuri derivate
o Tipul tablou
o Tipul structură
o Tipul enumerare
<tip> <lista_var>;
exp:
char c=’a’;
bool adev, neadev; // orice val diferita de zero in C/C++ -> adev
if (c) // c=’a’ -> true
https://en.cppreference.com/w/c/language/operator_precedence
++ --
int x=9;
Analog pt - -
x=x+5; x+=5;
e=(b--)+(++a);//?
Exemplu:
int a, b, aux;
a=b;
b=aux;
Clasificare:
1. Trei:
a. str. secventiala : am doar instr de atribuire, citiri, afisari, Nu am de evaluat conditii, nu
am repetitii.
cond
B A
sintaxa: if (<cond>)
[else] <B> // { … }
semantica: se eval <cond>, daca este adev se exec <A>, eventual, in caz contrar se exec <B>
pragmatica: exp: det max intre 2 nr.e (x si y). Maxim -> depun rez
if (a<b)
Maxim=b;
else
Maxim=a;
Maxim= (a<b)?b:a ;
3. rep. test initial
Condiţia de
repetiţie
Secvenţa
de acţiuni
de repetat
Instr while
<A> // { }
sematica: se eval <cond>. Cat timp ramane adev <cond> se exec <A>
mananc un biscuit;
instr succesiva;
i=1; // S=S+i=0+1;
while (i<=n)
S=S+i; //
i++; // S+=i++;
S= n+ …. + 6+4+2; // n –par
S=0; i=n;
while (i>=2)
S=S+i;
i=i-2;
S=suma(i=2,342) [5*i/(i+2)]
S=0; i=2;
while (i<=342)
S=S+5*i/(i+2);
i=i+1;
S=1/(2*3)+1/(3*4)+1/(4*5)+ …+1/(n*(n+1))
S=0; i=2;
while (i<=n) {
S=S+1/(i*(i+1));
i=i+1;
P=n!=1*2*3*4*5*….*n
P=1; i=1;
while (i<=n) { P=P*I; i=i+1;}
S= 1/1-1/2+1/3-1/4+…..+(-1)^(n+1)*(1/n)
S=0; i=1;
while (i<=n)
{ if (i%2==0)
S=S-1/i;
else // i=impar
S=S+1/i;
i++;
Obs: str de control= fundam (Bohm &Jacopinni au dem ca orice algoritm poate fi descris cu ajutorul
acestor 3 structuri)
Trei:
a.
selector
secv 1 secv n+1
secv 2 secv n
Instr switch.
….
Semantica: se eval <expr> si functie de rezultat se exec cazul coresp. In caz contrar (optional) se exec
<B>
exemplu
switch (nrzi)
….
instr_urm;
instr do…while
Secvenţa
de acţiuni
de repeta t
Condiţia de
ieşire
repetiţie
Obs. Str repetitive tb sa contina minim o instr care sa permita parasirea buclei
S=1+2+3+…+n
S=0, i=1;
do
S=S+i;
i++;
c. rep cu contor
in crestere/ descrestere
contor := vi
v < = vf
Secventa
de actiuni
de repetat
v := v + pas
Instr for
<A>;
unde
exp
S=1^2+2^3+ …+ n^(n+1)
S=0;
i=1;
while (i<=n)
S=S+i;
S=S+i;
12
123
1 234
….
1 2 3 4 …. n
i- contor pt linii
cout<<endl; }
Pas 1: 1<=10
1<=1 -> 1” “
i=2
Pas 2: 2<=10
1““2
i=3
Pas 3: 3<=10,
1 2 3
21
321
4321
….
n 3 2 1
cout<<j<<” “;
cout<<endl;}
123 n // i=n
… // I =n-1
1 2 3 // i=3
1 2 // i=2
1 // i=1
cout<<j<< “ “;
cout<<endl;}
(se putea si mai bine, e facut in viteza, dar descrie dificultatea medie a exam)
4. + este
a. operator
b. operand
5. constantele, la declarare au
a. tip si valoare
b. doar tip
c. doar valoare
a. o bucata de cod
b. o constanta
c. o variabila (x=y)
d. nu pot suprascrie ceva
7. / este
a. separator
b. operator
8. str de control fundam sunt
a. if, switch, while
b. if , while, secv //
c. if, do..while, for
d. niciuna de mai sus
9. S=2*6+3*7+….+ are termenul general
a. i*(2*i+2), daca I pleaca de la 2, din 1 in 1
b. i(i+4), daca I pleaca de la 2
c. i*j, daca I pleaca de la 2 si j de la 6 si sunt din 1 in 1