Professional Documents
Culture Documents
funksionet
matematikore
Dr. Ardiana Topi
Çështjet kryesore
Tipet kryesore të të dhënave, vazhdim…
Shprehjet, krijimi dhe vlerësimi i shprehjeve në C++.
Konvertimi implicid dhe explicid
Funksionet matematikore
Numrat rastësorë
Tipet e dhënave të numrave me presje
notuese (Floating-Point)
1 0
Madhësia e një tipi i të dhënash
• Operatori sizeof përdoret për dhënë madhësinë e çdo tipi të
dhënash apo variabli.
double amount;
cout << "A double is stored in "
<< sizeof(double) << "bytes\n";
cout << "Variable amount is stored in "
<< sizeof(amount)
<< "bytes\n";
• C++ 11 solli një mënyrë alternative të deklarimit të një
Deklarimi i variabli duke përdorur fjalën kyce auto dhe një vlerë
inicializuese .
variableve
me keyword-in • Fjala kyce auto i tregon kompiluesit të përcaktojë
tipit e të dhënave të variablit duke u nisur nga vlera
inicializuese.
auto
Shprehjet
1 2 3
Ne kemi parë që një Për ta bërë këtë, një Një shprehje është një
program është një program përcakton disa entitet me një vlerë që
manipulues vlerash. entitete të vogla të mund të ndryshojë
Programet marrin vlera, i quajtura shprehje. gjendjen e kujtesës
manipulojne ato dhe
krijojne vlera të reja.
Shprehjet
Operatorët aritmetikë
SYMBOL OPERATION EXAMPLE VALUE OF
ans
• Operatorët aritmetikë përdoren për kryerjen e + addition ans = 7 + 3; 10
llogaritjeve numerike
- subtraction ans = 7 - 3; 4
• C++ ka operatorë unarë, binarë dhe trenarë:
• unary (1 operand) -5
* multiplication ans = 7 * 3; 21
• binary (2 operands) 13 - 7 / division ans = 7 / 3; 2
• ternary (3 operands) exp1 ? exp2 : % modulus ans = 7 % 3; 1
exp3
Shprehjet primare
area = 2 * PI * radius;
cout << "border is: " << 2*(l+w);
Rradha e veprimeve matematikore
Area = l * w;
Mund të nevojiten kllapa për të ruajtur
rendin e operacioneve:
y 2 y1 shkruhet si:
m
x 2 x1
m y2 y1 / x2 x1 ;
Operacionet kryhen ndërmjet operandëve të të njëjtit tip.
Nëse operandët nuk janë të të njëjtit tip, C++ do të konvertojë njërin në tipeve
Konvertimet mund të ndikojnë në rezultatet e llogaritjeve!
Konvertimet
Konvertimet
1. Çfarë ndodh kur aplikojmë një operator aritmetik në të dhëna joaritmetike p.sh. me te dhëna
tipit boolean apo char? Për shembull, çfarë ndodh nëse mbledhim dy të dhëna të tipit boolean
ose kur shumëzojmë dy të dhëna të tipit char?
2. Çfarë ndodh kur përdoren operatorë binarë të llojeve të ndryshme ? Cili është tipi i vlerës së
kthimit?
3. Për t'iu përgjigjur këtyre pyetjeve, duhet të diskutojmë dy procese të ndryshme:
I. konvertimin implicit
II. konvertimin eksplicit
4. Gjuha C++ ofron një mjet për të testuar tipin e çdo shprehjeje siç tregohet më poshtë:
typeid(expresion).name()
Konvertimi implicit
• Sa herë që përdorim një operacion/veprim mbi një tip të dhënash për të cilin ai operacion nuk
është i përcaktuar, përpiluesi C++ kryen konvertimin implicit përpara se të na japë rezultatin.
• Konvertim implicit nënkupton ndryshimin e tipit të operandit(ve) me një tip tjetër të dhënash mbi
të cilin mund të zbatohet operacioni/veprimi.
• Procesi i konvertimit kryhet me dy hapa:
1. promovimi i tipit implicid(promovimi i tipit të operandit në një madhësi më të madhe) dhe
2. ndryshimi i tipit (ndryshimi i tipit të njërit operand në tipin e operandit tjeter për t'i bërë
ato të të njëjtit tip).
• Konvertimi implicit bëhet automatikisht nga kompiluesi.
Promovimi implicit
• Promovimi i implicid aplikohet automatikisht në çdo operand për ta bërë atë të
përshtatshëm për një operacion aritmetik.
• Kjo bëhet për dy arsye:
1. kur tipi i operandit nuk është i përshtatshëm për një veprim aritmetik (boolean dhe
karakter).
2. kur nuk ka asnjë operator aritmetik të përcaktuar për tipin (short dhe float) sepse
nëse aplikojmë një operator aritmetik në një vlerë të short ose float, rezultati mund
të mos përshtatet në një short ose float (mendoni shumëzimin e dy të dhënave te
tilla).
3. Për të shmangur këto probleme, përpiluesi zbaton pesë rregulla për promovimin
implicid.
Promovimi
implicit
Ndryshimi implicit i tipit të të dhënave
• Pas promovimit implicit të secilit operand sipas rregullave që
diskutuam më sipër, kompiluesi mund ose nuk mund të kryejë
ndryshim implicit të tipit.
• Ndryshimi implicit i tipit ndodh kur dy operandët janë të tipeve të
ndryshme; pas ndryshimit, të dy operandët janë të të njëjtit tip.
• Nëse operacioni është unar, nuk ka nevojë për konvertim të
implicit;
• Nëse operacioni është binar, mund të nevojitet ndryshimi implicit
i tipit për të bërë tipet e të dy operandëve të njëjtë.
• // Implicit type conversion of mixed types, no side effect.
• #include <iostream>
• #include <typeinfo>
• using namespace std;
•
int main ( ) {
• int x = 123;
• long y = 140;
• double z = 114.56;
• // Check the type and value of expression x + y
• cout << "Type of x + y: " << typeid (x + y).name ()<<endl;
• cout << "Value of x + y: " << x + y << endl << endl;
•
// Check the type and value of expression x + y + z
• cout << "Type of x + y + z: " << typeid (x + y + z).name ()<< endl;
• cout << "Value of x + y + z: " << x + y + z << endl;
• return 0;
• }
• Në disa operacione, në të cilat një vlerë
supozohet të shkojë në një destinacion të një
tipi të paracaktuar, ne nuk mund të
ndryshojmë tipin e destinacionit sepse ai
tashmë është i përcaktuar.
Shprehje • Për shembull, kjo ndodh kur i caktojmë një
• Ndodh kur një variabli i caktohet një vlerë që është shumë e madhe
(overflow) ose shumë e vogël (underflow.
• Variabli përmban vlerë që është 'mbështjellë rreth' grup vlerash të
mundshme.
• Sisteme të ndryshme mund të shfaqin një mesazh paralajmërimi/gabim, të
ndalojnë programin ose të vazhdojnë ekzekutimin duke përdorur vlerën e
gabuar.
Konvertimi explicit
sin Sine
cos Cosine
• Për të përdorur funksionet
matematikore duhet cmath header file tan Tangent