Documente Academic
Documente Profesional
Documente Cultură
2. TIPURI DE DATE
Tipul unei date const ntr-o mulime de valori pentru care s-a adoptat un anumit mod de
reprezentare n memoria calculatorului i o mulime de operatori care pot fi aplicai acestor
valori. Tipul unei date determin lungimea zonei de memorie ocupat de acea dat. n general,
lungimea zonei de memorare este dependent de compilator
Tipurile de baz sunt:
char un singur octet (1 byte=16 bii), capabil s conin codul unui caracter din setul local
de caractere;
int numr ntreg, reflect n mod tipic mrimea natural din calculatorul utilizat;
float numr real, n virgul mobil, simpl precizie;
double numr real, n virgul mobil, dubl precizie.
n completare exist un numr de calificatori, care se pot aplica tipurilor de baz char, int,
float sau double: short, long, signed i unsigned. Astfel, se obin tipurile derivate de date.
3. CONSTANTE
O constant este un literal (o form extern de reprezentare) numeric, caracter sau ir de
caractere. Numele i valoarea unei constante sunt identice. Valoarea unei constante nu poate
fi schimbat n timpul execuiei programului n care a fost utilizat. Tipul i valoarea ei sunt
determinate n mod automat, de ctre compilator, pe baza caracterelor care compun literalul.
Constante numerice ntregi (literali numerici, compui din cifre, fr punct zecimal).
Constante ntregi n baza 10 (Ex. 56, -98), baza 8 (Ex. 0476) sau baza 16 (Ex. 0x458,
0X4Abc).
Constante ntregi, de tipuri derivate: de tip long int (Ex. 897655L), de tip unsigned
int (Ex. 678u) sau unsigned long int (Ex. 8765UL).
4. VARIABILE
Variabilele sunt nume simbolice utilizate pentru memorarea valorilor introduse pentru datele
de intrare sau a rezultatelor. Dac la o constant ne puteam referi folosind caracterele
componente, la o variabil ne vom referi prin numele ei.
Modul general de declarare a variabilelor este:
<tip_variabile>
<list_nume_variabile>;
<nume_var1>=<expr1>[,<nume_var2>=<expr2>, ];
5. OPERAII DE INTRARE/IEIRE
Limbajele C/C++ nu posed instruciuni de intrare/ieire, deci de citire/scriere (ca limbajul
PASCAL, de exemplu). n limbajul C aceste operaii se realizeaz cu ajutorul unor funcii (de
exemplu, printf i scanf), iar n limbajul C++ - prin suprancrcarea operatorilor (definirea
unor noi proprieti ale unor operatori existeni, fr ca proprietile anterioare s dispar),
mai precis a operatorilor >> i <<. Vom folosi n continuare abordarea limbajului C++, fiind, n
momentul de fa, mai simpl. n limbajul C++ sunt predefinite urmtoarele dispozitive logice
de intrare/ieire:
cin - console input - dispozitivul de intrare (tastatura);
cout - console output - dispozitivul de ieire (monitorul).
cin i cout sunt, de fapt, obiecte (predefinite). Transferul informaiei se realizeaz cu
operatorul >> (extractor) pentru intrare i operatorul << (insertor) pentru ieire.
2
n acest caz, se efectueaz succesiv, de la stnga la dreapta, scrierea, respectiv citirea valorilor
variabilelor var1, var2 i var3.
Utilizarea dispozitivelor si operatorilor de intrare/iesire in C++ impune includerea fisierului
header iostream.
6. PREPROCESORUL
n faza de compilare a fiierului surs este invocat nti preprocesorul. Acesta trateaz
directivele speciale - numite directive preprocesor - pe care le gsete n fiierul surs.
Directivele preprocesor sunt identificate prin simbolul #, care trebuie s fie primul caracter,
diferit de spaiu, dintr-o linie. Directivele preprocesor sunt utilizate la includerea fiierelor
header, la definirea numelor constantelor simbolice, la definirea macro-urilor, sau la
realizarea altor funcii (de exemplu, compilarea condiionat), aa cum ilustreaz exemplele
urmtoare:
Includerea fiierelor header n codul surs:
Exemplu:
#include <stdio.h>
Cnd procesorul ntlnete aceast linie, datorit simbolului #, o recunoate ca fiind o
directiv preprocesor, localizeaz fiierul header indicat (parantezele unghiulare < >
indic faptul c este vorba de un fiier header sistem).
Asignarea de nume simbolice constantelor:
Exemplu:
#define TRUE 1
#define FALSE 0
Tratarea acestor directive preprocesor are ca efect atribuirea valorii ntregi 1 numelui
(constantei simbolice) TRUE, i a valorii 0 numelui simbolic FALSE. Ca urmare, naintea
compilrii propriu-zise, n programul surs, apariiile numelor TRUE i FALSE vor fi
nlocuite cu valorile 1, respectiv 0.
Macrodefiniii:
1.
2. Scriei i urmrii execuia programului urmtor, program care va afia spaiul de memorie
(n octei) alocat diferitelor tipuri de date. Determinarea spaiului de memorie alocat, se va
face cu ajutorul operatorului sizeof().
#include <iostream>
using namespace std;
int main()
{
cout<<" char: "<<sizeof(char)<<" octeti\n";
//se va afisa mai intai constanta sir de caractere (textul dintre
//ghilimele), apoi numarul de octeti pe care este stocat in memorie tipul
//char (valoare returneta de operatorul sizeof, operator care va primi ca
//parametru tipul char), apoi din nou o constanta sir de caractere
//(textul dintre ghilimele)
cout<<"
cout<<"
cout<<"
cout<<"
cout<<"
cout<<"
3. Scriei i urmrii execuia programului urmtor, program care va afia valorile minime i
maxime pe care le pot lua variabilele de anumite tipuri.
#include <iostream>
#include <limits.h>
#include <float.h>
using namespace std;
int main()
{
cout<<"Max
cout<<"Min
cout<<"Max
cout<<"Max
cout<<"Min
cout<<"Max
cout<<"Max
cout<<"Min
cout<<"Max
cout<<"Max
cout<<"Min
cout<<"Max
cout<<"Max
cout<<"Max
cout<<"Cel
cout<<"Cel
}
char: "<<CHAR_MAX<<'\n';
char: "<<CHAR_MIN<<'\n';
unsigned char: "<<UCHAR_MAX<<"\n\n";
short: "<<SHRT_MAX<<'\n';
short: "<<SHRT_MIN<<'\n';
unsigned short: "<<USHRT_MAX<<"\n\n";
int: "<<INT_MAX<<'\n';
int: "<<INT_MIN<<'\n';
unsigned int: "<<UINT_MAX<<"\n\n";
long: "<<LONG_MAX<<'\n';
long: "<<LONG_MIN<<'\n';
unsigned long: "<<ULONG_MAX<<"\n\n";
float: "<<FLT_MAX<<'\n';
double: "<<DBL_MAX<<"\n\n";
mai mic (apropiat de 0) float: "<<FLT_MIN<<'\n';
mai mic (apropiat de 0) double: "<<DBL_MIN<<'\n';
O constant caracter are ca valoare codul ASCII (American Standard Code for Information
Intechange) al caracterului pe care l reprezint. Acest set de caractere are urmtoarele
proprieti:
4. Scriei i urmrii execuia programului urmtor, program care va ilustra codurile ASCII
asociate caracterelor mari i mici, cifrelor i unei secvene escape (caracterul linie nou).
#include <iostream>
using namespace std;
int main()
{
cout<<"Caracterul "<<'a'<<" are codul ascii: "<<(int)'a'<<'\n';
//Se afiseaza mai intai constanta sir de caractere (textul dintre
//ghilimele), apoi constanta caracter dintre apostroafe, din nou o
//constanta sir de caractere, codul ascii al caracterului dintre
//apostroafe (fortand tipul acestuia la int, precedand caracterul de noul
//tip inclus intre paranteze), si caracterul linie noua (\n)
cout<<"Caracterul "<<'b'<<" are codul ascii: "<<(int)'b'<<'\n';
cout<<" ....\n";
cout<<"Caracterul "<<'z'<<" are codul ascii: "<<(int)'z'<<"\n\n";
cout<<"Caracterul "<<'A'<<" are codul ascii: "<<(int)'A'<<'\n';
cout<<"Caracterul "<<'B'<<" are codul ascii: "<<(int)'B'<<'\n';
cout<<" ....\n";
cout<<"Caracterul "<<'Z'<<" are codul ascii: "<<(int)'Z'<<"\n\n";
cout<<"Caracterul "<<'0'<<" are codul ascii: "<<(int)'0'<<'\n';
cout<<"Caracterul "<<'1'<<" are codul ascii: "<<(int)'1'<<'\n';
cout<<" ....\n";
cout<<"Caracterul "<<'9'<<" are codul ascii: "<<(int)'9'<<"\n\n";
cout<<"Caracterul linie noua:"<<'\n'<<" are codul ascii: ";
cout<<(int)'\n'<<"\n\n";
}
5. S se scrie un program care rezolv ecuaia de gradul 1, de forma ax+b=0. Este prezentat
algoritmul att n schem logic, ct i n pseudocod.
START
CITESTE a, b
DA
a=0?
NU
INCEPUT
CITESTE a, b
DACA a = 0
ATUNCI AFISEAZA eroare
ALTFEL
INCEPUT
SOLUTIE <- -b/a
AFISEAZA solutie
SFARSIT
SFARSIT
STOP
#include <iostream>
using namespace std;
int main()
{
float a,b,x;
cout<<"Ecuatie de gradul I de forma ax+b=0\n";
cout<<"a=";
cin>>a;
if (a==0)
cout<<"Caz imposibil!!!";
else
{
cout<<"b=";
cin>>b;
x = -b/a;
cout<<"x="<<x;
}
}
6. S se scrie un program care rezolv ecuaia de gradul II, de forma ax2+bx+c=0. Coeficienii
a, b i c se citesc de la tastatur.
8. S se scrie un program care calculeaz volumul, suprafaa lateral i aria suprafeei totale
ale unui cilindru. Raza i nlimea se citesc de la tastatur.