Sunteți pe pagina 1din 12

Mihaela Ungureanu: mihaela.ungureanu@upb.

ro
Catedra Electronică Aplicată şi Ingineria Informaţiei, B133, B136,
www.geocities.com/mickyungureanu
Laborator: Sala 1 de calculatoare, user: sdastudent, password: sda
Dev-C++, www.bloodshed.net
Evaluarea
a) Activităţile evaluate şi ponderea fiecăreia:
- aprecierea activităţii la laborator: 30%;
- punctaj obţinut în timpul semestrului (tema de casă, lucrări la curs): 20%
- examen final (scris): 50%.
b) Cerinţele minimale pentru promovare: conform „Regulamentului
studiilor universitare de licenţă” şi „Regulamentului privind
activitatea profesională a studenţilor”, cu obligativitatea obţinerii a cel
puţin 50% din punctajul afectat activităţii de laborator.
08.12.21 Curs 1 - Introducere. Structuri de date - noţiuni generale 1
Curs 1 - Introducere. Structuri de date - noţiuni
generale
• Introducere
– Tipuri de bază. Pointeri. Tablouri.
– Paradigme de programare
– Programare structurată
– Recursivitate
• Noţiuni generale privind structurile de date
– Reprezentări statice şi dinamice
– Funcţii specifice

08.12.21 Curs 1 - Introducere. Structuri de date - noţiuni generale 2


Introducere

• Introducere
Etapele de realizare ale unui produs software:
1. Definirea cerinţelor: cerinţe  specificaţii  analiza
specificaţiilor;
2. Proiectare (DESIGN):
– proiectare de ansamblu (se sparge modulul în submodule, etc);
– proiectarea structurilor de date;
– proiectarea algoritmilor;
– analiza performantelor;
– codarea (scrierea programului);
3. Implementarea
4. Testare
08.12.21 Curs 1 - Introducere. Structuri de date - noţiuni generale 3
Introducere
Specificaţiile aplicaţiei Analiză
(limbaj natural)

Model de analiză Proiectare


(diagrame)

Model de proiectare Translatare


(diagrame)

Model de implementare Compilare, link-editare


(cod sursă)

Model executabil
(cod binar)
Testare

08.12.21 Curs 1 - Introducere. Structuri de date - noţiuni generale 4


Introducere
#include <iostream> - pt cout
#include <stdlib.h> - pt system
using namespace std; - pt a folosi cout simplu (std::cout)
int main(int argc, char *argv[]) – programul principal
{ - programul principal se află între acolade, { şi }
cout << “Test” << endl;
system("PAUSE"); - în stdlib
return 0; – valoarea returnată de programul principal
} – sfârşitul programului principal

08.12.21 Curs 1 - Introducere. Structuri de date - noţiuni generale 5


Introducere – Tipuri de bază. Pointeri. Tablouri
• Tipuri de bază: char, int, float, double
Ex.: char c1,c2='A'; int i1,i2=10;
float f1,f2=1.2; double d1,d2=1.e-4;
• Pointeri: tipBaza *numeVariabila;
Ex.: int *p; Zona memorie
int a = 10; pointer
adresa informaţie
p = &a;
*p = 20;
Alocarea dinamică: new – delete şi malloc – free (în <stdlib.h>)
pointerLaTip = new tip; delete pointerLaTip;
numePointer = (tipBaza *) malloc(nrElemente * sizeof(tipBaza));
free(numePointer);

08.12.21 Curs 1 - Introducere. Structuri de date - noţiuni generale 6


Introducere–Tablouri.Paradigme de programare
Tablouri de date
tipElement numeTablou[dimensiune1][dimensiune2][…];

Ex.: int tablou1[10][10] = {1, 2, 3};


int tablou2[10];
- tablou[2] sau *(tablou + 2)
Paradigme de programare C++
• Imperativă
• Procedurală (iteraţia, recursivitatea, selecţia)
• Orientare pe obiecte (OO)

08.12.21 Curs 1 - Introducere. Structuri de date - noţiuni generale 7


Introducere
Calculul factorialului
• Recursiv
int fact1(int n)//varianta recursiva
{
int raspuns;
if(n == 1) return(1);
raspuns = fact1(n-1)*n;
return(raspuns);
}
• Iterativ
int fact2(int n)
{
int raspuns = 1;
for(int i = 1; i <= n; i++) raspuns *= i;
return(raspuns);
}

08.12.21 Curs 1 - Introducere. Structuri de date - noţiuni generale 8


Noţiuni generale privind structurile de date
• Definire
struct numeStructura
{
declaratii variabile;
} [listaVariabileTipNumeStructura];

typedef struct [numeStructIntermediar]


{
declaratii variabile
} numeStrunctura;

!!! struct numeStructura var1,…;

08.12.21 Curs 1 - Introducere. Structuri de date - noţiuni generale 9


Noţiuni generale privind structurile de date
• Accesul la membrii structurii
numeVariabilaStructura.numeMembru
numeVariabilaPointerLaStructura->numeMembru
(*numeVariabilaPointerLaStructura).numeMembru
• Structuri cu autoreferire - exemple
typedef struct nod { NOD n1;
int informatie; PNOD pn2;
nod *urmatorul;
} NOD, *PNOD;
struct nod { nod n1;
int informatie; pnod pn2;
nod *urmatorul;
};
typedef nod *pnod;

08.12.21 Curs 1 - Introducere. Structuri de date - noţiuni generale 10


Noţiuni generale privind structurile de date
struct a {
struct b *pb;
};
struct b {
struct a *pa;
};

Ex.:
typedef struct {
float re;
float im;
} complex;
08.12.21 Curs 1 - Introducere. Structuri de date - noţiuni generale 11
Noţiuni generale privind structurile de date
• Uniuni
union numeUniune
{
declaratii variabile;
} [listaVariabileTipNumeUniune];
typedef union [numeUniuneIntermediar]
{
declaratii variabile
} numeUniune;

!!!!!! union numeUniune var1,…;


• Accesul la membrii structurii
numeVariabilaUniune.numeMembru
numeVariabilaPointerLaUniune->numeMembru

08.12.21 Curs 1 - Introducere. Structuri de date - noţiuni generale 12

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