Professional Documents
Culture Documents
Skedaret
Kur ne shkruajme ne nje skedar (file si jemi mesuar ti referohemi)informacioni humbet nese fikim
kompjuterin. Kjo pasi informacioni I futur apo shtypur ndodhet ne memorjen volatile por nese ne
menyre ekzplicite e ruajme atehere ai kalon ne Hard Disk dhe behet I perhershem. Jemi duke folur per
te pakten dy bartes te ndryshem informacioni , te ndryshem ne rezervim te ndryshem ne akses dhe
shpejtesi aksesi.
Pavarsisht bartesit menyra e lexim-shkrimit te informacionit, mbetet e njejte dhe mbeshtetet mbi
konceptin e regjistrimit. Nje regjistrim-apo record eshte nje bashkesi te dhenash qe program I trajton sin
je I tere! Skedari vete eshte nje varg rekordesh te te njejtit tip, te vendosura ne disk.
Ne skedaret tekst rekordet vendosen edhe fizikisht njeri pas tjetrit.Per te kapur njerin record duhet
bredhur prej fillimit I gjithe skedari pra kemi te bejme me kerkim sekuencial rekordi.
Ndryshem nga skedaret tekst ata binare pajisen me nje ID apo numer rekordi qe e lejon programin te
kape direct rekordin e deshiruar. Kjo,sepse dihet qe me pare ID-ja apo numri I identifikimit.
FILE *f;
Dime qe nje variabel eshte nje zone e memorjes me nje emer, psh:
int x;
Perfaqeson nje zone ne memorje me madhesi san je int te ciles I referohemi ne program me emrin x.
x=10;
Cdo vend ne memorje identifikohet me nje numer te cilen ne e quajme adrese e asaj zone memorjeje.
Keshtu ndryshe nga variablat, vlera qe ai ruan eshte ose perfaqeson nje zone memorjeje pra ai ruan nje
adrese memorjeje!
Koncept!
Ky pointer qe ruan nje adrese memorjeje ka nevoje per nje tip. Dhe ky nuk mund te jete nje numer I
plote! Tipi I te dhenes per poiinterat perkon me tipin e te dhenes qe ruhet ne memorje ne ate adrese qe
ruan shenjuesi. Sintaksa:
Tip_te_dhene * emrptr;
Psh:
int *p;
Kujdes!
int *p,q;
Do te thote: p eshte pointer mbi nje numer te plote kurse q eshte nje variabel qe ruan nje numer te
plote.
Adresa!
Kur ne deklarojme nje variabel nuk jemi perseri ne ata qe e vendosim se ku ne memorje do te ruhet ai.
Kete e ben kompilatori dhe Sistemi I Operimit.Por ne momentin qe kjo adrese vendoset Ne C++ kemi
menyre te kapim apo lexojme ate adrese. Kjo behet me ane te operatorit &, psh:
int v;
int *p;
p=&v;
(ILUSTRO!)
Kujdes!
Nese themi :
int a=*p;
Atehere a merr vleren qe ruan variabli v, me ane te akseseimit te vleres se pointerit p I cili kapet me
sintaksen *p.
Kur deklarojme tipin e te dhenes ne nje program, dime se kemi percaktuar madhesine ne memorje te
variablit per nje arkitekture te caktuar kompjuteri. Per shembull nje char ze 1B(mbase pak me shume ne
kompjuterat e rinj e te fuqishem).
Rast studimor
char *ch;
short * sh;
long *l;
Dhe dime se ata shenjojne ne adresat: 1000,2000 dhe 3000 respektivisht. Tani, nese themi:
ch++;
sh++;
l++;
bejme qe:
ch te shenjoje ne adresen e 1001-te, sh mbi 2002 dhe l mbi 3004! Pse? Duke pranuar se short eshte 2B
dhe Long eshte 4B.
*p++;
Do te thote:
*(p++);
Kurse:
*p++=*q++;
ka nje dallim:
Duke qene se operatoret e inkrementimit vijne pas shprehjes qe po vleresohet atehere fillimisht ndodh
kalimi I vleres se pointerit q ne pointerin p, thene ndryshe:
*p=*q;
p++;
q++;
Emri I nje vektori eshte nje pointer ne vetvete qe shenjon mbi adresen e pare te memorjes se alokuar
per elementet e vektorit, pra nese kemi:
int numra[20];
dhe
int *p;
p=numra;
shembull:
# include <iostream>
int main()
int numra[5];
int *p;
*(p+4)=50;//Poziciono shenjuesin 4 elemente me tej ne vector duke e rritur vleren e adreses se tij me
// 4*nr_Bytesh
for(int n=0;n<5;n++)
cout<<numra[n]<<,<<endl;
Le ti rikthehemi skedareve
Rrymat e skedareve
Ne librarine standarte fstream na ofrohet mundes per te derguar apo marrerryma nga dhhe drejt nje
skedari. Do te njihemi me shume me librarine <fstreams.h>
Pame si deklarohet pointeri I tipit FILE I cili shenjon mbi fillimin e nje skedari per t ruajtur dhe sintaksa
ishte :
FILE *f;
Nje instruksion qe do na duhet ta njohim eshte is_open() I cili kontrollon nese skedari eshte I hapur ose
jo.
File.open(file,mode)
Hap skedarin me emrin file sipas menyres mode ku mode mund te jete lexim, shkrim, lexim-shkrim etj.
Kurse File do te thote: bej qe poiinteri File te shenjoje mbi rreshtin apo karakterin e pare apo me sakte
ne fillim te ketij skedari per pune.
Cdo skedar ne fund te punes me te duhet mbyllur dhe kjo behet me ane te instruksionit:
File.close();
Sa I takon trajtimit te gabimeve, nje gabim me sakte nje kontroll per shmangie gabimi qe duhet te bejme
eshte ajo nese kemi arritur ne fund te skedarit apo jo dhe kjo behet me ane te instrukionit:
eof();
Shembull:
if(!eof())
//bej dicka
Operacionet e Input-it
get(); //shembull
in.get();//lexon nje karakter me ane te in dhe kthen vleren e tij integer, nese futim EOF atehere
kthen //end-of-file,ku , in eshte njelloj si objekti cin por I pashoqeruar me >> te cilat bashke me te
thjesht //bejne heqjen e hapesirave boshe.
Operacione output-I;
out<<x;//shkruaj x ne out sipas tipit te x-it; x mund te jete nje tip aritmetik,shenjues,string ose
cfaredo //tipi per te cilin perdoruesi ka percaktuar nje operator;