Download as pdf or txt
Download as pdf or txt
You are on page 1of 25

Pointerat

Tipi i t dhnave pointer ruan adresa t kujtess (n kt mnyr nj pointer referon tek adresa q ruan) Pr tipin e t dhnave pointer, nuk ka asnj emr t lidhur me t Kur deklarohet nj ponter, duhet t prcaktohet edhe tipi i t dhnave q ruhet n adresn e kujtess tek e cila do referoj pointeri

Vetem p eshte pointer; q eshte nje variabel normal int p dhe q jane te dy pointera

Operatori & kthen adresn n kujtes t operandit te tij


p ruan adresen e variablit x

Operandi * i perdorur para emrit te pointerit, i referohet objektit ndaj te cilit referon pointeri
p ruan adresen e variablit x Afishohet vlera e variablit x Variabli x merr vleren 55

Shembull

Lidhja e pointerave me nje rekord

Aksesimi I anetareve te rekordit me anen e pointerit. Kujdes: kllapat vendosen duke qene se . ka prioritet me te larte se *

Aksesimi I anetareve te rekordit me anen e pointerit duke perdorur operatorin ->

Lidhja e pointerave me objektet e klasave

Nepermjet pointerave, C++ krijon variabla dinamike, gjate ekzekutimit te programit Keto variabla krijohen me operatorin new dhe fshihen me operatorin delete

Operatori new rezervon vendin ne kujtese dhe adresen e ketij vendi e ruan tek nje pointer
p ruan adresen e nje vendi int te krijuar ne kujtese q ruan adresen e pare te nje tabele me char

Variablat dinamike nuk kane emra. Ato mund te referohen vetem me anen e pointerave Nqs pointeri i nje variabli dinamik shenjon tek nje varibel tjeter, variabli i pare mbetet i paaksesueshem

Per kete arsye variablat dinamike fshihen duke perdorur operatorin delete

Operacionet mbi pointerat


Ben qe p dhe q te referojne tek i njejti vend ne kujtese

Kthen true nqs p dhe q referojne tek i njejti vend ne kujtese


Kthen true nqs p dhe q nuk referojne tek i njejti vend ne kujtese

Rritet adresa qe mban p me madhesine e kujteses qe mban tipi ndaj te cilit referon pointeri Per shembull ne rastin me lart, adresa qe ruan p do inkrementohet me 4 duke qene se tipi int ze 4 byte ne kujtese. I njejti rregull zbatohet edhe per zbritje, shumezim, pjestim

Tabelat dinamike
Krijon tabele dinamike. p ruan adresen e elementit te pare te tabeles Elementi i pare i tabeles merr vleren 25 p ruan adresen e elementit te dyte te tabeles dhe i jep atij vleren 35

Menyra me e shkurter per te bere te njejten gje eshte si me poshte:

Exceptions (Prjashtimet)

Nje perjashtim(exception) perfaqeson nje situate te padeshiruar qe mund te ndodhe gjate ekzekutimit te programit Per te shmangur perfundimin e padeshiruar te programit ne raste te tilla, perfshihet kod per trajtimin e perjashtimeve ne pikat e programit, ku mendohet se mund te ndodhin keto perjashtime

Blloku trycatch
Blloku try permban instruksionet qe mund te shkaktojne nje exception Nje bllok try mund te ndiqet nga nje ose me shume blloqe catch

Nqs nuk ndodh asnje perjashtim ne bllokun try, te gjitha blloqet catch anashkalohen dhe ekzekutimi vazhdon me instruksionet pas bllokut te fundit catch Kur nje instruksion ne bllokun try shkakton nje perjashtim: - anashkalohen te gjitha instruksionet pas instukionit qe shkaktoi exception - kerkohen blloqet catch sipas radhes derisa gjendet blloku catch qe trajton llojin e perjashtimit te hedhur - ekzekutohen instruksionet e bllokut catch te gjetur Blloku I fundit catch() kap cdo lloj perjashtimi te hedhur nga blloku try

Identifikuesi x, quhet parametri i bllokut catch Tipi I te dhenave int tregon se ky bllok catch mund te kape nje exception te tipit int dhe jo te ndonje tipi tjeter Nje bllok catch mund te kete maksimumi nje parameter

Hedhja e nje perjashtimi


Qe perjashtimi te ndodhe ne bllokun try dhe te kapet nga blloku catch, ai duhet te hidhet nga blloku try Per te hedhur vete nje perjashtim perdoret: throw shprehje;
Ku shprehje mund te jete nje vlere konstante, nje variabel apo nje objekt

Radha e blloqeve catch


Duhet pasur kujdes ne radhen e vendosjes se blloqeve catch ne menyre qe cdo perjashtim te kapet nga blloku I duhur Kjo sepse vleresimi I blloqeve catch behet sipas radhes ne te cilin jane vendosur pas bllokut try

Zgjidhja e problemit te pjestimit me 0, me ane te bllokut try/catch

Klasat C++ te perjashtimeve


C++ ofron nje hierarki klasash per trajtimin e perjashtimeve. Klasa exception eshte klasa baze e tyre. Nder te tjera, kjo klase permban nje metode what qe kthen nje mesazh(string) per perjashtimin e ndodhur Header file stdexcept permban dy klasa qe trashegojne direkt nga klasa exception: - logic_error - runtime_error

Klasat C++ te perjashtimeve


Klasa logic_error perdoret per te trajtuar gabime logjike ne program. Prej saj trashegojne klasat: - invalid_argument (per argumenta te gabuara gjate thirrjes se funkioneve) - out_of_range (kur nje argument eshte jashte kufirit te lejuar) - length_error - bad_alloc Klasa runtime_error perdoret per te trajtuar gabime te kapura vetem gjate ekzekutimit te programit. Prej saj trashegojne klasat: - underflow_error - overflow_error

Shembull perdorimi i klasave te gatshme

Shembull klase perjashtimesh te krijuar nga ne

Mund te krijojme vete klasa qe trajtojne perjashtimet. Cdo klase mund te konsiderohet nje klase per perjashtimet

Ne rastin e ketyre klasave, duhet qe perjashtimet ti hedhim nepermjet throw

Perdorimi i klases se krijuar per trajtimin e perjashtimeve

You might also like