Sunteți pe pagina 1din 63

Centrul de Excelență în Economie și Finanțe

Unitatea de curs:
Programarea structurată
Profesor: Galina LUNCAȘU
Master în Științe ale Educației, grad didactic unu
Email: luncasu.galina@gmail.com
Structura cursului:
✓ 2 ore teoretice
✓ 2 ore practice
✓ studiu individual

Bibliografia necesară cursului, disponibilă la adresa:


https://trello.com/
Forme de examinare:
Examen final ( 40%) și Evaluare pe parcursul semestrului ( 60% )

Evaluare pe parcursul semestrului:


✓ evaluări în cadrul orelor teoretice
✓ evaluări în cadrul orelor practice
✓ lucrări elaborate în cadrul orelor de tip studiu individual
Ore teoretice:
✓ Se prezintă noțiuni teoretice și exemple de aplicare practică a acestora.

Nu ezitați să adresați întrebări.


Email: luncasu.galina@gmail.com

Ore practice:
✓ Se elaborează și se depanează programe relativ simple
✓ Se aplică ceea ce s-a predat la curs

Studiu individual:
✓ Fiecare elev lucrează independent pentru completarea portofoliului, care se
prezintă la data solicitată.
Exemplu de program (1)
Exemplu de program (2)
Elementele de bază ale limbajului C/C++
Setul de caractere
Identificatori

Corect: Inorect:
Program Nume Prenume
Nume_Prenume_elev1 a+b
_nume 2b

Observații:
1. Un identificator poate avea orice lungime, dar sunt luate
în considerație numai primele 31 de caractere
2. Limbajul C/C++ este case-sensitive
3. Este recomandat să se utilizeze identificatorii sugestivi.
Este util să se construiască identificatorii prin compunerea
mai multor cuvinte sau rădăcini ale acestora
Cuvinte rezervate
Comentarii

Din punct de vedere sintactic: un comentariu este


- O succesiune de caractere încadrate între /* și */, acest comentariu poate fi format din
mai multe linii;
- O succesiune de caracter care începe cu // și se termina la sfârșitul liniei.

Exemple:
/* acesta este un comentariu care poate fi scris pe mai
multe linii */

// acest comentariu se termina la sfarsitul liniei

/* Dacă instructiunile programului si comentariile sunt in


dezacord, atunci probabil amandoua sunt eronate.*/
Separatori

Separatori ”universali” : spațiu ‘ ‘, TAB, ‘ \t ’, sfârșit de linie - newline – ‘ \n ’ și comentariile

Separatori specifici: virgula ‘ , ‘

Delimitatori: punct și virgula ‘ ; ’, apostrof ‘ ‘ ‘, ghilimele ‘ “ ‘


Structura generală a unui program C/C++
Tipuri de date standard
Un tip de date definește: Mulțimea de valori, Modul de reprezentare, Operații
Tipuri de date standard
Denumirea tipului Caracteristici

Reține un singur caracter


char Exemple: ‘A’, ‘a’, ‘%’

Reține numere ]întregi cu semn


int Exemple: 23, -45, 0

Reține numere reale în format cu virgula mobila, în simpla precizie


float Exemple: 7.8965, -4.123, 7.0

Reține numere reale în format cu virgula mobila, în dubla precizie


double Exemple: 123456789.896523, -123456.654789, -123456789.0
Se utilizează la prelucrarea numerelor foarte mari sau foarte mici
Tip de date special care nu specifică un anumit set de valori inițiale, dar care
void poate fi specificat ulterior declarării
Declarații

denumire_tip_standard variabilă;

Declarare variabile Efect


int a,b,c; am definit trei variabile numite a,b, c de tip intreg
float x; x variabilă reala simplă precizie
char ch; ch variabilă de tip caracter
unsigned n; variabila n este de tip int fără semn
unsigned long m ; variabila m este de tip long fără semn
unsigned char p ; variabila p este de tip char fara semn
double d ; variabila d este un număr real dublă precizie
Tipuri de date char

Exemplu:
char litera_mica;
char litera_mica=97;// reprezentare numerica din ASCII
sau
char litera_mica=‘a’;
// reprezentare character din ASCII
Tipuri de date int

Exemplu:
int a=9;
int b=6725;
int c=-31567;
Tipuri de date float

Exemplu:
float x=9.789;
float y=-6725.123;
float z=-3156723;
float q=1.2e-3;
float w=-2.67E+4
Tipuri de date double

Exemplu:
double numar_foarte_mare=123456789.987654321;
double numar_foarte_mic=-123456789.987654321;
double numar_mare=123456789.0;
Tipuri de date void

Exemplu:
void salut(void)
{
cout<<“Salutam programatorii in c++”<<endl;
}
Modificatori de tip

unsigned (fără semn) Exemplu:


long (lung) unsigned int numar;
signed (cu semn) signed int b;
register (registru)
long double c;
short (scurt)
Variabile

tip nume_variabila; Exemplu:


int empNum;
Variabile

Exemplu:
int a, b=3, c=2+4;
char z;
float x=b*2.5,y;
Poziția declarațiilor de variabile :
✓ în C ++ putem plasa declarațiile de variabile oriunde în corpul unei funcții;
✓ în C declarațiile de variabile trebuie să fie plasate la începutul corpului
funcției, înaintea oricărei instrucțiuni.
Preprocesare
Directiva #include

#include<nume_fisier_antet.h>

Exemplu:
#include<math.h>
#include<iostream.h>
#include<stdio.h>
Directiva #define

#define identificator_constanta valoare

Exemplu:
#define PI 3.1415
#define NrMaxElevi 35

Exemplu:
✓ în fișierul antet values.h sunt definite simbolice MAXINT(cu valoarea
32767), MAXLONG (cu valoarea 2147483647).
Expresii
Tabelul priorităților celor mai des utilizați operatori
Prioritate Operator

1 Paranteze si acces la structuri: ( ) [ ] -> .

2 Operatori unari: ! ~ + - ++ -- & * sizeof (tip)


3 Inmultire, împãrtire, rest : * / %
4 Adunare si scãdere: + -
5 Deplasãri: << >>
6 Relatii: <= < > >=
7 Egalitate: == !=
8 Produs logic bit cu bit: &
9 Sau exclusiv bit cu bit: ^
10 Sumã logicã bit cu bit: |
11 Produs logic: &&
12 Sumã logicã: ||
13 Operator conditional: ? :
14 Atribuiri: = *= /= %= += -= &= ^= |= <<= >>=
15 Operator virgula: ,
Operator de atribuire

✓ Operatorul de atribuire (=) are rolul de a atribui o valoare unei variabile.

1 x = 618; // variabila x va avea valoarea 618.

! Întotdeauna operația de atribuire se desfășoară de la dreapta la stânga.

✓ Operandul din dreapta poate fi de asemenea o variabilă

1 a = b; //variabila a primește valoarea variabilei b.


// nici o modificare ulterioară a lui b nu va
afecta valoarea lui a.
Exemplul 1

Exemplul 2
1 variabila1 = variabila2 = ... = variabilaN = valoare;

1 a=b=100;
Operatori aritmetici binari

Operator Descriere Efect

+ adunare Returnează suma operanzilor.

Returnează diferența dintre operanzi. Primul este descăzutul, iar al doilea


- scădere
scăzătorul.

* înmulțire Returnează produsul dintre operanzi.

Returnează rezultatul împărțirii primului operand la al doilea. Dacă ambii sunt


/ împărțire
întregi, se va efectua împărțirea întreagă (se returnează câtul), altfel cea reală.

Returnează restul împărțirii primului operand la al doilea. Ambii operanzi trebuie


% modulo
să fie întregi.
Operatori unari de incrementare/decrementare
Minus unar – schimbă semnul operandului de ex. -x. Poate fi aplicat datelor întregi, reale;

Operator de incrementare ++ adună o valoare operandului. Poate fi utilizat atât în forma postfixată x++,
cât și formă prefixată ++x;

Operator de decrementare -- scade o valoare operandului. Poate utilizat atât în forma postfixată x--, cât şi
formă prefixată --x;

Operatorii de incrementare și decrementare pot fi aplicați datelor numerice sau caracter. Utilizarea
acestor operatori în expresii, în formă prefixată sau postfixată, determină evaluarea acestora în moduri
diferite, astfel:

y=++x; este echivalent cu: x=x+1; y=x;


y=x++; este echivalent cu: y=x; x=x+1;

y=--x; este echivalent cu: x=x-1; y=x;


y=x--; este echivalent cu: y=x; x=x-1;
Operatori aritmetici binari compuși
se obțin prin combinarea operatorilor aritmetici binari cu operatorul de atribuire.

Toți acești operatorii modifică valoarea operandului stâng prin adunarea, scăderea,
înmulțirea sau împărțirea acestuia prin valoarea operandului drept.
Exemplu: utilizarea operatorilor aritmetici
Operatori relaționali binari
servesc la compararea valorilor celor doi operanzi şi nu modifică valorile operanzilor.

Rezultatul unei expresii în care apare unul din operatorii relaţionali binari este întreg şi are valoarea 0 dacă
relaţia este falsă, sau valoarea 1.

Aceşti operatorii pot fi aplicaţi datelor de tip întreg, real sau caracter.
Operatori logici

servesc la compararea expresiilor logice


Operatorul condiţional ?:

Operatorul condiţional evaluează o expresie şi întoarce o valoare în cazul în care această


expresie este adevărată şi un altul în cazul în care expresie este evaluată ca fiind falsă.

Formatul său este:


condiţie ? resultat1 : resultat2

dacă condiţia este adevărată atunci este returnată valoarea resultat1, în caz contrar este
returnată valoarea resultat2.
Conversii

Limbajul C++ este considerat un limbaj cu conversii implicite.

Prin conversii se subînțelege transformarea valorii unei variabile dintr-un tip în altul.

Conversia poate fi implicită sau realizată în mod explicit de către programator.

Conversiile implicite au loc atunci când este necesar ca operatorii şi argumentele


funcţiilor să corespundă cu valorile aşteptate pentru acestea.
Reguli de conversie
Conversii – implicite
Când un operator binar se aplică între doi operanzi de tip diferit, are loc o conversie
implicită a tipului unuia dintre ei, şi anume, operandul de tip “mai restrâns” este
convertit la tipul “mai larg” al celuilalt operand.

Conversii implicite se produc şi în cazul operaţiei de atribuire, în sensul că valoarea din


partea dreaptă este convertită la tipul variabilei acceptoare din stânga.
Exemple:

int i;
float f;
double d;
char c;

// sunt permise atribuirile:

i=f; /* cu trunchierea părții fracționare */


f=i; d=f; f=d; c=i; i=c;
Reguli de conversie
Operatorii aritmetici convertesc automat operanzii la un anumit tip, dacă operanzii sunt de
tip diferit.
Se aplică următoarele reguli:
1. operanzii char şi short int se convertesc în int, operanzii float se convertesc în double.
2. dacă unul din operanzi este double restul operanzilor se convertesc în double, iar
rezultatul este tot double.
3. dacă unul din operanzi este long restul operanzilor se convertesc în long , iar rezultatul
este tot long.
4. dacă unul din operanzi este unsigned restul operanzilor se convertesc în unsigned, iar
rezultatul este tot unsigned.
5. dacă nu se aplică ultimele 3 reguli, atunci operanzii vor fi de tip int şi rezultatul de
asemeni de tip int.
Conversii – explicite numite cast
Conversiile explicite de tip (numite şi cast) pot fi forţate în orice expresie folosind un operator unar (cast)
într-o construcţie de forma:

(tip) expresie

în care expresia este convertită la tipul numit.

Operatorul cast are aceeaşi precedenţă cu a unui operator unar.


Exemple:

int a=10, b=3;


double c;

c=a/b; //rezultatul va fi 3

// pentru a obţine rezultatul de tip double vom scrie :

c=(double)a/b;
Citirea / scrierea datelor în limbajul C++
Stream – fluxul de intrare/ieșire

cin (console input) – flux de intrare ‘>>’


cin>>nume_variabila;

cout(console output) –flux de ieșire ‘<<‘


cout<<expresie;
cout<<expresie <<endl;
Albastru – date de ieșire
Verde – date de intrare
Procesul de execuție a programului:
// ieșire
1

2 //intrare

3 //ieșire

4 //intrare

5 //ieșire

Rezultat
Exemplu (ieșiri)
Exemplu (intrari)
Problema 1:
De la tastatură se citește lungimea laturii unui pătrat. Să se elaboreze un program prin
intermediul căruia se va afișa la ecran suprafața și perimetrul figurii.
Problema 2:
De la tastatură se citesc două numere întregi. Să se elaboreze un program prin intermediul
căruia se va afișa la ecran suma, diferența, produsul, câtul și restul dintre cele două
numere
Problema 3:
Să se elaboreze un program prin intermediul căruia se va oferi posibilitate utilizatorului
codul din tabelul ASCII al unui caracter citit de la tastatura și de a afișa caracterul care
corespunde poziției din tabelul ASCII, dacă numărul poziției se citește de la tastatură
Formatarea prin manipulatori

Manipulatorii sunt funcții speciale, care pot fi folosite împreună cu operatorii de inserție
într-un flux de ieșire sau de extracție dintr-un flux de intrare, în scopul modificării
caracteristicilor formatului informațiilor de intrare/ieșire.

Manipulatorii furnizează, ca rezultat, flux obținut în urma acțiunii manipulatorului se va


include in biblioteca iomnip.
Manipulatori fără parametru
Manipulatorii fără parametru se folosesc:

Cout<<manipulator;
Cin>>manipulator;
Manipulatori cu parametru
Prototipul manipulatorilor cu parametru este:

Cout<<manipulator(argument)<<afisare_date;
Cin>>manipulator(argument)>>citire_date;
Exemplu cu manipulatori:
Exemplu cu manipulatori:
Problema 4:
De la tastatură se citește un caracter. Să se elaboreze un program prin intermediul căruia
la ecran se va afișa un pătrat interiorul căruia să fie completat cu caracterul citit.
Problema 5:
Lunar Ionel primește de la părinți A lei pentru a achita factura pentru consumul de gaz și
apă. În luna curentă consumul de gaze a fost de 43.23 m^3, iar de apă de 67.78 m^3. De la
tastatură se citește suma de bani primită de Ionel, costul unui m^3 de gaz și costul unui
m^3 de apă. Să se elaboreze un program prin intermediul căruia se va afișa la ecran suma
ce necesită a fi achitată de către Ionel, cât și suma de bani rămasă.
Tema pentru acasa
Problemele de rezolvat șI materialul pentru studiu se află pe cardul
cu data de 19.09.2018

Mult succes!

Întrebările le adresați în scris la adresa de email


luncasu.galina@gmail.com

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