C++

Curs
7/10 (1 vot)
Conține 6 fișiere: doc
Pagini : 57 în total
Cuvinte : 14174
Mărime: 78.53KB (arhivat)
Puncte necesare: 0

Extras din curs

Un prim exemplu de program C++:

#include <iostream.h>

void main

{

int a;

cout << "Dati un numarn";

cin >> a;

cout << "Ati tastat numarul " << a << endl;

}

Obs.: << este operatorul de insertie

>> este operatorul de extractie

n este echivalent cu endl

cout este "console out"

cin este "console in"

Afisarea numerelor double (cu format) se face astfel:

#include <iostream.h>

void main()

{

double b;

cout << "Dati un numar real:" << endl;

cin >> b;

cout.setf(ios::fixed);

cout.setf(ios::showpoint);

cout.precision(2);

cout << b;

}

Obs: cout.precision(2) face ca numarul sa fie afisat cu 2 zecimale

Daca apoi, se doreste afisarea a trei zecimale, se face doar setarea cout.precision(3);

In general, cout afiseaza un format asemanator cu cel de intrare.

Supraincarcarea functiilor ( caz particular de polimorfism )

Ex:

#include <iostream.h>

double ave(double n1, double n2)

{return ((n1+n2)/2); }

double ave(double n1, double n2, double n3)

{return ((n1+n2+n3)/3.0);}

int main()

{

cout << "Media dintre 6.0, 7.5 si 8.75 este "

<< ave(6.0,7.5,8.75) << endl;

cout << "Media dintre 8.5 si 10 este "

<< ave(8.5,10.0);

return 0;

}

Deci avem 2 functii ave cu numar diferit de parametri. In acest caz compilatorul o va alege pe cea ce are numarul corect de parametri.

Supraincarcarea numelui unei functii

Inseamna definirea a doua sau mai multe functii cu acelasi nume. Cand supraincarcarea numelui unei functii trebuie sa aiba numar diferit de parametri formali sau anumiti parametri formali de tipuri diferite. Cand avem un apel de functie compilatorul foloseste definitia functiei a carei numar si tipuri de parametri formali se potriveste cu argumentele din apelul functiei.

Folosirea aceluiasi nume pentru a desemna lucruri diferite se numeste polimorfism (termen derivat din cuvinte grecesti ce inseamna "multe forme"). Supraincarcarea este un exemplu de polimorfism.

Ex. special de ambiguitate:

void f(int a) { cout << a; }

void f(float a) { cout << a; }

Avem 2 cazuri atunci cand apelam una din functii folosind constante:

I. daca apelam functia f cu o constanta de tip intreg atunci compilatorul

va folosi f(int a) ceea ce este corect;

II. daca apelam functia f cu o constanta de tip float atunci compilatorul

va semanala eroarea "Ambiguity between f(int) and f(float)"

In aceste conditii daca in functia main (sa zicem) apelam:

f(1.2) - "Ambiguity between ..."

f(1) - se executa f(int a)

f(a) - unde int a=2; -> se executa f(int a)

f(x) - unde float x=2.0; -> se executa f(float a)

Apeluri ale functiilor din C++

Se stie ca in C exista 2 tipuri de apeluri ale functiilor:

- prin valoare ( se transmite valoarea )

- prin referinta ( se transmite adresa )

Ex: (interschimbarea a doi intregi)

#include <iostream.h>

void schimba(int& a, int& b)

{

// Preconditie: parametri formali se numesc "parametri adresa".

// Postconditie: valorile celor doi intregi de la aceste adrese

// sunt intershimbate.

// Mecanismul acesta de apel prin referinta (adresa) este nou si

// specific limbajului C++. "Legaturile de adresa" sunt facute de

// catre compilator si sunt transparente programatorului.

// Ideea este ca se aloca spatiu de memorie pentru parametri adresa

// "a" si "b" cu specificarea ca inainte de parasirea functiei, valorile

// de la adresele parametrilor actuali (de exemplu "i" si "j") sunt

// actualizate cu valorile de la adresele lui "a", respectiv "b".

// Pe durata executiei functiei, parametrii actuali sunt inaccesibili

// in cazul nostru, variabilele "i" si "j". Se mai spune ca variabilele

// actuale sunt "trimise cu totul" (in sensul ca le stiu adresa lor).

int aux;

aux = a;

a = b;

b = aux;

}

void schimba(int *adresa1, int *adresa2)

{

// Preconditie: primesc ca parametri adresele celor doua variabile

// Postconditie: valorile celor doi intregi de la aceste adrese

// sunt intershimbate.

// Mecanismul acesta de apel prin referinta (adresa) este vechi si

// specific limbajului C. "Legaturile de adresa" trebuie facute de

// catre programator.

int aux;

aux = *adresa1;

*adresa1 = *adresa2;

*adresa2 = aux;

}

void main()

{

int i = 2, j = 3;

cout << "i = " << i << "; j = " << j << endl;

schimba(i, j);

cout << "i = " << i << "; j = " << j << endl;

schimba(&i, &j);

cout << "i = " << i << "; j = " << j << endl;

Preview document

C++ - Pagina 1
C++ - Pagina 2
C++ - Pagina 3
C++ - Pagina 4
C++ - Pagina 5
C++ - Pagina 6
C++ - Pagina 7
C++ - Pagina 8
C++ - Pagina 9
C++ - Pagina 10
C++ - Pagina 11
C++ - Pagina 12
C++ - Pagina 13
C++ - Pagina 14
C++ - Pagina 15
C++ - Pagina 16
C++ - Pagina 17
C++ - Pagina 18
C++ - Pagina 19
C++ - Pagina 20
C++ - Pagina 21
C++ - Pagina 22
C++ - Pagina 23
C++ - Pagina 24
C++ - Pagina 25
C++ - Pagina 26
C++ - Pagina 27
C++ - Pagina 28
C++ - Pagina 29
C++ - Pagina 30
C++ - Pagina 31
C++ - Pagina 32
C++ - Pagina 33
C++ - Pagina 34
C++ - Pagina 35
C++ - Pagina 36
C++ - Pagina 37
C++ - Pagina 38
C++ - Pagina 39
C++ - Pagina 40
C++ - Pagina 41
C++ - Pagina 42
C++ - Pagina 43
C++ - Pagina 44
C++ - Pagina 45
C++ - Pagina 46
C++ - Pagina 47
C++ - Pagina 48
C++ - Pagina 49
C++ - Pagina 50
C++ - Pagina 51
C++ - Pagina 52
C++ - Pagina 53
C++ - Pagina 54
C++ - Pagina 55
C++ - Pagina 56
C++ - Pagina 57
C++ - Pagina 58
C++ - Pagina 59
C++ - Pagina 60
C++ - Pagina 61
C++ - Pagina 62
C++ - Pagina 63
C++ - Pagina 64
C++ - Pagina 65
C++ - Pagina 66
C++ - Pagina 67

Conținut arhivă zip

  • curs_1(C++).doc
  • curs_2(C++).doc
  • curs_3(C++).doc
  • curs_4(C++).doc
  • curs_5(C++).doc
  • curs_6(C++).doc

Alții au mai descărcat și

Curs HTML

Internetul a fost descris ca „o colectie larga de retele“ sau ca o „retea de retele“. Desi ambele definitii sînt corecte, nici una nu surprinde...

Visual C++

Dupa cum multi dintre noi cunosc ,atomul este format din particule materiale si anume un nucleu incarcat electric pozitiv si mai multi electroni...

Limbajul SQL

CAPITOLUL 1. TEORIA BAZELOR DE DATE RELATIONALE 1.1. MODELUL RELATIONAL Modelul relational a fost propus de catre IBM si a revolutionat...

Programare în Java Script

Java - Sectiunea 3 Reducerea efectului de palpaire la crearea animatiilor Efectul suparator de palpaire a imaginii in cazul animatiilor, se poate...

Structuri de Date și Algoritmi

Arbori Binari Optimi Despre arbori binari optimi putem vorbi atunci cand, pentru fiecare dintre cheile unui arbore binar ordonat cunoastem...

Curs C++

Limbajele C si C++ sunt limbaje de programare de nivel înalt. Limbajul C a aparut în anii 1970 si a fost creat de Dennis Ritchie în...

Baze de Date

CAPITOLUL I INTRODUCERE IN BAZE DE DATE CURSUL 1 1. Ce este o baza de date? La inceput calculatoarele au fost utilizate numai pentru calcule...

Grafică pe calculator

Computer Graphics Cristian Rusu Office 3-8 cristian.rusu@ucv.cl What will be? It will not be an ENGLISH course! ENGLISH will be an...

Ai nevoie de altceva?