Professional Documents
Culture Documents
Direktivat Paraprocesorike Dispence PDF
Direktivat Paraprocesorike Dispence PDF
Agni Dika
Material punues.
Nuk sht pr shumzim!
02
Direktivat paraprocesorike
2 Programimi i avancuar n C++
Njohuri t prgjithshme
Kompjutert jan paisje elektronike digjitale t cilat i kuptojn nj numr
t caktuar komandash, si jan komandat pr marrje t t dhnave prmes
njsive hyrse, ato pr kryerje t operacioneve t ndryshme aritmetikore dhe
logjike mbi t dhnat (prmes njsis aritmetiko-logjike t procesorit),
komandat pr ruajtje t t dhnave n memorien periferike dhe pr paraqitje t
rezultateve n njsit dalse. Grumbulli i komandave t cilat i ipen kompjuterit
me qllim t zgjidhjes s nj problemi duke u mbshtetur n nj algoritm t
caktuar quhet program (ang. program), kurse vet procesi i shkruarjes s
programit njihet si programim (ang. programming).
Puna e kompjuterit mbshtetet n shfrytzimin e sinjaleve digjitale (ang.
digital signals), prmes t cilve paraqiten dy shifrat binare (ang. binary digit) 0
dhe 1, zakonisht si dy nivele t ndryshme tensionesh. Pr kt arsye, komandat
t cilat i ipen kompjuterit, si dhe t dhnat q prpunohen brenda tij, paraqiten
si vargje t shifrave binare. Kurse gjuha prmes s cils komunikohet me
kompjuterin njihet si gjuh e makins (ang. machine language). Shkruarja e
programeve n gjuhn e makins sht nj pun e rnd, sepse duhet t
mbahen n mend vargje t shifrave binare pr komandat e veanta si dhe t
konvertohen t dhnat e zakonshme n nj kod binar (ang. binary code).
Me qllim t lehtsimit t programimit n gjuhn e makins mund t
shfrytzohet gjuha asembler (ang. assembly language), te e cila komandat
paraqesin shkurtesa ose kode mnemonike (ang. mnemonic code), kurse vlerat q
shfrytzohen gjat llogaritjeve ipen direkt si numra heksadecimal, ose indirekt
prmes emrave t variablave prkatse. Kshtu, p.sh. komandat pr mbledhje,
zbritje dhe shumzim kompjuterit i jepen prmes shkurtesave ADD, SUB dhe
MULT. Gjat ksaj, kto komanda dhe vlerat numerike prcjellse kompjuteri
nuk i kupton direkt sepse nuk jan t shkruara n form binare. Pr kt qllim
ato duhet t prkthehen n gjuh t makins duke e shfrytzuar programin i cili
quhet Asembler (ang. assembler).
Gjuha e makins dhe gjuha asembler, meq jan t afrta me logjikn e
puns s kompjuterit, njihen si gjuh t ulta programuese (ang. low-level
languages). Por, me qllim t lehtsimit t procesit t programimit,
shfrytzohen gjuh t larta programuese (ang. high-level languages), t cilat jan t
afrta me logjikn e puns s njeriut. T tilla jan, p.sh. gjuht FORTRAN ,
BASIC , COBOL, C, PASCAL, C++, JAVA, C# etj., ose versionet e ndryshme t
tyre. Nnkuptohet se programet e shkruara n gjuht e larta programuese nuk
kuptohen direkt nga kompjuteri. Prandaj ato duhet t prkthehen n gjuhn e
makins duke e shfrytzuar programin i cili njihet si kompilues (ang. compiler).
Pr programin e prkthyer n gjuhn e makins thuhet se paraqet nj program
objektiv (ang. object program), ose nj kod objektiv (ang. object code).
Direktivat paraprocesorike 3
Programi objektiv
Fig.1.2
Versioni i plotsuar i procesit t krijimit t Fajlla t tjer objektiv Linker
programit ekzekutiv
Programi ekzekutiv
Direktivat paraprocesorike,
pr dallim nga komandat tjera q paraqiten n program fillojn me simbolin # .
Para kompilimit, prmes paraprocesorit kto direktiva insertohen brenda
programit n pozitn prkatse.
N gjuhn programuese C++, fajllat burimor zakonisht e kan
prapashtesn .cpp, fajllat e ballins - prapashtesn .h, ose jan pa
prapashtes, fajllat objektiv - prapashtesn .obj, kurse fajllat ekzekutiv
dallohen me prapashtesn .exe.
4 Programimi i avancuar n C++
Compiler
Programi objektiv
Programi ekzekutiv
Loader
Fig.1.3
Versioni komplet prej shkruarjes deri te Programi ekzekutiv n memorie
ekzekutimi i nj programi n kompjuter
Hardware
Rezultatet e programit
Paraprocesori
Rreshtat e programit t cilt fillojn me simbolin # (ang. number sign,
shqip thurje) prmbajn direktiva paraprocesorike (ang. preprocessor directive), t
cilat thjesht njihen edhe si komanda paraprocesorike. Kto direktiva prpunohen
para kompilimit, prmes programit q quhet paraprocesor (ang. preprocessor), i
cili sht pjes e kompilerit . Si rezultat, programi burimor modifikohet para se ai
t kompilohet n kod objektiv. Kto direktiva nuk jan komanda t gjuhs
programuese C++ dhe prandaj n fund t tyre nuk shnohet pikpresja ( ;).
Paraprocesori sht n gjendje t'i njohi direktivat praparocesorike t cilat
jan prfshir n tabeln e dhn n Fig.1.4.
Direktiva #include
Prmes direktivs paraprocesorike #include n programin burimor
insertohet kopja e fajllit, i cili sht shkruar paraprakisht dhe ruhet n disk.
Zakonisht insertohen fajlla standard t cilt gjenden n prbrje t pakos s
gjuhs programuese C++, por insertohen edhe fajlla jostandard t shkruar prej
programerit.
#include <f>
#include <iostream>
#include "f"
// Program include1
#include <iostream>
using namespace std;
#include "C:\Alfa\struct.txt"
int main()
{
koha dita;
dita.a=5;
dita.b=dita.a+15;
cout << "a="
<< dita.a
<< " b="
<< dita.b
<< endl;
return 0;
}
struct koha
{
int a;
double b;
};
.....................
struct koha
{
int a;
double b;
};
int main()
{
Direktivat paraprocesorike 7
koha dita;
dita.a=5;
dita.b=dita.a+15;
cout << dita.a
<< " "
<< dita.b
<< endl;
return 0;
}
#include <C:\Test.txt>
// Programi include2a
#include <iostream>
using namespace std;
#include "C:\Alfa\dita.txt"
int main()
{
jeta(1,10);
return 0;
}
.......................
void jeta(int m,int n)
{
int i;
for (i=m;i<=n;i++)
cout << "Koha e bukur\n";
return;
}
int main()
{
jeta(1,10);
return 0;
}
Rez.
.......................
void jeta(int m,int n);
int main()
{
jeta(1,10);
return 0;
}
void jeta(int m,int n)
{
int i;
for (i=m;i<=n;i++)
cout << "Koha e bukur\n";
return;
}
Direktivat paraprocesorike 9
// Programi include3
#include <iostream>
using namespace std;
int main()
{
int i;
#include "C:\Alfa\delta.txt"
return 0;
}
for (i=1;i<=10;i++)
cout << "Koha e bukur\n";
.................................
int main()
{
int i;
for (i=1;i<=10;i++)
cout << "Koha e bukur\n";
return 0;
}
// Program include2x
#include <iostream>
using namespace std;
int max(int,int);
int main()
{
int x,y,z;
#include "C:\Alfa\InpOut.txt"
z=max(x,y);
cout << "Vlera maksimale: "
<< z
<< endl;
return 0;
}
#include "C:\Alfa\max.txt"
Fajlli InpOut.txt
Fajlli max.txt
................................
int max(int,int);
int main()
{
int x,y,z;
cout << "Vlera x: ";
cin >> x;
cout << "Vlera y: ";
cin >> y;
z=max(7,4);
cout << "Vlera maksimale: "
<< z
<< endl;
return 0;
}
Direktiva #define
Duke e shfrytzuar direktivn #define mund t definohen konstante
simbolike, ose makro paraprocesorike (ang. preprocessor macro). Prmes tyre
programi bhet m i lexueshm, m i thjesht dhe mund t modifikohet m
leht.
N form t prgjithshme kjo direktiv shkruhet kshtu:
Konstantet simbolike
N formn m t thjesht t saj, direktiva paraprocesorike #define
shfrytzohet pr definimin e konstanteve simbolike.
// Programi define1
#include <iostream>
using namespace std;
#define pi 3.1415926
int main()
{
double r,s,p;
cout << "Rrezja e rrethit: ";
cin >> r;
s=pi*r*r;
cout << "\nSiprfaqja e rrethit s="
<< s;
p=2*pi*r;
cout << "\nPerimetri i rrethit p="
<< p << endl;
return 0;
}
........................................
int main()
{
double r,s,p;
cout << "Rrezja e rrethit: ";
Direktivat paraprocesorike 13
cin >> r;
s=3.1415926*r*r;
cout << "\nSiprfaqja e rrethit s="
<< s;
p=2*3.1415926*r;
cout << "\nPerimetri i rrethit p="
<< p << endl;
return 0;
}
// Programi define
#include <iostream>
using namespace std;
#define alfa "Shuma e llogaritur: "
int main()
{
double s=0;
int i,n;
cout << "Vlera hyrse n: ";
cin >> n;
for (i=1;i<=n;i=i+2)
s=s+i;
cout << alfa
<< s
<< endl;
return 0;
}
Makrot paraprocesorike
Prve pr definimin e konstanteve simbolike t cilat u shpjeguan m sipr,
direktiva #define mund t shfrytzohen edhe pr definimin e makrove
paraprocesorike.
Makrot e zakonshm
Nse direktiva #define shfrytzohet pr definimin e komandave t
gjuhs programuese C++, shprehjeve aritmetikore, pjesve t ndryshme t
programeve, ose edhe programeve komplete, mund t themi se kemi t bjm
me makro paraprocesorike t zakonshme.
Definimi i komandave
Prmes direktivs n fjal, n program si makro mund t definohen pjes
t komandave, ose edhe komanda komplete t gjuhs programuese C++.
// Programi define^
#include <iostream>
#define shtyp cout
using namespace std;
int main()
{
double x,y,z;
shtyp << "Vlera x=";
cin >> x;
shtyp << "\nVlera y=";
cin >> y;
z=-5;
if (x<y)
z=x+y;
shtyp << "\nRezultati sht z="
<< z
<< "\n";
return 0;
}
...........................
Direktivat paraprocesorike 15
int main()
{
double x,y,z;
cout << "Vlera x=";
cin >> x;
cout << "\nVlera y=";
cin >> y;
z=-5;
if (x<y)
z=x+y;
cout << "\nRezultati sht z="
<< z
<< "\n";
return 0;
}
// Programi define^
#include <iostream>
#define lexo cin >>
using namespace std;
int main()
{
double x,y,z;
cout << "Vlera x=";
lexo x;
cout << "\nVlera y=";
lexo y;
z=-5;
if (x<y)
z=x+y;
cout << "\nRezultati sht z="
<< z
<< "\n";
return 0;
}
...........................
int main()
16 Programimi i avancuar n C++
{
double x,y,z;
cout << "Vlera x=";
cin >> x;
cout << "\nVlera y=";
cin >> y;
...........................
Shembull
// Shfrytezimi i #define
# include <iostream>
using namespace std;
enum viti
{
pranvera, vera, vjeshta, dimri
};
#define tekst "\nStina e zgjedhur sht "
#define shtyp cout <<
int main()
{
viti stina;
stina=vera;
shtyp tekst;
switch (stina)
{
case pranvera:
shtyp "pranvera";
break;
case vera:
shtyp "vera";
break;
case vjeshta:
shtyp "vjeshta";
break;
case dimri:
shtyp "dimri";
}
cout << "\n\n";
return 0;
}
// Programi
#include <iostream>
using namespace std;
#define delta z=2*x+y
#define shtyp cout <<
#define lexo cin >>
int main()
{
double x,y,z;
shtyp "Vlera x=";
lexo x;
shtyp "\nVlera y=";
lexo y;
delta;
shtyp "\nRezultati sht z=";
shtyp z
<< "\n";
return 0;
}
.....................................
int main()
{
double x,y,z;
cout << "Vlera x=";
cin >> x;
cout << "\nVlera y=";
cin >> y;
z=2*x+y;
cout << "\nRezultati sht z=";
cout << z
<< "\n";
return 0;
}
Pas ksaj, gjat shfrytzimit t makros n program, pikpresja nuk shnohet pas
emrit delta.
// Programi
#include <iostream>
using namespace std;
#define llogaritja \
if (x<y) \
z=x+y; \
else \
z=2*y;
int main()
{
double x,y,z;
cout << "Vlera x=";
cin >> x;
cout << "\nVlera y=";
cin >> y;
llogaritja
cout << "\nRezultati sht z=";
cout << z
<< "\n";
return 0;
}
.....................................
int main()
{
double x,y,z;
cout << "Vlera x=";
cin >> x;
cout << "\nVlera y=";
cin >> y;
Direktivat paraprocesorike 19
if (x<y)
z=x+y;
else
z=2*y;
cout << "\nRezultati sht z=";
cout << z
<< "\n";
return 0;
}
// Programi
#include <iostream>
using namespace std;
int main()
{
double x,y,z;
#define llogaritja \
if (x<y) \
z=x+y; \
else \
z=2*y;
cout << "Vlera x=";
cin >> x;
cout << "\nVlera y=";
cin >> y;
llogaritja
cout << "\nRezultati sht z=";
cout << z
<< "\n";
return 0;
}
// Programi defineXXXX
#include <iostream>
using namespace std;
#define programi \
int main() \
{ \
double x,y,z; \
cout << "Vlera x="; \
cin >> x; \
cout << "\nVlera y="; \
cin >> y; \
z=(x>y) ? x : y; \
cout << "\nVlear maksimale: " \
<< z \
<< "\n"; \
return 0; \
}
programi
.................................
int main()
{
double x,y,z;
cout << "Vlera x=";
cin >> x;
cout << "\nVlera y=";
cin >> y;
z=(x>y) ? x : y;
cout << "\nVlear maksimale: "
<< z
<< "\n";
return 0;
}
Direktivat paraprocesorike 21
Makro t paremtrizuara
// Programi
#include <iostream>
using namespace std;
#define max(a,b) ((a)>(b)) ? (a) : (b)
int main()
{
double x,y,z;
cout << "Vlera x=";
cin >> x;
cout << "\nVlera y=";
cin >> y;
z=max(x,y);
cout << "Vlera maksimale: "
<< z
<< endl;
return 0;
}
................................
int main()
{
double x,y,z;
cout << "Vlera x=";
cin >> x;
cout << "\nVlera y=";
cin >> y;
z=(x>y) ? (x) : (y);
22 Programimi i avancuar n C++
// Programi define1
#include <iostream>
using namespace std;
inline int max(int a,int b)
{
return ((a)>(b)) ? (a) : (b);
}
int main()
{
double x,y,z;
cout << "Vlera x=";
cin >> x;
cout << "\nVlera y=";
cin >> y;
z=max(x,y);
cout << "Vlera maksimale: "
<< z
<< endl;
return 0;
}
Shembull
// Programi
#include <iostream>
using namespace std;
#define alfa(a) a/2
int main()
{
int x,y;
cout << "Vlera x=";
cin >> x;
y=alfa(x+4);
cout << "Vlera e llogaritur: "
Direktivat paraprocesorike 23
y=x+4/2=2+2=4
y=(x+4)/2=(2+4)/2=3
Shembull
// Programi
#include <iostream>
using namespace std;
#define prod(a,b) ((a)*(b))
int main()
{
int x,y,z;
cout << "Vlera x=";
cin >> x;
cout << "\nVlera y=";
cin >> y;
z=3*prod(x,x+2*y)+2*prod(x+1,3*x);
cout << "Vlera e llogaritur: "
<< z
<< endl;
return 0;
}
z=3*(x)*(x+2*y)+2*(x+1)*(3*x);
Shembull
// Programi define88
#include <iostream>
#define alfa(a,b,g) \
if (a<b) \
g=a+b; \
else \
g=2*a+b;
using namespace std;
int main()
{
double x,y,z;
cout << "Vlera x=";
cin >> x;
cout << "\nVlera y=";
cin >> y;
alfa(x,y,z)
cout << "\nRezultati z="
<< z
<< endl;
return 0;
}
Makro t ndrthurura
Shembull
// Programi define=====
#include <iostream>
using namespace std;
#define k x>=y
#define baraz =
int main()
{
#define alfa \
if (k) \
z baraz 2 * x + y; \
else \
z baraz x + 3 * y;
double x,y,z;
cout << "Vlera x=";
cin >> x;
Direktivat paraprocesorike 25
// Programi defineyyy
#include <iostream>
#define shtyp cout <<
#define lexo cin >>
using namespace std;
#define programi \
int main() \
{ \
double x,y,z; \
shtyp "Vlera x="; \
lexo x; \
shtyp "\nVlera y="; \
lexo y; \
z=(x>y) ? x : y; \
shtyp "\nVlear maksimale: " \
<< z \
<< "\n"; \
return 0; \
}
programi
// Programi define=====
26 Programimi i avancuar n C++
#include <iostream>
using namespace std;
#define pi 3.1415926
#define siper(r) pi*r*r
int main()
{
double r,s,p;
cout << "Rrezja e rrethit: ";
cin >> r;
s=siper(r);
cout << "\nSiprfaqja e rrethit s="
<< s;
p=2*pi*r;
cout << "\nPerimetri i rrethit p="
<< p << endl;
return 0;
}
Direktiva #undef
Duke e shfrytzuar direktivn #undef mund t eliminohet efekti i
definimit me direktivn #define. Nj makro vlen derisa nuk eliminohet
prmes direktivs #undef.
// Programi undef
#include <iostream>
using namespace std;
#define n 3
int main()
{
int i,j;
cout << "\ni=";
for (i=1;i<=n;i++)
cout << i
<< " ";
#undef n
#define n 5
cout << "\nj=";
for (j=1;j<=n;j++)
cout << j
<< " ";
cout << endl;
return 0;
}
Direktivat paraprocesorike 27
#undef n
e shkruajm komandn:
cout << n;
Shembull
// Programi undef
#include <iostream>
using namespace std;
#define tekst "Koha e bukur"
int main()
{
cout << "Teksti i par: "
<< tekst;
#undef tekst
#define tekst "Koha me bor"
cout << "\nTeksti i dyt: "
<< tekst
<< endl;
return 0;
}
#if
#else
#elif
#endif
Shembull
// Programi if
#include <iostream>
using namespace std;
#define n 5
int main()
{
int m=4;
#if n>3
m=n+2;
#endif
cout <<"\nVlera: "
<< m
<< "\n";
return 0;
}
Shembull
// Programi if
Direktivat paraprocesorike 29
#include <iostream>
using namespace std;
#define n 5
int main()
{
int m=4;
#if n>7
m=n+2;
#endif
cout <<"\nVlera: " << m << "\n";
return 0;
}
..................
int main()
{
int m=4;
cout <<"\nVlera: " << m << "\n";
return 0;
}
Shembull
// Programi if
#include <iostream>
using namespace std;
#define n 5
int main()
{
int m,y;
#if n>3
{
m=n+2;
y=3*n+m-1;
cout << "\nVlera e llogaritur: "
<< y << "\n";
}
#endif
cout <<"\nVlera: " << m << "\n";
return 0;
}
30 Programimi i avancuar n C++
Shembull
// Programi if-else
#include <iostream>
using namespace std;
#define n 2
int main()
{
int m=4;
Shembull
// Programi if
#include <iostream>
using namespace std;
#define n 5
int main()
{
cout << "Fillimi\n";
#if n==5
#include "C:\alfa\KlasaKoha.txt"
koha dita;
cout << "\nVlera per a: ";
cin >> dita.a;
cout << "\nVlera per b: ";
cin >> dita.b;
#endif
cout << "\nFundi" << "\n";
return 0;
}
class koha
{
public:
int a;
Direktivat paraprocesorike 31
double b;
};
..................
int main()
{
cout << "Fillimi\n";
class koha
{
public:
int a;
double b;
};
koha dita;
cout << "\nVlera per a: ";
cin >> dita.a;
cout << "\nVlera per b: ";
cin >> dita.b;
cout << "\nFundi" << "\n";
return 0;
}
#define n 6
..................
int main()
{
cout << "Fillimi\n";
cout << "\nFundi" << "\n";
return 0;
}
Direktiva #elif
Nse ka m shum degzime pas komands #if, n vend t
#else prdoret #elif.
32 Programimi i avancuar n C++
Shembull
// Programi if
#include <iostream>
using namespace std;
#define alfa 3
#define beta 5
int main()
{
int k;
#if alfa>4
k=2*alfa+beta;
#elif beta<7
k=alfa+3*beta+1;
#endif
cout << "Rezultati: "
<< k << endl;
return 0;
}
..................
int main()
{
int k;
k=3+3*5+1;
cout << "Rezultati: "
<< k << endl;
return 0;
}
===============================================
Shembull
// Programi #if65
#include <iostream>
using namespace std;
#define dimensioni 25
#if dimensioni==20
#undef dimensioni
#define dimensioni 40
#elif dimensioni>15
Direktivat paraprocesorike 33
#undef dimensioni
#define dimensioni 10
#else
#undef dimensioni
#define dimensioni 30
#endif
int main()
{
int A[dimensioni],i,s;
for (i=0;i<dimensioni;i++)
if (i%2==0) A[i]=2*i+1;
else A[i]=7;
s=0;
for (i=0;i<dimensioni;i++)
if (A[i]==7)
s=s+A[i];
cout << "\nShuma s: "
<< s
<< "\n\n";
return 0;
}
// Programi ifdef
#include <iostream>
using namespace std;
#define x 10
int main()
{
int k=0;
#ifdef x
k=5*x+1;
#endif
cout << "Rezultati k="
<< k << endl;
return 0;
}
..................
int main()
34 Programimi i avancuar n C++
{
int k=0;
k=5*10+1;
cout << "Rezultati k="
<< k << endl;
return 0;
}
Shembull
// Programi ifdef
#include <iostream>
using namespace std;
#define d *
int main()
{
int a=4,z;
#ifdef d
z=5 d a+1;
#else
z=a+3;
#endif
cout << "Vlera e llogaritur z="
<< z << endl;
return 0;
}
..................
int main()
{
int a=4,z;
z=5 * a+1;
cout << "Vlera e llogaritur z="
<< z << endl;
return 0;
}
#ifdef m
int A[m];
pjesa:
Direktivat paraprocesorike 35
int A[m];
Vlen e kundrta:
#ifndef m
#define m 10
#endif
int A[m];
pjesa:
#define m 10
Direktiva #line
Prmes ksaj direktive programuesi i prcakton numrat rendor t
rreshtave n program me qllim t zbulimit t rreshtit n t cilin ka ndodhur
gabim.
Shembull
// Programi line
#include <iostream>
using namespace std;
int main()
{
double x,y;
cout << "Vlera pr x: ";
#line 50
cin >> x;
if (x<0)
y=2*x+1;
else
y=x+3;
cout << "Vlera e llogaritur y="
<< y << endl;
return 0;
}
36 Programimi i avancuar n C++
Ktu, komands:
cin >> x;
i sht shoqruar numri rendor 50. Pas ksaj, nse n rreshtat vijues ndodh
ndonj gabim, n mesazhin e gabimit gjat kompilimit t tij paraqitet numri
duke e marr si fillestar numrin e zgjedhur 50. P.sh. nse shprehja:
y=x+3;
y=a+3;
50 cin >> x;
51 if (x<0)
52 y=2*x+1;
53 else
54 y=x+3;
Direktiva #error
Kjo direktiv shfrytzohet pr gjenerimin e mesazhit i cili shkruhet n
vazhdim t saj. N kt mnyr mundsohet ndjekja e procesit t kompilimit
deri n pozitn ku sht vendosur direktiva, gj q ka rndsi kur kemi t bjm
me programe m t gjata.
Shembull
// Programi error
#include <iostream>
using namespace std;
int main()
{
Direktivat paraprocesorike 37
double x,y;
cout << "Vlera pr x: ";
#error Pozita ku kontrollohet
cin >> x;
if (x<0)
y=2*x+1;
else
y=a+3;
cout << "Vlera e llogaritur y="
<< y << endl;
return 0;
}
Direktiva #pragma
Kjo direktiv mundson dhnjen e instrukcioneve t ndryshme pr
kompilerin. N form t prgjithshme kjo direktiv shkruhet kshtu:
#pragma emri
Operatort paraprocesorik
N gjuhn C++ prdoren 3 operator paraprocesorik: defined, # dhe
##.
Operatori defined
38 Programimi i avancuar n C++
Shembull
// Programi defined1
#include <iostream>
using namespace std;
#define pi 3.1515926
int main()
{
double s,p,r=7;
#if defined(pi)
{
s=pi*r*r;
cout << "Siprfaqja e rrethit: "
<< s
<< "\n";
p=2*pi*r;
cout << "Perimetri i rrethit: "
<< p
<< "\n";
}
#endif
cout << "Fundi" << "\n\n";
return 0;
}
Rez.
Shtypen vlerat e llogaritura t siprfaqes dhe perimetrit.
Shembull
// Programi definedxx2
#include <iostream>
using namespace std;
#define pi 3.1515926
int main()
{
#if defined(pi)
{
double s,p,r=7;
s=pi*r*r;
Direktivat paraprocesorike 39
double s,p,r=7;
t shnohet brenda kllapave dhe jo para komands #if, sepse nse nuk
plotsohet kushti i dhn, kompjuteri do ta kompiloj vetm pjesn pas #else,
duke na njoftuar njkohsisht se variablave s dhe p nuk u referohemi askund.
Shembull
// Programi defined1
#include <iostream>
using namespace std;
#define pi 3.1515926
int main()
{
double s,p,r=7;
#ifdef pi
{
s=pi*r*r;
cout << "Siprfaqja e rrethit: "
<< s
<< "\n";
p=2*pi*r;
cout << "Perimetri i rrethit: "
<< p
<< "\n";
40 Programimi i avancuar n C++
}
#endif
cout << "Fundi" << "\n\n";
return 0;
}
Operatori #
Shembull
// Programi #
#include <iostream>
using namespace std;
#define alfa(x) #x
int main()
{
cout << alfa(Jeta) << "\n";
return 0;
}
Rez. Jeta
Sikurse:
cout << "Jeta" << "\n";
Shembull
// Operatori #
#include <iostream>
using namespace std;
#define shtypja(x) "Koha e " #x
int main()
{
cout << shtypja(bukur);
<< "\n";
return 0;
}
ose:
cout << "Koha e bukur";
Shembull
Version i shembullit paraprak.
// Programi #
#include <iostream>
using namespace std;
#define shtypja(x) cout << "Koha e " #x << "\n"
int main()
{
shtypja(bukur);
return 0;
}
Ktu kemi:
cout << "Koha e " "bukur" << "\n";
ose
cout << "Koha e bukur" << "\n";
Operatori ##
Ky operator prdoret pr bashkimin e dy pjesve.
// Programi ##
#include <iostream>
using namespace std;
#define bashkimi(x,y) x ## y
int main()
{
cout << bashkimi("Koha e ","bukur") << "\n";
return 0;
}
Makro t paradefinuara
N gjuhn C++ mund t shfrytzohen 5 makro t paradefinuara.
42 Programimi i avancuar n C++
Makroja __LINE__
Prmes saj jepet nj numr i plot i cili e paraqet numrin rendor t
rreshtit aktual n program.
Shembull
// Programi __LINE__
#include <iostream>
using namespace std;
int main()
{
const int m=8;
int i,s;
int A[m]={5,-2,7,4,1,8,10,6};
s=0;
for (i=0;i<m;i++)
if (A[i]>3)
if (A[i]<9)
s=s+A[i];
cout << "Rreshti numr: "
<< __LINE__;
cout << "\nShuma s="
<< s
<< "\n";
return 0;
}
Makroja __FILE__
Prmes saj merret nj string i cili e paraqet emrin e fajllit q kompilohet.
Shembull
// Programi __FILE__
#include <iostream>
using namespace std;
int main()
{
cout << "\nFajlli q kompilohet: "
<< __FILE__;
const int m=8;
int i,s;
int A[m]={5,-2,7,4,1,8,10,6};
s=0;
for (i=0;i<m;i++)
Direktivat paraprocesorike 43
if (A[i]>3)
if (A[i]<9)
s=s+A[i];
cout << "\nShuma s="
<< s
<< "\n";
return 0;
}
Prmes tyre merret informata mbi datn dhe kohn kur ka filluar
kompilimi i programit.
Shembull
Makroja __cplusplus