Detyrë: Çfarë shfaqet kur ekzekutohet ky kod?
#include <iostream>
void f(int a) {
a = a - 1;
}
int main() {
int a = 8;
f(a);
std::cout << a;
}
–
8
Detyrë: Çfarë shfaqet kur ekzekutohet ky kod?
#include <iostream>
int f1(int a) {
a = a + 5;
return 7;
}
int f2(int c) {
return c - 1;
}
int main() {
int a = 3;
int c = f1(a);
std::cout << f2(c);
}
–
6
Detyrë: Çfarë shfaqet kur ekzekutohet ky kod?
#include <iostream>
int f(int x) {
return 2 * x;
}
int g(int x) {
return x + 3;
}
int main() {
std::cout << f(g(3));
}
–
12
Detyrë: Çfarë shfaqet kur ekzekutohet ky kod?
#include <iostream>
int f(int x) {
return x + 3;
}
double f(double x) {
return 2 * x;
}
int main() {
std::cout << f((double)f(7));
}
–
20
Detyrë: Çfarë shfaqet kur ekzekutohet ky kod?
#include <iostream>
#define A 3
int f(int a) {
a = a + A;
return A + a;
}
int main() {
int a = A;
std::cout << f(a * A);
}
–
15
Numërim quajmë një bashkësi të vlerave (kategorive).
Marrim ngjyrat e semaforit: kuqe, verdhë, gjelbër.
Në program këtë e paraqitnim duke ia shoqëruar ngjyrës nga një vlerë numerike:
Ngjyra | Kodi |
---|---|
Kuqe | 0 |
Verdhë | 1 |
Gjelbër | 2 |
Numërim quajmë tipin që merr vlera nga një bashkësi diskrete.
\[\text{Ngjyrat}= \lbrace \textit{Kuqe}, \textit{Verdhe}, \textit{Gjelber} \rbrace\]Prapa skenave vlerave iu shoqërohen shifra.
Numërimet i kemi realizuar përmes #define
:
#define KUQE 0
#define VERDHE 1
#define GJELBER 2
...
int ngjyra = KUQE;
if (ngjyra == GJELBER) {
...
}
Ekziston edhe mundësia me enum
:
enum Ngjyra {
kuqe,
verdhe,
gjelber
};
...
Ngjyra n = kuqe;
if (n == gjelber) {
...
}
Përmes enum
krijojmë tip të vërtetë, ndërkaq me #define
bëjmë zëvendësime paraprocesorike.
Kur kemi nevojë ta ruajmë një Ngjyra
, e deklarojmë variablen e tipit Ngjyra
:
Ngjyra x = kuqe;
Kompajlleri anëtarëve iu cakton vlera rendore $0, 1, 2, \dots$
Nëse kemi nevojë t’iu japim anëtarëve vlera tjera, i cekim manualisht:
enum Ngjyra {
kuqe = 10,
verdhe = 20,
gjelber = 30
};
Sa e ka vlerën gjelber
në këtë rast?
enum Ngjyra {
kuqe = 10,
verdhe = 20,
gjelber
};
Kur nuk ceket vlera, anëtari e merr vlerën e ardhshme të lirë pas anëtarit të kaluar.
Kështu që gjelber = 21
.
Shembull: Rajonet e targave të Kosovës
enum Rajoni {
Prishtine = 1,
Mitrovice = 2,
Peje = 3,
Prizren = 4,
Ferizaj = 5,
Gjilan = 6,
Gjakove = 7
};
void shfaq_rajonin(Rajoni r) {
switch (r) {
case Prishtine: cout << "Rajoni i Prishtines"; break;
case Mitrovice: cout << "Rajoni i Mitrovices"; break;
case Peje: cout << "Rajoni i Pejes"; break;
...
}
}
...
shfaq_rajonin(Peje);
Shembull: Niveli i studimeve
enum NiveliStudimeve {
Fillore,
Mesme,
Bachelor,
Master,
Doktorature
};
Shembull: Drejtimet gjeografike
enum Drejtimi {
veri,
veri_lindje,
lindje,
jug_lindje,
jug,
jug_perendim,
perendim,
veri_perendim
};
Detyrë:
Muaji
i cili ka vlerat $\text{janar} = 1, \text{shkurt} = 2, \dots$Stina
e cila ka vlerat $\text{pranvere}, \text{vere}, \text{vjeshte}, \text{dimer}$merr_stinen
i cili pranon një Muaji
dhe kthen Stina
e atij muajit.shfaq_stinen
i cili pranon një Stina
dhe e shfaq në ekran.–
#include <iostream>
using namespace std;
enum Muaji
{
janar = 1,
shkurt,
mars,
prill,
maj,
qershor,
korrik,
gusht,
shtator,
tetor,
nentor,
dhjetor
};
enum Stina
{
pranvere,
vjeshte,
vere,
dimer
};
stina merr_stinen(muaji m)
{
switch (m)
{
case dhjetor:
case janar:
case shkurt:
return dimer;
case mars:
case prill:
case maj:
return pranvere;
case qershor:
case korrik:
case gusht:
return vere;
default:
return vjeshte;
}
}
void shfaq_stinen(stina s)
{
switch (s)
{
case pranvere:
cout << "Stina e pranveres" << endl;
break;
case vere:
cout << "Stina e veres" << endl;
break;
case vjeshte:
cout << "Stina e vjeshtes" << endl;
break;
case dimer:
cout << "Stina e dimrit" << endl;
break;
}
}
int main()
{
Muaji m = prill;
Stina s = merr_stinen(m);
shfaq_stinen(s);
return 0;
}
Struktura është një grupim logjik i variablave.
Supozojmë që duhet ta plotësojmë një formular:
Fusha | Vlera |
---|---|
Emri | Filan |
Mbiemri | Fisteku |
Mosha | 22 |
Jeni student? | Po |
Këto fusha paraqesin grupimin logjik për të dhënat personale të një Personi
.
Secila fushë e këtij grupimi ka një tip të të dhënave:
Fusha | Tipi |
---|---|
Emri | string |
Mbiemri | string |
Mosha | int |
Jeni student? | bool |
Në C++ ky grup i të dhënave modelohet kështu:
struct Personi {
string emri;
string mbiemri;
int mosha;
bool student;
};
Kur kemi nevojë të ruajmë të dhënat e një Personi
, e deklarojmë një variabël të këtij tipi:
Personi p;
p.emri = "Filan";
p.mbiemri = "Fisteku";
p.mosha = 22;
p.student = true;
Ekziston një formë e shkurtë për inicializimin e strukturës:
Personi p = {
"Filan",
"Fisteku",
22,
true
}
Strukturat përdorën kur kemi nevojë ta dërgojmë ose ta kthejmë një grup logjik të të dhënave në vend se vetëm një tip të thjeshtë (int, bool, etj.).
Shembull: Struktura Data
është grupim logjik i viti
, muaji
, dita
:
struct Data {
int dita;
int muaji;
int viti;
};
int main() {
Data pavaresise = { 17, 2, 2008 };
}
Kur themi Data d
nuk bëhet për ndonjë tip të thjeshtë si psh. int
ose double
, por për grupimin e tre numrave të plotë (dita
, muaji
, viti
):
Dita | Muaji | Viti |
---|---|---|
17 | 02 | 2008 |
Funksionet mund t’i përdorin tipet tona:
Data sot() {
Data d = { ... };
return d;
}
void shtyp(Data d) {
cout << d.dita << "/" << d.muaji << "/" << d.viti;
}
int main() {
shtyp(sot());
}
Detyrë: Të deklarohet struktura Rezultati
me fushat piket_shkrim
, piket_goje
. Të deklarohet një variabël e këtij tipi dhe të mbushet nga tastiera. Pastaj të tregohet a kalohet provimi me ato pikë.
–
#include <iostream>
using namespace std;
struct Rezultati
{
int piket_shkrim;
int piket_goje;
};
int main()
{
Rezultati r;
cout << "Shtypni piket me shkrim: ";
cin >> r.piket_shkrim;
cout << "Shtypni piket me goje: ";
cin >> r.piket_goje;
if (r.piket_shkrim >= 50 && r.piket_goje >= 50)
{
cout << "Kalon";
}
else
{
cout << "Nuk kalon";
}
return 0;
}
Detyrë: Të deklarohet struktura Rezultati
sikur në detyrën e kaluar, por secili hap i kërkuar nga detyra të realizohet me nga një funksion.
–
#include <iostream>
using namespace std;
struct Rezultati
{
int piket_shkrim;
int piket_goje;
};
Rezultati lexo()
{
Rezultati r;
cout << "Shtypni piket me shkrim: ";
cin >> r.piket_shkrim;
cout << "Shtypni piket me goje: ";
cin >> r.piket_goje;
return r;
}
bool kalues(Rezultati r)
{
if (r.piket_shkrim >= 50 && r.piket_goje >= 50)
{
return true;
}
else
{
return false;
}
}
int main()
{
Rezultati r = lexo();
if (kalues(r))
{
cout << "Kalon";
}
else
{
cout << "Nuk kalon";
}
return 0;
}
Detyrë: Të deklarohet struktura NumerKompleks
me fushat a
dhe b
si dhe funksionet mbledh
, zbrit
, shumezo
, rrezja
, kendi
.
–
#include <iostream>
#include <math.h>
using namespace std;
struct NumerKompleks
{
double a;
double b;
};
NumerKompleks mbledh(NumerKompleks nr1, NumerKompleks nr2)
{
return {nr1.a + nr2.a, nr1.b + nr2.b};
}
NumerKompleks zbrit(NumerKompleks nr1, NumerKompleks nr2)
{
return {nr1.a - nr2.a, nr1.b - nr2.b};
}
NumerKompleks shumezo(NumerKompleks nr1, NumerKompleks nr2)
{
return {
nr1.a * nr2.a - nr1.b * nr2.b,
nr1.a * nr2.b + nr2.a * nr1.b};
}
double rrezja(NumerKompleks nr)
{
return sqrt(pow(nr.a, 2) + pow(nr.b, 2));
}
double kendi(NumerKompleks nr)
{
return atan(nr.b / nr.a);
}
void shfaq(NumerKompleks nr)
{
cout << nr.a << " + j" << nr.b << endl;
}
int main()
{
NumerKompleks x = {2, 3};
NumerKompleks y = {4, 5};
NumerKompleks rez = mbledh(x, y);
shfaq(rez);
}
Detyrë: Të deklarohet struktura Data
.
konstrukto(viti, muaji, dita)
i cili krijon datën nga parametrat e dhënë.shtyp(d)
i cili shfaq datën.dita(d)
, muaji(d)
dhe viti(d)
të cilat nxerrin shënimet nga data.–
#include <iostream>
#include <math.h>
using namespace std;
struct Data {
int dita;
int muaji;
int viti;
};
Data krijo(int d, int m, int v) {
Data rez = { d, m, v };
return rez;
}
void shfaq(Data d) {
cout << d.dita << "/" << d.muaji << "/" << d.viti << endl;
}
int dita(Data d) {
return d.dita;
}
int muaji(Data d) {
return d.muaji;
}
int viti(Data d) {
return d.viti;
}
int main() {
Data sot = { 27, 12, 2018 };
shfaq(sot);
cout << "Dita: " << dita(sot) << endl;
cout << "Muaji: " << muaji(sot) << endl;
cout << "Viti: " << viti(sot) << endl;
}
Me numërime dhe struktura mund të modelojmë objektet e jetës reale.
#include <iostream>
using namespace std;
enum Marka
{
Opel,
Mercedes,
BMW,
Audi,
Volkswagen,
Nissan
};
enum Ngjyra
{
Zeze,
Bardhe,
Kuqe,
Kalter,
Gjelber,
Hirte
};
enum Transmisioni
{
Manual,
Automatik
};
struct Vetura
{
Marka marka;
Ngjyra ngjyra;
int viti_prodhimit;
Transmisioni transmisioni;
};
int main()
{
Vetura v1 = {
Opel,
Gjelber,
2005,
Manual};
Vetura v2 = {
Mercedes,
Zeze,
2010,
Automatik};
return 0;
}
Ndonjëherë kemi:
konstrukto
që krijon atë strukturë.Bashkësia e këtyre tri elementeve quhet klasë.