Enes Hoxha
BAZATEC#1 static void Main( void Main(string string[] [] args) { int a; int a; int b; int b; Console.WriteLine("Shkruaj Console.WriteLine( "Shkruaj vlerën e A: "); " ); Int32.TryParse( Int32 .TryParse(Console Console.ReadLine(), .ReadLine(), out out a); a); Console.WriteLine( Console .WriteLine("Shkruaj "Shkruaj vlerën e B: "); " ); Int32.TryParse( Int32 .TryParse(Console Console.ReadLine(), .ReadLine(), out out b); b); if (a > b) if (a { Console.WriteLine( Console .WriteLine("A "A është më e madhe se B" ); } else if if (a (a < b) { Console.WriteLine( Console .WriteLine("A "A është më e vogël se B" ); } }
Versioni 2
PËRMBLEDHJE Permbledhje Hyrje _______________________________________________________________________________________________________2 Kompjuterët dhe Programim Programimii _____________________________________________________________________________4 Programimi _______________________________________________________________________________________________5 Visual Studio ______________________________________________________________________________________________7 Aktivizimi I Visual Studio 2012 2012 __________________________________________________________________________________ 7
Hapja e nje projekti te ri ne C# __________________________________________________________________________8 Projekti i pare ne Csharp Csharp _________________________________________________________________________________________ 9
Struktura e nje programi ne C# _________________________________________________________________________3 Perdorimi i consoles imput/output (I/O) ______________________________________________________________5 _______________________________________________________________________________________6 Variablat dhe Tipet _______________________________________________________________________________________ Tipi Boolean Boolean _______________________________________________________________________________________________________ 6 Tipi Integer (int) (int) __________________________________________________________________________________________________ 7 Tipi Char Char ___________________________________________________________________________________________________________ 9 Tipi String String _______________________________________________________________________________________________________ 11 Tipet Integral Integral ____________________________________________________________________________________________________13 13 Tipet Float , double , decimal decimal __________________________________________________________________________________13 13 Deklarimi i vektore vektoreve e ___________________________________________________________________________________________14 14 Deklarimi i matricave matricave ___________________________________________________________________________________________14 14
Deklarata TRY - CATCH ________________________________________________________________________________ 16 Unazat (Loops) for, while, Do-While , foreach ________________________________________________________ 18 Unaza for for ________________________________________________________________________________________________________ 18 Unaza While While _____________________________________________________________________________________________________20 20 Unaza DO-WHILE DO-WHILE _______________________________________________________________________________________________24 24 Unaza Foreach Foreach __________________________________________________________________________________________________27 27 Perdorimi i unazave ne forma te te pe perbe b era a _____________________________________________________________________28 Unaza FOR e pe perbe b ere __________________________________________________________________________________________ 28 Unaza while e perbere _________________________________________________________________________________________ 29 Unaza do - while e perberee ____________________________________________________________________________________ 30
Operatoret C# ______________________________________________________________________________ _____________31
PËRMBLEDHJE Operatori Unary Unary ________________________________________________________________________________________________32 32 Operatori Binar Binar _________________________________________________________________________________________________33 33 Operatoret aritmetik – Shembull Shembull ______________________________________________________________________________34 34 Operatoret logjik ________________________________________________________________________________________________34 Operatore 34 Operatoret logjik – Shembull Operatore Shembull _________________________________________________________________________________ 34 Ligjet e De Morgan Morgan ______________________________________________________________________________________________35 35 Lidhja e stringjeve stringjeve ______________________________________________________________________________________________35 35
Ushtrime dhe perseritje ______________________________________________________________________________ __ 36 ______________________________________________________________________________________________38 Kontrolla if ______________________________________________________________________________________________
Deklarata Switch________________________________________________________________________________________ 40 Kapercimi pa kusht – perdorimi i goto _______________________________________________________________ 41 Ushtrime ________________________________________________________________________________________________43
Metodat __________________________________________________________________________________________________51 Ushtrim me Metoda Metoda ____________________________________________________________________________________________51 51
Programimi i orjentuar ne objekte ____________________________________________________________________ 54 Historia __________________________________________________________________________________________________________ Historia 54 Konceptet thelbesore ore ___________________________________________________________________________________________55 55 Permbledhje mbledhje _____________________________________________________________________________________________________58 58
POO – Programimi i orjentuar ne objekte – Deklarimi i Klasave ____________________________________ 59 Konceptet rreth Klasave _______________________________________________________________________________ 60 Konstruktoret ______________________________________________________________________________ _____________67 Destruktoret ____________________________________________________________________________________________69 Pse nuk duhet te perdoren destruktoret !? ___________________________________________________________________69 Çfare e shte Çfare shte Garbage Collector Collec tor,, _________________________________________________________________________________69 69
Trashegimia ________________________________________________________________________________ _____________71
C#StreamReaderdheStreamWriter ____________________________________________________________________ 75 Konceptet e databazave ______________________________________________________________________________ __ 77 Çka kuptojme kuptojme me bazat e te te dhe dhenave? ________________________________________________________________________77 Tipet e te dhenave ave ______________________________________________________________________________________________78 78 Tiparet e fushe fushes (Field Properties) Properties) ____________________________________________________________________________79 79 Relacionet mes Tabelave (lidhja e ta belave) RELATIONSHIPS RELATIONSHIPS ______________________________________________80 ______________________________________________80
PËRMBLEDHJE Pyetes ori (Queries) Pyete (Queries) _____________________________________________________________________________________________81 81 Formularet (Forms) Formulare (Forms) ____________________________________________________________________________________________81 81 Raporti – (Reports) (Reports) _____________________________________________________________________________________________81 81
Lidhja e Access-it me Program ________________________________________________________________________ 82 Ushtrime me detyra ____________________________________________________________________________________ 91 Kapitulli 2 Windows Forms __________________________________________________________________________ __ 92 Hyrje ne Windows Forms ______________________________________________________________________________ 93 Çka jane jane Windows Format ? ? ___________________________________________________________________________________93 93 Rregullimi i madhesis se programit ___________________________________________________________________________96 96 Paraqitja e Mesazheve ne program program ___________________________________________________________________________101 101 IntelliSense _____________________________________________________________________________________________________ IntelliSense 102
MessageBox ____________________________________________________________________________________________104 Vendosja Vendos ja e butonave mbrenda MessageBox _________________________________________________________________105 105 Vendosja Vendos ja e ikonave ne ne nje nje MessageBox MessageBox ______________________________________________________________________106 106 Vendosja Vendos ja e nje mesazhi m esazhi nga perdoruesi. _____________________________________________________________________106 106
Disa kombinime te nevojshme gjate programimit me Visual Studio ______________________________ 108 1. Manage Visual Studio Studio _______________________________________________________________________________________ 109 Code Editor Editor _____________________________________________________________________________________________________ 109 Coding __________________________________________________________________________________________________________ Coding 111 Build and Debug Debug _______________________________________________________________________________________________ 112 Tool Windows Windows __________________________________________________________________________________________________ 113
Fjalet Kyçe te Gjuhes Programuese C# _______________________________________________________________114
HYRJE Hyrje Pas perfundimit të Bazat e programimit në C++ dhe algoritmeve , besoj që jeni gati për të filluar të mësuarit në një gjuhë të re programuese C# , C# është pjesë e platformës së .NET me pronë e Microsoft-it. Kjo libër ju dedikohet atyre që dëshirojn të fillojn mësimet në C#, dhe atyre që e kanë përfunduar Bazat e C++.
Kapitulli 1 : Mësohet perdorimi i gjuhës C# duke krijuar programe me Console,
Kapitulli 2 : Mësohet perdorimi i gjuhës C# duke krijuar programe me Windows Forms. Kapitulli 3 : Manipulimi me Databaza Access duke përdorur Windows Format. Kapitulli 4 : Manipulimi me Databaza SQL duke përdorur Windows Format. Kapitulli 3 , 4 nuk perfshihen ne kete literature.
2|P a g e
Bazat e C#
Enes Hoxha
KAPITULLI1 Kapitulli i parë është një përmbledhje e bazave të programimit , zakonisht janë të njejta në çdo gjuhë programuese, mësohet krijimi i programeve të vogla si dhe zgjedhje matematikore duke përdorur përdorur Console Application dhe librarit li brarit Andy me Visaul Studio dhe Andy App Development.
3|P a g e
Bazat e C#
Enes Hoxha
KOMPJUTERËTDHEPROGRAMIMI Kompjuterët dhe Programimi 1.1
Ç’është Kompjuteri ? 1.
Nëse kompjuter është qenie që mund t’I zbatojë urdhërat , atëherë jep shumbuj të kompjuterëve nga jeta e përditshme.
Përgjigje : Ushtari është kompjuter që I zbaton urdhërat që ia jep eprori I vet. Shitësi është kompjuter që I sjell mallrat që I kërkon ti. Vetura Vetura është kompjuter që lëviz sipas urdhërave tua . Natyrisht ka edhe shumë shembuj tjerë. 2.
Sheno të gjitha paisjet hyrëse-dalëse që janë të lidhura me kompjuterin që do ta përdorësh për ushtrimet e tua të programimit.
Përgjigje : Pajisje hyrëse : tastjera , miu (mausi) , mikrofoni. Pajisje dalëse : monitori , altoperlantët , printer. Pajisje hyrëse-dalëse : kartela e rrjetës , modemët.
4|P a g e
Bazat e C#
Enes Hoxha
PROGRAMIMI Programimi
5|P a g e
Bazat e C#
Enes Hoxha
PROGRAMIMI
4. Qe një program i vogël në C# int x = 3 + 2; int x int y int y = x + 1; afishoNëKonsolë(y); - sa do të jetë rezultati i y = _________.
6|P a g e
Bazat e C#
Enes Hoxha
VISUALSTUDIO Visual Studio Per shkruarje te programeve te ndryshme ne kompjuter, aktualisht shfrytezohen disa gjuhe gjuhe programuese. Por, Por, njera nder gjuhet programuese me me te te pe pe rhapura ee shte shte gjuha programuese C#. Ke Ke tu, me qellim te te pe pe rvete rvete simit te te teknike teknike s se se programimit ne ne ke ke te te gjuhe gjuhe , do te shfrytezohet versioni 11 i saj, qe gjendet ne perberje te pakos me programe Visual Studio .NET, i kompanise softverike Microsoft. Ne kuader te pakos ne fjale gjendet edhe e ashtuquajtura Rrethine Rrethine Zhvilluese e Microsoftit (ang. Microsoft Development Development Environment, ose shkurt MDE), permes se ciles programet ne kete gjuhe shkruhen, editohen, kompajlohen, ekzekutohen, ruhen ne ne disk, thirren nga disku etj. Ne Ne ke ke te te literatur do te te punojm me Visual Studio 2012 . Kujdes : Përdorimi i versioneve tjera perveç versionit Express është e ndaluar dhe denohet me ligjë.
AKTIVIZIMIIVISUALSTUDIO2012 Per aktivizimin e Visual Studios, ne desktopin e kompjuterit duhet te klikohet ikona pe pe rkate rkate se. Ne Ne se kjo ikone ikone nuk ee shte shte e vendosur ne desktop, pe pe r aktivizimin e Visual Studios, si edhe gjate aktivizimit te programeve te tjera, mund te shfrytezohet pulla Start e Windowsit dhe pastaj ne menyne rritese perkatese – opcioni All Programs si dhe ne ne nopcioni Microsoft Visual Studio , ne ne sistemin operativ Windows 8 ikona e Visual Studio 2012 gjindet ne Start Screen , ose tek All Apps. Visual Studio duket si ne vijim :
7|P a g e
Bazat e C#
Enes Hoxha
HAPJAENJËPROJEKTITËRINËC# Hapja e nje nje projekti te te ri ne ne C# Hapja e një dokumenti në Visual Sudio për gjuhën C# bëhet me disa hapa , çdo projekt që do të krijojm do ti bëjmë përmes
.
Së pari hapet dritarja e Visual Studios dhe në anën e majt të tij do të paraqitet figura në vijim , për hajen e një projekti të ri klikojm pastaj do t’na lajmrohet dritarja e cila permban templejta të ndryshëm që vinë me Visual Studio , ne do të krijojm për arsye se bazat gjithëmon merren nëpër mjet Console-s. Ose duke zgjedhur New Project tek menyja rreshqitese
. Së
pari
e
zgjedhi ,
pastaj tek shënojm
e emrin
e
projektit tonë dhe ne do ta shenojm si Pastaj do të klikojm në butonin OK dhe jemi gati për të filluar punën në këtë gjuhë të re , Ne së bashku do të mësojm lloje të ndryshme kodesh dhe rregullash me Visual Studio në fund të këti libri do të krijojm aplikacione me Windows Forms. Këthememi tek projekti ynë në C#.
8|P a g e
Bazat e C#
Enes Hoxha
HAPJAENJËPROJEKTITËRINËC#
PROJEKTIIPARËNËCSHARP Ky ee shte shte projeki jone jone i pare do ne vete vete m do te te shtypin emrin tone ne konsol dhe nje mesazh “Mire “Mire serdhe serdhe t ne C#” C#”.. Console .WriteLine("Enes Console.WriteLine( "Enes Hoxha"); Hoxha" ); Console.WriteLine( Console .WriteLine("Mirëserdhe "Mirëserdhe në C#"); C#" );
Console.WriteLine() – Shërben për shtypjen e një teksti apo variablave që do ti perdorim më vonë. Console.Write() – Edhe ky kod shërbenë për vendosjen e një teksti apo variable por veq se kursorin nuk e vendos në kryerresht . Console.Write Console .Write ("Enes ("Enes Hoxha"); Hoxha" ); Console.Write Console .Write ("Mirëserdhe ("Mirëserdhe në C#"); C#" );
9|P a g e
Bazat e C#
Enes Hoxha
STRUKTURAENJËPROGRAMINËC# Struktura e nje programi ne C# Te hapet projekti paraprak i krijuar (Projekti i pare ne ne Csahrp) , kodi ne ne Visual Studio e shte shte : using System; using System; using using System.Collections.Generic; using System.Linq; System.Linq; using System.Text; System.Text; using using System.Threading.Tasks; namespace Projekti_i_parë_në_Csh Projekti_i_parë_në_Csharp arp { class Program { static void void Main( Main(string string[] [] args) { Console.Write( Console .Write("Enes "Enes Hoxha"); Hoxha" ); Console.Write( Console .Write("Mirëserdh "Mirëserdhe e në C#" C#"); ); } } }
using System; using System; using using System.Collections.Generic;
…etj.
------ Paraqesin librarit e .net , librarit tek te cilat jane jane te te ruajtura
kodet me te te cilat ne punojme. Nese ne e fshim using ate here here pe pe r çdo rresht ke kemi te be b e jm me Console duhet using System; System; ate shkruar kodin sin ee vijim. System.Console System.Console.Write( .Write("Enes "Enes Hoxha"); Hoxha"); System.Console System.Console.Write( .Write("Mirëserdhe "Mirëserdhe në C#"); C#" );
Përkëtëarsyepërtieleminuardisafjalënëkodperdorendirektoriumet. namespace Projekti_i_parë_në_Csh Projekti_i_parë_në_Csharp arp – Namespace-i në C# shërben për të deklaruar
fushëveprimin dhe ju lejon organisimin më të mirë mirë kodit, le ta marrim një analogij në jeten jeten e për ditëshme për ta kuptu si si organizohet kodi në c# . Class – janë
klasat , ndersa metodat static void void Main Main janë bankat , në banka ka ulëse dhe
nxënës mësojn në to , kështu brenda metodave në kemi tërë
3|P a g e
është si shkolla , pastaj
STRUKTURAENJËPROGRAMINËC# kodin i cili permban një funksion të caktuar , në të mund të vendosim lloje të ndryshme të variablave si mbi banka që vendosim libra dhe fletore të ndryshme.
FjalaUsing kadyperdorimetëmëdha:
Si një direktivë, kur ajo është përdorur për të krijuar një pseudonim për një namespace ose për të importuar lloje të përcaktuara në namespace të tjera.
Si një dektaratë , kur ajo përcakton një fushëveprim në fund të së cilit object që do të hidhet në kod.
4|P a g e
PERDORIMIICONSOLESIMPUT PERDORIMIICONSOLE SIMPUT/OUTPUT(I/O) /OUTPUT(I/O) Perdorimi Perdo rimi i consoles imput/output (I/O) Te hapet Visual Studio dhe te te krijohet aplikacioni me emrin e mrin Ushtrimi ImpOut . Ne Ne ke ke te te program ne do ta shtypim emrin dhe mbiemrin tone ne ne pe pe r mjet tastjese tastjese s ne ne konsol dhe pastaj programi do t’na ke ke then Tung Emri dhe Mbiemri . static void void Main( Main(string string[] [] args) { Console.Write( Console .Write("Emri "Emri juaj : "); " ); Console.WriteLine( Console .WriteLine("Tung "Tung {0}", {0}" , Console Console.ReadLine()); .ReadLine()); }
Console .ReadLine() – ky kod sherben pe p e r te te lexuar tekstin qe qe e she she non perdoruesi , dmth programi pret deri sa perdoruesi te te shenon diqka ne n e program . ANALIZA e Console Console.WriteLine( .WriteLine("Tung "Tung {0}", {0}", Console Console.ReadLine()); .ReadLine()); –përshkakseemirduhettë Console .Write("Emri Console.Write( "Emri juaj : "); " ); KëtuëshëeshkruarConsole.Write – shënohetnëtënjëjtinrreshtkushkruanEmrijuaj: Console.WriteLine( Console .WriteLine("Tung "Tung – dmth shenohet tung Tung {0}", {0}", Console Console.ReadLine( .ReadLine()); )); {0} ethërretoseemerrvlereneasajqëpersonieshenonnë
konzolnesepersonieshenonemrinAndiatëherë{0} – –emerrëemrinAndi.
5|P a g e
VARIABLATDHETIPET Variablat dhe Tipet Te dhe dhe nat dhe rezultatet qe qe fitohen gjate gjate llogaritjeve llogaritjeve te te ndryshme ruhen ne hapesire ire n e memories se se kompjuterit si vargje te te shifrave shifrave binare. Meqe Meqe gjate gjate ekzekutimit te te programit programit ne ne kompjuter, kompjuter, ne nje nje lokacion memorues mund te vendosen vlera te te ndryshme, pe pe rkate rkate sisht vlerat brenda tyre mund te te jene jene variabile, lokacionet memoruese paraqesin variabla (ang. variable). Pe Pe rmbajtja rmbajtja e nje nje lokacioni njihet edhe si vlere vlere e variable variable s (ang. variable value), kurse emri simbolik qe i shoqe shoqe rohet e paraqet identifikatorin e variable variable s (ang. variable identifier), ose emrin e variable variable s (ang. variable name). Vlerat e variablave, variablave, vare vare sisht nga tipi i tyre, ruhen ne nume nume r te te caktuar bajte bajte sh. Variablat Variablat jane vende pe pe r te te ruajtur te te dhe dhe na . Kemi lloje te te ndryshme te te variablave variablave nder jane : Integer, Boolean , string , char , double , float etj. float etj. Pe Pe r çdo variabe variabe l, para se te te shfryte shfryte zohet, duhet te te deklarohet tipi i saj. Ky deklarim, p.sh., behet keshtu: int a; int a; double x; float z; short int nr; char g;
Brenda nje nje deklarimi mund te te pe pe rfshihen edhe me me shume shume variabla, duke i ndare ndare me presje, p.sh., ke ke shtu: int x , y; long int numri, e , f3;
Me Me shume shume deklarime te te variablave variablave mund te te shkruhen ne ne nje nje rresht, p.sh., ke ke shtu: shtu: double x, h ; int g ; float a ,p ;
ku, siç shihet, deklarimet e tipeve te te veçanta jane jane ndare ndare mes vete me pike pike presje.
TIPIBOOLEAN Ky tip i varables pranon vetem dy vlera , vleren true dhe true dhe false. false. True – e vërtet , false – jo e vërtet.
6|P a g e
VARIABLATDHETIPET Te hapet Visual Studio dhe te te krijohet projekti i ri , dhe te te emertohet TipiBoolen. TipiBoolen. Kur ti eme eme rtojm rtojm variable boolen e shenojm bool + emrin e variables se emertuar (ne i meretojm ato sipas deshires), ne ke ke te te projekt do ti emertojm a dhe b; Se Se pari i deklarojna variablat : bool a; bool a; bool b; bool b; - në këtë formë ne vetëm i kemi deklaruar por nuk i kemi dhanë vlerë ne mundemi me i dhanë vlera në dy forma menjëherë si : bool a = true bool a true; ; bool b bool b = false; false; ose tek menyra e pare ku veq i deklarojna pastaj e shenojm a = true true; ; b = false false;. ;. Pastaj ne do ti afishojm në konzol vlerat e tyre. Console.WriteLine("{0} Console.WriteLine( "{0} është vlera e a.", a." , a); Console.WriteLine( Console .WriteLine("Vlera "Vlera e b eshte {0}." {0}.", , b); - nga rregullat e mësuara nga mësimi i kaluarë. static void void Main( Main(string string[] [] args) { bool a bool a = true true; ; bool b bool b = false false; ; Console.WriteLine( Console .WriteLine("{0} "{0} eshte vlera e a.", a." , a); Console.WriteLine( Console .WriteLine("Vlera "Vlera e b eshte {0}." {0}.", , b); } // i tërë program i shenuar si si duket
TIPIINTEGER(INT) Ky tipe tipe i variablave pranon vete vete m numrat e plote . Pe Pe r ti kuptuar ke ke te te lloj te te variables duhet ta marrim nje nje shembull . Te Te Hapet Visual Studio dhe dhe te krijohet k rijohet projekti i ri ne ne Konsol dhe te te eme eme rtohet rtohet TipiINT. TipiINT. Se Se pari ne do ti deklarojm variablen e tipit integer a dhe b pastaj do ti mbledhim ato dy numra. int a int a = 5;
7|P a g e
VARIABLATDHETIPET int b = 6; - pastaj na novoitet edhe krijimi i variables së tret që do ta int b emërtojm me shkronjë c e cila për vlerë do të ketë a+b . int c int c = a + b; Pastaj do ti shfaqim në konsol përmes Console.WriteLine() Console.WriteLine() si : Console.WriteLine( Console .WriteLine("Shuma "Shuma e C = {0} + {1} = {2} " ,a,b,c); Analiza:
Numrat në programim gjithëmonë fillojn nga numri zero (0) për këtë arsye ta analizojm rreshtin e fundit {0} i referohet variables a (variabla a e ka vleren 5) , {1} i referohet variables b (variabla b ka vleren 6) , dhe {2} i referohet variables c (e cila për vlerë e ka a+b) , në këtë formë shfaqen vlerat në konsol ose kemi mundur ti paraqesim edhe kështu : Console.Write( Console .Write("C "C = {0}",a); {0}",a); Console.Write( Console .Write("+ "+ {0}", {0}", b); Console.Write( Console .Write(" " = {0} ", " , c); -- por ti ikur rreshtave të shumt në kod e perdorim formen e pare. static void void Main( Main(string string[] [] args) { int a int a = 5; int b int b = 6; int c int c = a + b; Console.WriteLine( Console .WriteLine("Shuma "Shuma e C = {0} + {1} = {2} " ,a,b,c); }// I tërë programi si duket
8|P a g e
VARIABLATDHETIPET TIPICHAR
Të dhënat tekstuale, të cilat përmbajnë shkronja, shifra numerike ose simbole të tjera, në kompjuter ruhen si të dhëna të tipit karakter, karakter, duke u deklaruar si të dhëna të tipit char, char, unsigned char dhe signed char. char. Për të dhënat e tilla në gjuhën g juhën C# shfrytëzohet shfr ytëzohet 1 bajt dhe në të ruhet kodi përkatës i karakterit në bazë të kodit
(nga
). Tipin
perdoret për karaktere
në rangun e tregura në tabelën e
mëposhteme. mëposhteme. Karakteret Unicode janë 16 bit që përdoren për të përfaqësuar shumicën e gjuhëve të shkruara të njohura në të gjithë botën.
Tipi char
Rangu U+0000 to U+ffff
Mathësia .NET Framework type Unicode 16-bit character System.Char
: Për ta kuptuar më mire do të marrim një shembull , i cili do të shfaq në konzol kodet e karaktereve të cilat shfrytëzojn në kodin ASCII. Të hapet një projekt i ri me emrin
.
Për shkruarjen e këti programi programi na novoitet edhe një unazë (ang. loop) , ajo është unaza for , unazat mësohen në kaptullin kaptu llin tjetër. tjetër. using System; using System; using using System.Collections.Generic; using System.Linq; System.Linq; using System.Text; System.Text; using using System.Threading.Tasks; namespace ASCIIKODE namespace ASCIIKODE { class Program { static void void Main( Main(string string[] [] args) { char kodet; char kodet; for ( for (int int i i = 33; i <= 255 ; i++) i++) { kodet = Convert Convert.ToChar(i); .ToChar(i); Console.WriteLine( Console .WriteLine("{0} "{0} ---- {1}", {1}" , i, kodet); } } }
9|P a g e
VARIABLATDHETIPET }
Rezultati i fituar pas ekzekutimit të programit është:
Nga rezultati i dhënë shihet se, p.sh., shkronjës D si kod i është ndarë ekuivalenti i numrit decimal 68, kurse kodi i shkronjës së gjuhës shqipe ë është ekuivalenti i numrit decimal 137. Me program nuk është përfshirë shtypja e karaktereve me kode mes vlerave decimale decimale 0 dhe 32, sepse me shtypjen e tyre jepen komanda të ndryshme.
Shembull : Në këtë shembull do të paraqitet karateri X në 4 forma të ndryshme, . static void Main( void Main(string string[] [] args) { char[] char [] karakter = new char char[4]; [4]; karakter[0] = 'X' 'X'; ; // Karakter Tekstual karakter[1] = '\x0058' '\x0058'; ; // Hexadecimal karakter[2] = (char ( char)88; )88; // karakteri i formuar nga tipi integer karakter[3] = '\u0058' '\u0058'; ; // Unicode for ( for (int int i i = 0; i < 4; i++) { Console.WriteLine(karakter[i] Console .WriteLine(karakter[i] );
10 | P a g e
VARIABLATDHETIPET } }
Rezultati i fitaur në fund në program ekzekutohet në këtë mënyrë :
TIPISTRING Ky tip i variablave pranon çdo lloj te karaktereve qofshin shkronja , shkronja , numera apo numera apo simbole. simbole. Te hapet Visual Studio dhe te hapet nje nje projekt i ri me emrin TipiString. TipiString. Deklarimi i variablave te te tipit string me emer e mer dhe mbiemr , ne ne ke ke te te program program shenohet emri dhe mbiemri i juaj. string emri = "Enes" string emri "Enes"; ; string mbiemri string mbiemri = "Hoxha" "Hoxha"; ; - gjithëmonë karakteret brenda “” shfaqin string. Console.WriteLine( Console .WriteLine("Emri "Emri dhe Mbiemri : {0} {1}", {1}" , emri, mbiemri); static void void Main( Main(string string[] [] args) { string emri string emri = "Enes" "Enes"; ; string mbiemri string mbiemri = "Hoxha" "Hoxha"; ; Console.WriteLine( Console .WriteLine("Emri "Emri dhe Mbiemri : {0} {1}" , emri, mbiemri); } – ky kod vleren e stringut nuk kemi mundësi ta ndërrojm.
te merren nga perdoruesi emri dhe Ushtrimi 1 : 1 : Duke perdorur Console.ReadLine() te mbiemri i juaj pastaj te te shfaqen ne ne konzol (pra ne ne ne kod nuk do ta caktojm vleren e stringut po do ta leme perdoruesin ta shenon). Provo vete vete ta zgjedhe zgjedhe sh sh Zgjedhja : static void void Main( Main(string string[] [] args) { string emri; string emri; string mbiemri; string mbiemri; Console.Write( Console .Write("Sheno "Sheno emrin : "); " ); emri = Console Console.ReadLine(); .ReadLine(); Console.Write( Console .Write("Sheno "Sheno mbiemrin : "); " ); mbiemri = Console Console.ReadLine(); .ReadLine(); Console.WriteLine( Console .WriteLine("Emri "Emri dhe Mbiemri : {0} {1}" , emri, mbiemri); }
11 | P a g e
VARIABLATDHETIPET
Escape Sequence
Domethenia
\'
Single Quote
\"
Double Quote
\\
Backslash
\0
Null, not the same as the C# null value
\a
Bell
\b
Backspace
\f
form Feed
\n
Newline
\r
Carriage Return
\t
Horizontal Tab
\v
Vertical Tab
Edhe pse stringu (vargu) ee shte shte nje nje lloj reference , ekziston operatori (==!=) , e shte shte pe pe rcaktuar rcaktuar pe pe r te te krahasuar vlerat e objekteve. Pe Pe r shembull :
12 | P a g e
VARIABLATDHETIPET static void void Main( Main(string string[] [] args) { string a string a = "Tung" "Tung"; ; string b string b = "T" "T"; ; b += "ung" "ung"; ; Console.WriteLin Console .WriteLine(a e(a == b); Console.WriteLine(a); Console .WriteLine(a); Console.WriteLine(b); Console .WriteLine(b); }
TIPETINTEGRAL Tipi
Madhësia(në bit)
Rangu
sbyte
8
-128 to 127
byte
8
0 to 255
short
16
-32768 to 32767
ushort
16
0 to 65535
int
32
-2147483648 to 2147483647
uint
32
0 to 4294967295
long
64
ulong
64
0 to 18446744073709551615
char
16
0 to 65535
-9223372036854775808 to 9223372036854775807
TIPETFLOAT,DOUBLE,DECIMAL Ke Ke to lloje te te variablave variablave pranojn vlera numerike sikurse INT por pe pe r dallim nga int ke ke to lloje te te variablave variablave pranojn vlera numerike me presje dhjetore.
13 | P a g e
VARIABLATDHETIPET
Tipi
Madhesia (bit)
Preciziteti
Rangu
float
32
7 digits
1.5 x 10-45 to 3.4 x 1038
double
64
15-16 digits
5.0 x 10-324 to 1.7 x 10308
decimal
128
28-29 decimal places
1.0 x 10-28 to 7.9 x 1028
DEKLARIMIIVEKTORËVE Fushat nje nje dimensionale dimensionale ndryshe quhen edhe e dhe vektore vektore . Ne program ato deklarohen si variabla me nje nje indeks. Ke Ke shtu, p.sh., deklarimi i vektorit a me 5 ane ane tare tare duket: int[] int [] a = new int int[5]; [5];
Meqe Meqe , siç u tha me me sipe sipe r, indekset fillojne me vlere vlere n zero, pas deklarimit te te me me sipe sipe rm, indekset e 5 anetare are ve ve te te vektori a jane jane : a[0], a[1], ..., . .., a[4]. Shembull : Shembull : Te Te hapet Visual Studio dhe te te hapet nje projekt p rojekt i ri me emrin Vektori Vektori dhe te nga vektori me me lart int[] int[] a = new int int[5]; [5]; t ’ju caktohen 5 numra dhe të mblidhet shuma e tyre. int[] int [] a = new int int[5]; [5]; a[0] = 2; a[1] = 3; a[2] = 5; a[3] = 9; a[4] = 7; int x int x = a[0]+a[1]+a[2]+a[3]+a[4]; a[0]+a[1]+a[2]+a[3]+a[4]; Console.WriteLine(x); Console .WriteLine(x);
DEKLARIMIIMATRICAVE Ngjashëm me vektorët deklarohen edhe matricat. Por, meqë matricat paraqesin fusha dydimensionale, ato deklarohen si variabla me dy indekse. Kështu, p.sh., për matricën Z me 3 rreshta dhe me nga 5 anëtarë në çdo rresht, deklarimi përkatës bëhet kështu:
14 | P a g e
VARIABLATDHETIPET Shembull : Shembull : Te Te hapet Visual Studio dhe te hapet nje nje projekt i ri me emrin Matrica dhe te te nga matrica me me lart bool[][] bool[][] myBools = new bool bool[2][]; [2][]; pastaj të shtypen vlerat e tyre vlerat True dhe False. bool[][] myBools = new bool bool[][] bool[2][]; [2][]; myBools[0][0] = true true; ; myBools[0][1] myBools[0][1] = false false; ; myBools[1][0] myBools[1][0] = true true; ; Console. Console .WriteLine( WriteLine("myBools[0][0]: {0}, myBools[1][0]: {1 }", myBools[0][0], myBools[1][0]);
Një formë tjetër e vargjeve matricore. double[,] double [,] myDoubles = new double double[2, [2, 2]; myDoubles[0, myDoubles[0, 0] = 3.147; myDoubles[0, myDoubles[0, 1] = 7.157; myDoubles[1, myDoubles[1, 1] = 2.117; myDoubles[1, myDoubles[1, 0] = 56.00138917; Console.WriteLine( Console .WriteLine("myDoubles[0, "myDoubles[0, 0]: {0}, myDoubles[1, 0]: {1}" , myDoubles[0, 0], myDoubles[1, 0]);
15 | P a g e
DEKLARATATRY-CATCH Deklarata TRY - CATCH Kjo deklarat ee shte shte nje nje nde nde re re me me te te pe pe rdorura rdorura , pe pe r shkak qe i mundeson programerit me e kontrollu programin programin e ti , te te mos kersas gjate gjate ekzekutimit. Deri tash besoj qe e keni pare se nese ia lejoni perdoruesit me shkru vlera numerike si INT , ndersa ne momentin kur ai gabimisht e shenon ndonje karakter tjete tjete r si shkronje shkronje , programi bllokon dhe ne ne fund pelset , e per mos me ardhe ardhe deri ke ke to probleme te te pa nevojshme e perdorim ke ke te te deklarat. Kjo deklarat duket ke ke shtu shtu ne ne program try { } catch ( catch (Exception Exception) ) { throw; throw ; }
Brenda try ne e shenojm kodin qe q e deshiroj (ndonje funksion i caktuar), nese diqka shkon keq ate ate here here programi nuk do te te bllogoj po do te ekzekutohet kodi brenda catch , ne ne rastin fjala throw – be be ne ne kape kape rcime rcime e kalon tek kodi i me poshtem. Duke pe pe rdorur rdorur deklaratat try – catch te te krijohet programi i cili i llogarit dy numra te tipi int , dhe ne momentin kur perdoruesi e shtyp nje nje shkronje shkronje mos me e lane programin programin me u blloku por me e vendos ne consol con sol nje nje mesazh qe qe vlera e shenuar nuk ee shte shte numer. numer. static void void Main( Main(string string[] [] args) { try { int a, int a, b, c; Console.Write( Console .Write("Shkruaj "Shkruaj a = "); " ); a = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); Console.Write( Console .Write("Shkruaj "Shkruaj b = "); " ); b = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); c = a + b; Console.WriteLine( Console .WriteLine("Rezultati "Rezultati c = {0}",c); {0}" ,c); } catch ( catch (Exception Exception) ) { Console.WriteLine( Console .WriteLine("Vlera "Vlera e shenuar nuk eshte numer !" ); }
16 | P a g e
DEKLARATATRY-CATCH }
Por ne tek catch kemi mundesi me vendos me u ekzekutu nje mesazh i cili na tregon se ku eshte gabimi.
catch ( catch (Exception Exception gabimi) gabimi) { Console.WriteLine(gabimi.Source); Console .WriteLine(gabimi.Source); }
17 | P a g e
UNAZAT(LOOPS)FOR,WHILE,DO-WHILE,FOREACH Unazat (Loops) for, while, Do-While , foreach Zakonisht deklarata ekzekutohet vete vete m nje nje here here duke kaluar me radhe radhe ne ne pe pe r te te . Unazat ose (ang .loops) perdoren per manipulimin e rrjedhes se kontrollit , per perseritjen e pohimeve te te sigurta pa pushim. Kemi lloje te ndryshme unazash por funksioni i tyre ee shte shte i njejte njejte , ato jane jane for , while, while , foreach, do – while.
UNAZAFOR Le te te fillojme fillojme , tash do ta krijojm nje program p rogram i cili do ti paraqes ne ne console numrat duke filuar nga i = 1 deri në 10 duke p erdorur unaze unaze n for, for, pastaj kur vlera i do te te jete jete e 10 duke perdorur barabart me 10 ajo do te ndaloj. n daloj. Struktuar e nje nje unaze for ee shte shte : for(int for( int i i = 1; i<=10; i++) { }
i=1 – paracaktohet vlera fillestare ne ne rastin tone ee she she 1; i<=10 – vlera e dyte dyte , ee shte shte vlera krahasuese , ne ne rastin tone pe pe rderisa vlera vlera e i-se i-s e nuk e shte shte 10 ajo te te te te pe pe rse rse ritet , ne ne momentin kur ajo ee shte shte e barabarte barabarte me 10 ndalon. i++ - vlera e fundit e rrite rrite vleren e i pe pe r 1 , nese na nevoitet me rrite rrite vleren e i-se i-se pe pe r nje nje numer me me te te madh se nje n je ate ate here here duhete duhete shkruar ne ne ke ke te te form i=i+2;. Programi pe pe r paraqitjen ne ne console e numrave nga 1 – 10 duke perdorur unaze unaze n for e shte shte : static void void Main( Main(string string[] [] args) { for( for (int int i i = 1; i<=10; i++) { Console.WriteLine(i); Console .WriteLine(i); } }
18 | P a g e
UNAZAT(LOOPS)FOR,WHILE,DO-WHILE,FOREACH :Tëmirren4emrangaperdoruesipastajataemratëshf tajataemratëshfaqennëconsoleduke aqennëconsoleduke Ushtrimi 2:Tëmirren4emrangaperdoruesipas perdorurunazënfor. using System; using System; using using System.Collections.Generic; using System.Linq; using System.Linq; using System.Text; using System.Text; using using System.Threading.Tasks; namespace unazat namespace unazat { class Program { static void void Main( Main(string string[] [] args) { string[] string [] a = new string string[4]; [4]; a[0] = Console Console.ReadLine(); .ReadLine(); a[1] = Console Console.ReadLine(); .ReadLine(); a[2] = Console Console.ReadLine(); .ReadLine(); a[3] = Console Console.ReadLine(); .ReadLine(); for( for (int int i i = 0; i
Ushtrimi 3 : Tëmirren5numrangaperdoruesipasta Tëmirren5numrangaperdoruesipastajatanumratësh jatanumratëshfaqennëconsoleduk faqennëconsoleduke e perdorurëunazënfor. using System; using System; using using System.Collections.Generic; using System.Linq; System.Linq; using System.Text; System.Text; using using System.Threading.Tasks; namespace unazat namespace unazat { class Program { static void void Main( Main(string string[] [] args) { int[] int [] a = new int int[4]; [4]; a[0] = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); a[1] = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine());
19 | P a g e
UNAZAT(LOOPS)FOR,WHILE,DO-WHILE,FOREACH a[2] = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); a[3] = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); for( for (int int i i = 0; i
UNAZAWHILE Te gjtha programet e krijuar me me lart duke perdorur unaze unaze n for ,tash do ti krijojm duke perdorur unaze unaze n while. Struktuar e nje nje unaze while ee shte shte si ne ne vijim : vlera e ndryshuar = 0; // Vlera fillestare while(kushti) while (kushti) { funksioni; vlera e ndryshuar++; // Vlera e ndryshuar rritet me vleren e caktuar. }
Pe Pe r dallim nga unaza for ee shte shte veç me me nyra e te te shkruarit dmth, se se pari ipet vlera fillestare e cila na ndihmon se sa here here do te te ke ke thehet bllok kodi. Pastaj duhet beree krahasimi , ne ne se vlera e ndryshuar ee shte shte brenda normave ate ate here here kodi ekzekutohet brenda unazes ,ne ,n e momentin kur vlera e ndryshuar nuk e shte shte brenda normave te te veta ate ate here here programi del nga unaza. nje program i cili do ti paraqes ne ne console Ushtrimi 1 : 1 : Le te fillojme, tash do ta krijojm nje numrat duke filuar nga i = 1 deri në 10 duke 10 duke perdorur unaze unaze n while, pastaj kur vlera i do te te jete jete e barabart me 10 ajo do te ndaloj. Struktuar e nje nje unaze while ee shte shte : i=1; while(i<=10) while (i<=10) { Console.WriteLine(i); i++; }
20 | P a g e
UNAZAT(LOOPS)FOR,WHILE,DO-WHILE,FOREACH
Ne Ne program kodi duket duket sin e vijim : static void Main( void Main(string string[] [] args) { int i; int i; i = 1; while (i<=10) while (i<=10) { Console.WriteLine(i); i++; } }
:Tëmirren4emrangaperdoruesipastajataemratë tajataemratëshfaqennëconsoleduke shfaqennëconsoleduke Ushtrimi 2:Tëmirren4emrangaperdoruesipas perdorurunazënwhile. using System; using System; using System.Collections.Generic; using System.Collections.Generic; using System.Linq; using System.Linq; using System.Text; using System.Text; using System.Threading.Tasks; using System.Threading.Tasks; namespace Uwhile namespace Uwhile { class Program class Program { static void void Main( Main(string string[] [] args) { int i; int i; string[] string [] a = new string string[4]; [4]; a[0] = Console.ReadLine(); a[1] = Console.ReadLine(); a[2] = Console.ReadLine(); a[3] = Console.ReadLine(); i = 0; while (i
21 | P a g e
UNAZAT(LOOPS)FOR,WHILE,DO-WHILE,FOREACH i++; } } } }
Ushtrimi 3 : Tëmirren5numrangaperdoruesipasta Tëmirren5numrangaperdoruesipastajatanumratëshfaqen jatanumratëshfaqennëconsoleduke nëconsoleduke perdorurëunazënwhile. using System; using System; using System.Collections.Generic; using System.Collections.Generic; using System.Linq; using System.Linq; using System.Text; using System.Text; using System.Threading.Tasks; using System.Threading.Tasks; namespace Uwhile namespace Uwhile { class Program class Program { static void void Main( Main(string string[] [] args) { int i; int i; int[] int [] a = new int int[4]; [4]; a[0] = Convert.ToInt32(Console.ReadLine()); a[1] = Convert.ToInt32(Console.ReadLine()); a[2] = Convert.ToInt32(Console.ReadLine()); a[3] = Convert.ToInt32(Console.ReadLine()); i = 0; while (i
22 | P a g e
UNAZAT(LOOPS)FOR,WHILE,DO-WHILE,FOREACH
Ushtrimi 4 : Tëkrijohendyvargjevek Tëkrijohendyvargjevektoriale(njëdimensionale)A toriale(njëdimensionale)AdheBpastajtë dheBpastajtëformohet formohet nëvargirimeCmevlerateadheb,dmth.Tëmblidhen nëvargirimeCmevlerateadh eb,dmth.Tëmblidhenvleratmeindeksetënjejta vleratmeindeksetënjejtadhe dhe shumaesajtëjetëvlerëevargutC.P.sh.A[n]={ shumaesajtëjetëvlerëevargu tC.P.sh.A[n]={1,3}dheB[n]={2,4}tëkrijohetvargu 1,3}dheB[n]={2,4}tëkrijohetvarguC[n]= C[n]= {3,7}. using using using using using
System; System.Collections.Generic; System.Linq; System.Text; System.Threading.Tasks;
namespace Uwhile { class Program { static void void Main(string[] Main(string[] args) { int[] int [] A = {5,-2,7,3}; int[] int [] B = {2,6,-8,4}; int[] int [] C = new int int[4]; [4]; int i; int i; i = 0; while (i while (i < 4) { C[i] = A[i] + B[i]; Console.WriteLine("C[{0}] Console.WriteLine( "C[{0}] = {1}", {1}", i, C[i]); i++; } } } }
23 | P a g e
UNAZAT(LOOPS)FOR,WHILE,DO-WHILE,FOREACH
Vertetimi ne form teorike : A = {5, -2, 7, 3}; 0 1 2 3 B = {2, 6, -8, 4}; 0 1 2 3 C0 = A0 C1 = A1 C2 = A2 C3 = A3 C = {7, 0
+ B0 = + B1 = + B2 = + B3 = 4, -1, 1 2
5 + 2 = 7 -2 + 6 = 4 7 + (-8) = 7 3 + 4 = 7 7}; 3
8 = -1
–
UNAZADO-WHILE Unaza Do-while ee shte shte e pe pe rafe rafe rt rt me unaze unaze n while veq se kodi i cili ekzekutohet nuk shkruhet brenda whiles por brenda DO. Struktura e nje nje unaze DO-WHILE ee shte shte sin ee vijim : vlera e ndryshuar = 0; // Vlera tek e cile mundësohet përsëritja e bllok kodit , vlera e cila krahasohet do { funksioni; // Kodi i cili ekzekutohet brenda unazës vlera e ndryshuar++; } while while(vlera (vlera e ndryshuar <= me vleren kufitare) // Kushti
nje program i cili do ti paraqes ne ne console Ushtrimi 1 : 1 : Le te fillojme, tash do ta krijojm nje numrat duke filuar nga i = 1 deri në 10 duke unaze n do-while, pastaj kur vlera i 10 duke perdorur unaze do te te jete jete e barabart me 10 ajo do te ndaloj. using System; using System.Collections.Generic;
24 | P a g e
UNAZAT(LOOPS)FOR,WHILE,DO-WHILE,FOREACH using System.Linq; using System.Text; using System.Threading.Tasks; namespace Udowhile { class Program { static void void Main(string[] Main(string[] args) { int i = 1; int i do { Console.WriteLine(i); i++; } while while (i<=10); (i<=10); } } }
:Tëmirren4emrangaperdoruesipastajataemratë tajataemratëshfaqennëconsoleduke shfaqennëconsoleduke Ushtrimi 2:Tëmirren4emrangaperdoruesipas perdorurunazënwhile. using using using using using
System; System.Collections.Generic; System.Linq; System.Text; System.Threading.Tasks;
namespace Uwhile { class Program { static void void Main(string[] Main(string[] args) { int i; int i; string[] a = new string[4]; a[0] = Console.ReadLine(); a[1] = Console.ReadLine(); a[2] = Console.ReadLine(); a[3] = Console.ReadLine(); i = 0; do { Console.WriteLine("Emrat Console.WriteLine( "Emrat e shenuar janë : {0}", {0}", a[i]);
25 | P a g e
UNAZAT(LOOPS)FOR,WHILE,DO-WHILE,FOREACH i++; } while (i
Ushtrimi 3 : Tëkrijohendyvargjevek Tëkrijohendyvargjevektoriale(njëdimensionale)A toriale(njëdimensionale)AdheBpastajtë dheBpastajtëformohet formohet nëvargirimeCmevlerateadheb,dmth.Tëmblidhen nëvargirimeCmevlerateadh eb,dmth.Tëmblidhenvleratmeindeksetënjejtadhe vleratmeindeksetënjejtadhe shumaesajtëjetëvlerëevargutC.P.sh.A[n]={ shumaesajtëjetëvlerëevargu tC.P.sh.A[n]={1,3}dheB[n]={2,4}tëkr 1,3}dheB[n]={2,4}tëkrijohetvarguC[n]= ijohetvarguC[n]= {3,7}.DukeperdorurunazënDo-While using using using using using
System; System.Collections.Generic; System.Linq; System.Text; System.Threading.Tasks;
namespace Uwhile { class Program { static void void Main(string[] Main(string[] args) { int[] int [] A = { 5, -2, 7, 3 }; int[] int [] B = { 2, 6, -8, 4 }; int[] int [] C = new int int[4]; [4]; int i; int i; i = 0; do { C[i] = A[i] + B[i]; Console.WriteLine("C[{0}] Console.WriteLine( "C[{0}] = {1}", {1}", i, C[i]); i++; } while while (i (i < 4); } } }
26 | P a g e
UNAZAT(LOOPS)FOR,WHILE,DO-WHILE,FOREACH UNAZAFOREACH Unaza foreach ee shte shte mjaft e pe pe rafe rafe rt rt me for , por unaza foreach perdoret me me se se shumti tek vargjet (qofte (qofte vektoriale ose matricore). Struktura e unazes foreach eshte foreach ( foreach (string string a a in in emrat) emrat) { Console.WriteLine( Console .WriteLine("{0}" "{0}", , a); } string a in string a in emrat emrat – krijon një variable string që merrë vlerat nga vektori me emrin emrat.
Te krijohet nje nje varge varge string , me ke ke ta emra emri[] = {Enes, Andi , Lundrim, Ushtrimi 1 : 1 : Te Driton}, duke perdorur unazen foreach te te shfaqen ne ne ne ne console ke ke ta emra. using System; using System; using using System.Collections.Generic; using System.Linq; System.Linq; using System.Text; System.Text; using using System.Threading.Tasks; namespace FOREACHUnaza namespace FOREACHUnaza { class Program { static void void Main( Main(string string[] [] args) { string[] string [] emri = { "Enes" "Enes", , "Andi" "Andi", , "Lundrim" "Lundrim", , "Driton" "Driton" }; }; foreach (string foreach ( string a a in in emri) emri) { Console.WriteLine( Console .WriteLine("{0}" "{0}", , a); } Console.ReadLine(); Console .ReadLine(); } } }
27 | P a g e
UNAZAT(LOOPS)FOR,WHILE,DO-WHILE,FOREACH PERDORIMIIUNAZAVENËFORMATËPËRBËRA Nga njëherë për të mos shkruar kodë më shumë ne kemi mundesi që brenda një unaze të kryejm detrya të shumta. Tek këto detyra ne mund të kryejm me të gjitha unazat. Unaza FOR e përbërë
Tashmë e dime se cila është struktuar e unazës for , ne do ta zgjedhim një shembull me for të përbërë(të përbërë në kuptimin shumë detyra në një for). Të krijohet programi i cili llogarit y = S + P ku
∑= =1 ( 4)
∏=2 (2)
ndersa
ku k = k+2
y = S+P , duke përdorur unazën for. for (i = 1, k = 2; i <= n || k <= m; i++, k = k + 2) for (i { S = S + i + 4; P = P * Math Math.Pow(k, .Pow(k, 2); }
I tërë programi është kështu : using System; using System; using using System.Collections.Generic; using System.Linq; System.Linq; using System.Text; System.Text; using using System.Threading.Tasks; namespace projekti_i_pare projekti_i_pare { class Program { static void void Main( Main(string string[] [] args) { int n, int n, i, k, m; double S double S = 0, P = 1, y; n = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); m = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); for (i = 1, k = 2; i <= n || k <= m; i++, k = k + 2) for (i { S = S + i + 4; P = P * Math Math.Pow(k, .Pow(k, 2); } y = S + P; Console.WriteLine( Console .WriteLine("Rezultati "Rezultati y = {0} ", " , y); Console.ReadLine(); Console .ReadLine();
28 | P a g e
UNAZAT(LOOPS)FOR,WHILE,DO-WHILE,FOREACH } } } Unaza while e përbërë
Unaza While nuk ka shumë dallime nga while i thjesht ,veç se tek krahasimi që bëhet hynë në funksion operatori logjik “OSE”
.
Të krijohet programi i cili llogarit y = S + P ku
∑= =1 ( 4)
∏=2 (2)
ndersa
ku k = k+2
y = S+P , duke përdorur unazën while. using System; using System; using using System.Collections.Generic; using System.Linq; System.Linq; using System.Text; System.Text; using using System.Threading.Tasks; namespace projekti_i_pare projekti_i_pare { class Program { static void void Main( Main(string string[] [] args) { int n, int n, i, k, m; double S double S = 0, P = 1, y; n = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); m = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); i = 1; k = 2; while (i while (i <= n || k <= m) { S = S + i + 4; P = P * Math Math.Pow(k, .Pow(k, 2); i++; k = k + 2; } y = S + P; Console.WriteLine( Console .WriteLine("Rezultati "Rezultati y = {0} ", " , y); Console.ReadLine(); Console .ReadLine(); } } }
29 | P a g e
UNAZAT(LOOPS)FOR,WHILE,DO-WHILE,FOREACH Unaza do - while e përbërë
Edhe unaza do – while e përbërë nuk ka shumë dallimë nga ajo e thjeshta veç se ketu prap e kemi të perdorurë operatorin logjik “OSE”
.
Të krijohet programi i cili llogarit ll ogarit y = S + P ku
∑= =1 ( 4)
∏=2 (2)
ndersa
ku k = k+2
y = S+P , duke përdorur unazën do - while. using System; using System; using using System.Collections.Generic; using System.Linq; System.Linq; using System.Text; System.Text; using using System.Threading.Tasks; namespace projekti_i_pare projekti_i_pare { class Program { static void void Main( Main(string string[] [] args) { int n, int n, i, k, m; double S double S = 0, P = 1, y; n = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); m = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); i = 1; k = 2; do { S = S + i + 4; P = P * Math Math.Pow(k, .Pow(k, 2); i++; k = k + 2; } while while (i (i <= n || k <= m); y = S + P; Console.WriteLine( Console .WriteLine("Rezultati "Rezultati y = {0} ", " , y); Console.ReadLine(); Console .ReadLine(); } } }
30 | P a g e
OPERATORËTC# Operatoret C# Category (by precedence)
Primary
Operator(s)
x.y f(x) a[x] x++ x-- new typeof default checked unchecked delegate
Associativity
left
Unary
+ - ! ~ ++x --x (T)x
right
Multiplicative
*/%
left
Additive
+-
left
Shift
<< >>
left
Relational
< > <= >= is as
left
Equality
== !=
right
Logical AND
&
left
Logical XOR
^
left
Logical OR
|
left
Conditional AND
&&
left
Conditional OR
||
left
Null Coalescing
??
left
Ternary
?:
right
Assignment
= *= /= %= += -= <<= >>= &= ^= |= =>
right
31 | P a g e
OPERATORËTC# OPERATORIUNARY // Operatoret Unar int unary int unary = 0; int preIncrement; preIncrement; int preDecrement; preDecrement; int postIncrement; postIncrement; int postDecrement; postDecrement; int positive; int positive; int negative; int negative; sbyte bitNot; sbyte bitNot; bool logNot; bool logNot; preIncrement = ++unary; Console.WriteLine( Console .WriteLine("pre-Increment: "pre-Increment: {0}", {0}" , preIncrement); preIncrement); preDecrement = --unary; Console.WriteLine( Console .WriteLine("pre-Decrement: "pre-Decrement: {0}", {0}" , preDecrement); preDecrement); postDecrement postDecrement = unary--; Console.WriteLine( Console .WriteLine("Post-Decre "Post-Decrement: ment: {0}" {0}", , postDecrement); postDecrement); postIncrement postIncrement = unary++; Console.WriteLine( Console .WriteLine("Post-Incre "Post-Increment: ment: {0}" {0}", , postIncrement); postIncrement); Console.WriteLine( Console .WriteLine("vlera "vlera finale: {0}", {0}" , unary); positive = -postIncrement; -postIncrement; Console.WriteLine( Console .WriteLine("Pozitiv: "Pozitiv: {0}", {0}" , positive); negative = +postIncrement; +postIncrement; Console.WriteLine( Console .WriteLine("Negativ: "Negativ: {0}", {0}" , negative); bitNot = 0; bitNot = (sbyte ( sbyte)(~bitNot); )(~bitNot); Console.WriteLine( Console .WriteLine("Bitwise "Bitwise Not: {0}", {0}" , bitNot); logNot = false false; ; logNot = !logNot; Console.WriteLine( Console .WriteLine("Logical "Logical Not: {0}", {0}" , logNot);
32 | P a g e
OPERATORËTC# OPERATORIBINAR int x, y, result; int x, float floatresult; float floatresult; x = 7; y = 5; result = x + y; Console.WriteLine( Console .WriteLine("x+y:{0}" "x+y:{0}", , result); result = x - y; Console.WriteLine( Console .WriteLine("x-y: "x-y: {0}", {0}" , result); result = x * y; Console.WriteLine( Console .WriteLine("x*y: "x*y: {0}", {0}" , result); result = x / y; Console.WriteLine( Console .WriteLine("x/y: "x/y: {0}", {0}" , result); floatresult = (float ( float)x )x / (float (float)y; )y; Console.WriteLine( Console .WriteLine("x/y: "x/y: {0}", {0}" , floatresult); floatresult); result = x % y; Console.WriteLine( Console .WriteLine("x%y: "x%y: {0}", {0}" , result); result += x; Console.WriteLine( Console .WriteLine("result+=x: "result+=x: {0}", {0}" , result);
33 | P a g e
OPERATORËTC# OPERATORETARITMETIK–SHEMBULL class Program { static void void Main( Main(string string[] [] args) { int squarePerimeter int squarePerimeter = 17; double squareSide double squareSide = squarePerimeter / 4.0; double squareArea double squareArea = squareSide * squareSide; Console.WriteLine(squareSide); Console .WriteLine(squareSide); // 4.25 Console.WriteLine(squareArea); Console .WriteLine(squareArea); // 18.0625 int a int a = 5; int int b b = 4; Console Console.WriteLine(a .WriteLine(a + b); Console.WriteLine(a Console .WriteLine(a + (b++)); // 9 Console.WriteLin Console .WriteLine(a e(a + b); // 10 Console.WriteLine(a Console .WriteLine(a + (++b)); // 11 Console.WriteLin Console .WriteLine(a e(a + b); // 11 Console.WriteLine(14 Console .WriteLine(14 / a); // 2 Console.WriteLine(14 Console .WriteLine(14 % a); // 4 } }
// 9
OPERATORËTLOGJIK
Operatorët logjik si (tipi boolen) marrin vlera true ose false. Nese operatorët që marrin vlera boolen ata këthejn rezultat boolen (True , False) . Operatorët themelorë boolen janë : "DHE" (&&), "OSE" (||), "eskluzive ose" (^) and “mohimi logjik” (!).
Tabela e më poshtme përmban operatorët logjik në C# dhe operacionet që ata i kryejnë :
true
true
false
true
true
talse
true
false
false false
false
true
true
fales
true
true
false
true
true
fales
false
true
false
false
false
Operatorët logjik – Shembull
Në këtë shembull do të ilustrohen operatorët e më sipërm logjik. class Program { static void void Main( Main(string string[] [] args) { bool a bool a = true true; ; bool b bool b = false false; ; Console.WriteLine(a Console .WriteLine(a && b); Console.WriteLine(a Console .WriteLine(a || b);
34 | P a g e
// False // True
OPERATORËTC# Console.WriteLine(!b); Console.WriteLine(!b); Console.WriteLine(b Console .WriteLine(b || true); true); Console.WriteLine((5 Console .WriteLine((5 > 7) ^ (a == b));
// True // True // False
} }
LIGJETEDEMORGAN
Operacionet logjike bien nën ligjet e De Morgan nga logjika matematikore:
!(a && b) == (!a || !b) !(a || b) == (!a && !b) ! b)
Ligji i parë thotë se mohimi i ndërlidhjës logjike (DHE) e të dy pozicionimeve , është e barabart me shkëputjen logjike (OSE) e negacioneve të t yre . Ligji i dytë thekson se mohimi i shkëputjes të dy deklaratave është e barabartë me ndërlidhjen e negacioneve të tyre.
LIDHJAESTRINGJEVE
Duke shfrytëzuar operatorin + ne kemi mundësi ti bashkojm dy e më shumë stringje të ndryshme me njëra tjetrën . Nëse të paktën njëri prej argumenteve në shprehjen është i tipit string , dhe ka operandet tjera të llojit të ndryshëm nga stringu, që do të konvertohet automatikisht në tipin string , e cila lejon lidhje të suksesshme të stringjeve. Kjo është fantastike se si .NET i trajton këto operacione duke na kursyer kohë në kodim dhe duke na lejuar përqëndrim në objektivat kryesore të punës sonë në programim. static void void Main( Main(string string[] [] args) { string emri string emri = "Enes "; "; string mbiemri string mbiemri = "Hoxha" "Hoxha"; ; string a string a = emri + mbiemri; Console.WriteLine(a); Console .WriteLine(a); string pershendetje string pershendetje = "Pershendetje" + " " + " + a; Console.WriteLine(pershendetje); Console .WriteLine(pershendetje); }
35 | P a g e
USHTRIMEDHEPËRSËRITJE Ushtrime dhe pe pe rse rse ritje 1. Duke perdorur operatorët të merren dy numra dhe pastaj ata të mblidhen dhe të shumëzohen me njëri tjetrin , prodhimi i realizuar nga ata dy numra të pjestohet me një numer tjetër. static void void Main( Main(string string[] [] args) { Console.Write( Console .Write("a "a = "); "); int a int a = int int.Parse( .Parse(Console Console.ReadLine()); .ReadLine()); Console.Write( Console .Write("b "b = "); "); int b int b = int int.Parse( .Parse(Console Console.ReadLine()); .ReadLine()); Console.WriteLine( Console .WriteLine("{0} "{0} + {1} = {2}", {2}" , a, b, a + b); Console.WriteLine( Console .WriteLine("{0} "{0} * {1} = {2}", {2}" , a, b, a * b); Console.Write( Console .Write("f "f = "); "); double f double f = double double.Parse( .Parse(Console Console.ReadLine()); .ReadLine()); Console.WriteLine( Console .WriteLine("{0} "{0} * {1} / {2} = {3}", {3}" , a, b, f, a * b / f); }
2. Duke perdorur operatort
dhe
shembuj për të dallimin në mes tyre :
Pjesa 2 kur rezultati është a = 2 ; b = 2
36 | P a g e
do ti analizojm kta dy
USHTRIMEDHEPËRSËRITJE A është e mundur kjo?, po plotësisht , ketu kemi të bëjmë me operatorë të cilët vendosen ose para po prapa variables që deshirojm ta rritim per vleren 1 .
Kujdes ! Kur do të shihëni raste si ky I paraqitur më lartë atëherë vlera ++ - tregon se vleres se variables perkatëse e rritë për vleren 1 dmth. nëse a = 1 ; dhe deshirojm ta rrisim për dy atëhere e kemi mundesin e perdorimit të opratorit ++ ose ta shenojm në këtë form : a = 1; a = a + 1 ; - tash vlera e a është a = 2 , porn ë vend të këti rreshti e shenojmë : a++;
Console .WriteLine("Vlera Console.WriteLine( "Vlera e a = " + " + a++); Console.WriteLine( Console .WriteLine("Vlera "Vlera e b = " + " + ++b); Dallimi në mes këtyre dy rreshtave është tek rreshti I pare së pari shtypet vlera e a a++ pastaj rritë vleren e a-së , ndersa tek rreshti I dytë së pari rritet vlera e b-së ++b , pastaj shtypet vlera e b.
37 | P a g e
KONTROLLAIF Kontrolla if Eksistojn dy komanda për plotësimin e kushteve , tek të cilat kontrolla e ekzekutimit realizohet sipas kushtit të vendosur nga vetë perdoruesi, ato janë IF dhe Switch . Kontrolla “if” lejon ekzekutimin e shtigjeve shtigj eve të ndryshme. Kur kushti i dhënë dh ënë rezulton të jetë i vërtetë, një bllok i kodit do të ekzekutohet. Kemi forma të ndryshme të përdorimit të kontrollës if. if (Kushti if ( Kushti) ) { Console.WriteLine( Console .WriteLine("Shtyp "Shtyp tekstin"); tekstin" ); }
Forma tjetër e “if” – kombinimi i shumë kushteve për testim nga të cilat mund të ekzekutohet ekzekutohet vetëm një pjesë e caktuar e kodit, saktësisht ajo për të cilën kushti i dhënë për testim plotësohet apo kthen vlerën “true”. “true”. if ( if (Kushti Kushti 1) 1) { } else if if ( (Kushti Kushti 2) 2) { } else { } int a = 4, b = 5; int a if(a > b) { Console.Write( Console .Write(“Vlera a është më e madhe se b” ); } else if(a if(a < b) { Console.Write( Console .Write(“Vlera a është më e vogel se b”); } else
38 | P a g e
KONTROLLAIF { .Write(“Të dy vlerat a dhe b janë të barabarta” ); Console.Write(“Të
}
39 | P a g e
DEKLARATASWITCH Deklarata Switch Deklarata switch është një deklaratë e kontrollit kontrollit që merret me zgjedhje të shumta dhe renditjet duke kaluar kontrollin kontrollin e njërës prej deklaratave rast rast brenda trupit të saj si në shembullin e mëposhtëm: int myint; int myint; Console.WriteLine( Console .WriteLine("Shkruaj "Shkruaj numrin"); numrin" ); Int32.TryParse( Int32 .TryParse(Console Console.ReadLine(), .ReadLine(), out out myint); myint); switch(myint) switch (myint) { case 1: case 1: Console.WriteLine( Console .WriteLine("Numri "Numri break; break ; case 2: case 2: Console.WriteLine( Console .WriteLine("Numri "Numri break; break ; case 3: case 3: Console.WriteLine( Console .WriteLine("Numri "Numri break; break ; default: default : Console.WriteLine( Console .WriteLine("Numri "Numri
është {0}", {0}" , myint); është {0}", {0}" , myint); është {0}", {0}" , myint); është {0} nuk është ndërmjet 1 dhe 3." ,
myint); break; break ;
Kontrolli është transferuar transferuar në pasqyrën e lëndës e cila përputhet me vlerën e switch. swi tch. Pas çdo deklarate është i nevojshëm një pushim ose
duke përfshirë edhe bllokun e fundit që
mund të jetë në bllok me një deklarat të caktuar ose një deklarat
40 | P a g e
.
KAPËRCIMIPAKUSHT–PËRDORIMIIGOTO Kapercimi pa kusht – perdorimi i goto Për kapërcim pa kusht, prej një pjese të programit në një pjesë tjetër, ose në fund të tij, shfrytëzohet komanda goto. Forma e goto është kështu : Kjo komandë, në formën e saj të përgjithshme, shkruhet kështu:
goto a; goto a; ku a është labela e zgjedhur lirisht si identifikator. Përmes kësaj komande kompjuterit kompjuterit i urdhërohet që pa kusht ta vazhdojë ekzekutimin e programit, programit, duke kapërcyer te komanda para së cilës gjendet labela a.
using System; using System; using using System.Collections.Generic; using System.Linq; System.Linq; using System.Text; System.Text; using using System.Threading.Tasks; namespace perdorimiGOTO perdorimiGOTO { class Program { static void void Main( Main(string string[] [] args) { fillimi: int a, int a, b; Console.WriteLine( Console .WriteLine("Shtyp "Shtyp vleren a = "); " ); a = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); Console.WriteLine( Console .WriteLine("Shtyp "Shtyp vleren e b ="); =" ); b = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); if (a if (a > b) { Console.WriteLine(a Console .WriteLine(a + " është më e madhe se " + " + b); } else if if (a (a < b) { Console.WriteLine(a Console .WriteLine(a + " është më e vogël se " " + + b);
41 | P a g e
KAPËRCIMIPAKUSHT–PËRDORIMIIGOTO } else { Console.WriteLine(a Console .WriteLine(a + " është e barabartë me " + " + b); } Console.WriteLine( Console .WriteLine("Për "Për të përsëritur programin shtyp -- p , ndersa për ta ndal programin shtyp -- j"); j" ); char x char x = Convert Convert.ToChar( .ToChar(Console Console.ReadLine()); .ReadLine()); if (x if (x == 'p' 'p'||x== ||x=='P' 'P') ) { goto fillimi; goto fillimi; } else if if (x (x == 'j' 'j' || || x=='J' x=='J') ) { goto ndalo; goto ndalo; } else { Console.WriteLine(x Console .WriteLine(x + " Vlera e shtypur nuk është P ose J" ); Console.ReadLine(); Console .ReadLine(); } ndalo: Console.WriteLine( Console .WriteLine("Programi "Programi ndaloj ----------------------" ); Console.ReadLine(); Console .ReadLine(); } } }
42 | P a g e
USHTRIME Ushtrime Ushtrimet qe qe do ti be be jme jme do te te jene jene dhe me zgjedhje , por ju provojeni provojeni ti be be ni vete vete m dhe pastaj vertetoni (te (te gjitha ushtrimet jane jane te te emertuara me Numrin e ushtrimeve ne CD te te punuara me Visaul Studio 2012).
Ushtrimi 1: 1: Duke perdorur tipin e variavles int , perdoruesi ia jep dy vlera numerika dhe pastaj programi I krahason ato dy vlera dhe nxjerrë nx jerrë perfundimin se cila është më e madhe : Zgjedhja : static void Main( void Main(string string[] [] args) { int a; int a; int b; int b; Console.WriteLine("Shkruaj Console.WriteLine( "Shkruaj vlerën e A: "); " ); Int32.TryParse( Int32 .TryParse(Console Console.ReadLine(), .ReadLine(), out out a); a); Console.WriteLine( Console .WriteLine("Shkruaj "Shkruaj vlerën e B: "); " ); Int32.TryParse( Int32 .TryParse(Console Console.ReadLine(), .ReadLine(), out out b); b); if (a if (a > b) { Console.WriteLine( Console .WriteLine("A "A është më e madhe se B" ); } else if if (a (a < b) { Console.WriteLine( Console .WriteLine("A "A është më e vogël se B" ); } }
Ushtrimi 2 : Duke perdorur llojin e variables Char , perdoruesi i jepë programit një karakter pastaj programi i tregon a është ai karakter i madhë apo I vogël ose nuk është karakter fare. far e. Zgjedhja : static void void Main( Main(string string[] [] args) { Console.Write( Console .Write("Sheno "Sheno një shkronjë: "); " ); char c char c = (char (char) )Console Console.Read(); .Read(); if ( if (char char.IsLetter(c)) .IsLetter(c)) if ( if (char char.IsLower(c)) .IsLower(c)) Console.WriteLine( Console .WriteLine("Shkronja "Shkronja është e vogël." ); else Console.WriteLine( Console .WriteLine("Shkronja "Shkronja është e madhe." );
43 | P a g e
USHTRIME else Console.WriteLine( Console .WriteLine("Karakteri "Karakteri nuk është shkronjë nga afabeti" afabeti"); ); }
Ushtrimi 3 : Duke perdorur Int , perdoruesi ia jep 2 vlera numerike programit pastaj programi i mbledhë ato . Zgjedhja : int a, int a, b; Console.WriteLine("Shkruaj Console.WriteLine( "Shkruaj numrin e parë"); parë" ); Int32.TryParse( Int32 .TryParse(Console Console.ReadLine(), .ReadLine(), out out a); a); Console.WriteLine( Console .WriteLine("Shkruaj "Shkruaj numrin e dytë"); dytë" ); Int32.TryParse( Int32 .TryParse(Console Console.ReadLine(), .ReadLine(), out out b); b); int c int c = a + b; Console.WriteLine( Console .WriteLine("Shuma "Shuma e vlerave të caktuara nga ju është {0} + {1} = {2}", {2}" , a, b, c);
Ushtrimi 4 : Rezervimi I një bilete të autobusit , dhe I caktion pyetjet . tek numri I udhëtarëve për shoqërim duhet të jet max 4 , bëjeni që pyetja të përsëritet prap nese jipet më shumë se 4 . Zgjedhja : static void Main( void Main(string string[] [] args) { int a; int a; Console.WriteLine( Console .WriteLine("Përshëndetje "Përshëndetje , faleminderit që e zgjodhët udhëtimin ta bëni me ne" ne"); ); Console.WriteLine( Console .WriteLine("Çmimet "Çmimet tona janë më të lirat në treg . Ju lutem pergjigjuni pyetjeve që do tii parashtrojm për ju" ); Console.WriteLine( Console .WriteLine("Durrës "Durrës , Vlorë , Velipoj , Romë , Berlin" ); Console.Write("Ju Console.Write( "Ju lutem zgjidhëni destinacionin e dëshiruar :" ); Console.WriteLine( Console .WriteLine("Ne "Ne iu ofrojm Durrës , Vlorë , Velipoj , Romë , Berlin ndesa ju zgjodhët {0}", {0}" , Console Console.ReadLine()); .ReadLine()); Console.Write( Console .Write("Nga "Nga jeni ju ? :"); :" ); Console.WriteLine( Console .WriteLine("Ju "Ju jeni nga {0}", {0}" , Console Console.ReadLine()); .ReadLine()); Console.WriteLine("Numri Console.WriteLine( "Numri i personave që do të shoqërojn (max 4): " ); Int32.TryParse( Int32 .TryParse(Console Console.ReadLine(), .ReadLine(), out out a); a); if (a if (a > 4) {
44 | P a g e
USHTRIME Console.WriteLine( Console .WriteLine("Ju "Ju nuk mund të keni më shumë se 4 shoqërues me vete ."); ."); Console.WriteLine("Numri Console.WriteLine( "Numri i personave që do të shoqërojn (max 4): " ); Int32.TryParse( Int32 .TryParse(Console Console.ReadLine(), .ReadLine(), out out a); a); } Console.WriteLine( Console .WriteLine("Çfarë "Çfarë bilete do të blini vajtje apo ardhje apo të dyja :"); :"); Console.WriteLine("ju Console.WriteLine( "ju zgjodhët {0}", {0}" , Console Console.ReadLine()); .ReadLine()); Console.WriteLine( Console .WriteLine("Në "Në sa ora e doni udhëtimin ne ju preferojmë ora 6:00 të mengjesit"); mengjesit" ); Console.WriteLine( Console .WriteLine("Ju "Ju zgjodhët {0}", {0}" , Console Console.ReadLine()); .ReadLine()); Console.WriteLine( Console .WriteLine("Rezervimi "Rezervimi i juaj ka perfunduar me sukses" ); Console.WriteLine( Console .WriteLine("Çmimi "Çmimi do tju caktohet në kohën kur nisja do të bëhet" ); Console.WriteLine( Console .WriteLine("Ju "Ju faleminderit për kohën , ju urojm udhëtim të mbarë" ); Console.WriteLine( Console .WriteLine("Kosova "Kosova TURS"); TURS" ); }
Ushtrimi 5 : Të bëhet leximi i këti kodi. static void Main( void Main(string string[] [] args) { Console.Write( Console .Write("Enter "Enter person name: "); " ); string person string person = Console Console.ReadLine(); .ReadLine(); Console.Write( Console .Write("Enter "Enter book name: "); " ); string book string book = Console Console.ReadLine(); .ReadLine(); string from string from = "Authors Team"; Team" ; Console.WriteLine( Console .WriteLine(" " Dear {0}," {0},", , person); Console.Write( Console .Write("We "We are pleased to inform " + "you that \"{1}\" is the best Albanian book. {2}" + {2}" + "The authors of the book wish you good luck {0}!{2}" , person, book, Environment.NewLine); Environment .NewLine); Console.WriteLine( Console .WriteLine(" " Yours,"); Yours," ); Console Console.WriteLine( .WriteLine(" " {0}", {0}", from); }
Shkruaj kuptimin e këti kodi : _______________________________________________________ ___________________________ _________________________________________________ _____________________ _______________________________________________________ ___________________________ _________________________________________________ _____________________ _______________________________________________________ ___________________________ _________________________________________________ _____________________ ______________________________________________________ ___________________________ _________________________________________________ ______________________ _______________________________________________________ ___________________________ _________________________________________________ _____________________ _______________________________________________________ ___________________________ _________________________________________________ _____________________ _______________________________________________________ ___________________________ _________________________________________________ _____________________ _______________________________________________________ ___________________________ _________________________________________________ _____________________ _______________________________________________________ ___________________________ _________________________________________________ _____________________
45 | P a g e
USHTRIME Ushtrimi 6 : Duke përdorur unazat si for , while dhe do – while të zgjithet sistemi i ekuacioneve . Tek prodhimi kemi me gjetë prodhimin e numrave numr ave qift ndersa tek shuma i keni numrat e një pas njeshëm
+1 −2 (∗∗4) ) ∗∗4 (∗) , =1 =2
<5 ( ) , ≥ 5 =2 ç
– nëse nëse X < 5 tek unaza for të llogaritet në një. Zgjedhja : Unaza FOR – using System; using System; using using System.Collections.Generic; using System.Linq; System.Linq; using System.Text; System.Text; using using System.Threading.Tasks; namespace ushtrime namespace ushtrime { class Program { static void void Main( Main(string string[] [] args) { int a, int a, b, i, k, x, j, n, m; double S1 double S1 = 0, S2 = 0, P = 1, G; Console.Write( Console .Write("Shtyp "Shtyp vleren per krahasim x = " ); x = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); Console.Write( Console .Write("Shtyp "Shtyp vleren e a = " ); a = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); Console.Write( Console .Write("Shtyp "Shtyp vleren e b = " ); b = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); if (x if (x < 5) { Console.Write( Console .Write("Shtyp "Shtyp vleren kufitare kufitare n = " ); n = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); for (i for (i = 1, k = 2; i <= n + 1 || k <= n - 2; i++, k++) { S1 = S1 + (a * b + i * 4); S2 = S2 + (a + k * b); } G = S1 + S2; Console.WriteLine( Console .WriteLine("Rezultati "Rezultati i ekuacionit G = {0}" , G); } else { Console.Write( Console .Write("Shtyp "Shtyp vleren kufitare kufitare m = " );
46 | P a g e
USHTRIME m = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); for (j for (j = 2; j <= m; j = j + 2) { P = P * (j + x); } G = P; Console.WriteLine( Console .WriteLine("Rezultati "Rezultati i ekuacionit G = {0}" , G); } } } }
Zgjedhja : Unaza while – nëse nëse X < 5 tek unaza for të llogaritet në një. using System; using System; using using System.Collections.Generic; using System.Linq; System.Linq; using System.Text; System.Text; using using System.Threading.Tasks; namespace ushtrime namespace ushtrime { class Program { static void void Main( Main(string string[] [] args) { int a, int a, b, i, k, x, j, n, m; double S1 double S1 = 0, S2 = 0, P = 1, G; Console.Write( Console .Write("Shtyp "Shtyp vleren per krahasim x = " ); x = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); Console.Write( Console .Write("Shtyp "Shtyp vleren e a = " ); a = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); Console.Write( Console .Write("Shtyp "Shtyp vleren e b = " ); b = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); if (x if (x < 5) { Console.Write( Console .Write("Shtyp "Shtyp vleren kufitare n = "); " ); n = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); i = 1; k = 2; while (i while (i <= n + 1 || k <= n - 2) { S1 = S1 + (a * b + i * 4); S2 = S2 + (a + k * b); i++;
47 | P a g e
USHTRIME k++; } G = S1 + S2; Console.WriteLine( Console .WriteLine("Rezultati "Rezultati i ekuacionit G = {0}" , G); } else { Console.Write( Console .Write("Shtyp "Shtyp vleren kufitare kufitare m = " ); m = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); j = 2; while (j<=m) while (j<=m) { P = P * (j + x); j = j + 2; } G = P; Console.WriteLine( Console .WriteLine("Rezultati "Rezultati i ekuacionit G = {0}" , G); } } } }
while – nëse Zgjedhja : Unaza do – while nëse X < 5 tek unaza for të llogaritet në një.
using System; using System; using using System.Collections.Generic; using System.Linq; System.Linq; using System.Text; System.Text; using using System.Threading.Tasks; namespace ushtrime namespace ushtrime { class Program { static void void Main( Main(string string[] [] args) { int a, int a, b, i, k, x, j, n, m; double S1 double S1 = 0, S2 = 0, P = 1, G; Console.Write( Console .Write("Shtyp "Shtyp vleren per krahasim x = " ); x = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); Console.Write( Console .Write("Shtyp "Shtyp vleren e a = " ); a = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); Console.Write( Console .Write("Shtyp "Shtyp vleren e b = " ); b = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); if (x if (x < 5)
48 | P a g e
USHTRIME { Console.Write("Shtyp Console.Write( "Shtyp vleren kufitare kufitare n = " ); n = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); i = 1; k = 2; do { S1 = S1 + (a * b + i * 4); S2 = S2 + (a + k * b); i++; k++; } while while (i (i <= n + 1 || k <= n - 2); G = S1 + S2; Console.WriteLine( Console .WriteLine("Rezultati "Rezultati i ekuacionit G = {0}" , G); } else { Console.Write( Console .Write("Shtyp "Shtyp vleren kufitare kufitare m = " ); m = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); j = 2; do { P = P * (j + x); j = j + 2; } while while (j (j <= m); G = P; Console.WriteLine( Console .WriteLine("Rezultati "Rezultati i ekuacionit G = {0}" , G); } } } }
– Duke Duke perdorur një formë tjetër , të gjitha vlerat krahasuese duke i Zgjedhja : Unaza FOR – vendosur brenda një for-i. using System; using System; using using System.Collections.Generic; using System.Linq; System.Linq; using System.Text; System.Text; using using System.Threading.Tasks; namespace ushtrime namespace ushtrime { class Program {
49 | P a g e
USHTRIME static void void Main( Main(string string[] [] args) { int a, int a, b, i, k, x, j, n, m; double S1 double S1 = 0, S2 = 0, P = 1, G; Console.Write( Console .Write("Shtyp "Shtyp vleren per krahasim x = " ); x = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); Console.Write( Console .Write("Shtyp "Shtyp vleren e a = " ); a = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); Console.Write( Console .Write("Shtyp "Shtyp vleren e b = " ); b = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); Console.Write( Console .Write("Shtyp "Shtyp vleren kufitare n = " ); n = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); Console.Write( Console .Write("Shtyp "Shtyp vleren kufitare m = " ); m = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); for (i for (i = 1, k = 2, j = 2; i <= n + 1 || k <= n - 2 || j <= m; i++, k++, j = j + 2) { if (x if (x < 5) { S1 = S1 + (a * b + i * 4); S2 = S2 + (a + k * b); G = S1 + S2; } else { P = P * (j + x); G = P; } Console.WriteLine( Console .WriteLine("Rezultati "Rezultati G = {0}", {0}" , G); } } } }
50 | P a g e
METODAT Metodat Një metodë është një bllok kodi që përmban një seri prej deklaratave . Një program shkakton deklaratë që do të ekzekutohet duke thirrur metoden e specifikuar për atë funksion. Në C# , çdo instruksion ekzekutohet dhe kryhet në kontekstin e një metode. Metoda kryesore është pika e hyerjes për çdo aplikim . Në C# ajo është quajtur CLR(common language runtime). Metodat janë deklaruar në një klasë apo përpilohet duke saktësuar nivelin e aksesit të tilla si publike ose private, ndryshuesit opsional të tilla si abstrakt ose të mb yllur(sealed), vlera e këthimit, emri i metodës dhe çdo parametër në metodë . Këto pjesë janë së bashku në nënshkrimin e metodes në kod. USHTRIMMEMETODA Ushtimi 1 : T : Te e krijohet metoda e cila llogarit dy vlera numerike dhe pastaj te te thirret ajo metod dhe pastaj te te shfaqen ne ne console. using System; using System; using using System.Collections.Generic; using System.Linq; System.Linq; using System.Text; System.Text; using using System.Threading.Tasks; namespace Ushtrime_me_metoda Ushtrime_me_metoda { class Program { static void void Main( Main(string string[] [] args) { llogarit(); } public static void void llogarit() llogarit() { int a,b,c; int a,b,c; a=5; b= a+2; c=a+b; Console.WriteLine( Console .WriteLine("{0}+{1}={2}" "{0}+{1}={2}",a,b,c); ,a,b,c); } } } public static void void llogarit() llogarit() – ky është nënshkrimi i metodes që e kemi krijuar. public – tregon se metoda është publike,
51 | P a g e
METODAT static void – lloji i metodës, llogarit() – është emri i metodës që na shërben për ta thirru.
Kujdes :
Nëse metoda është private ajo mund të thirret vetëm një klase , nëse ne ajo
na novoitet për tu thirrur brenda një tjetre klase po namespace atëherë ne duhet ta deklarojm atë si publike , ose ta deklarojm edhe një metodë tjetër publike e cila e thërret metoden private.
static void void Main( Main(string string[] [] args) { llogarit(); - bënë thirrjen e metodës së cilën e bënë llogaritjen e vlerave numerike. }
Ushtimi 2 : Te krijohet metoda private e cila krahason dy numra me njeri tjetrin, duke perdorur nje funksion tjete tjete r si try dhe catch dhe nese e shenojm një karakter i cili nuk është .” .” numer të paraqitet mesazh në console “Gabi Ga bi m vler vl era a e dh dhë n ën u k mu n d të t ëk r ahasoh ah asohet et përmes një metode të tretë. using System; using System; using using System.Collections.Generic; using System.Linq; System.Linq; using System.Text; System.Text; using using System.Threading.Tasks; namespace Ushtrime_me_metoda Ushtrime_me_metoda { class Program { static void void Main( Main(string string[] [] args) { krahaso(); } private static void void krahaso() krahaso() { int a, int a, b; try { Console.Write( Console .Write("a "a = "); "); a = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); Console.Write( Console .Write("b "b = "); "); b = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); if (a if (a > b) { Console.WriteLine( Console .WriteLine("{0} "{0} > {1}", {1}", a, b); } else if if (a (a < b) { Console.WriteLine( Console .WriteLine("{0} "{0} < {1}", {1}", a, b); }
52 | P a g e
METODAT else { Console.WriteLine( Console .WriteLine("{0} "{0} = {1}", {1}", a, b); } } catch ( catch (Exception Exception) ) { gabim(); } } private static void void gabim() gabim() { Console.WriteLine( Console .WriteLine("Gabim "Gabim vlera e dhënë nuk mund të krahasohet." ); } } }
53 | P a g e
PROGRAMIMIIORJENTUARNËOBJEKTE Programimi Progr amimi i orjentuar ne ne objekte Programimi i orientuar në objekte ose shkurtimisht POO (ang. Object-oriented programming ose shkurtimisht OOP) është një paradigmë programore e cila e shfrytëzon konceptin e objektit si dhe ndërveprimeve e tija për të dizajnuar programe kompjuterike. Në këtë paradigmë programore përfshihen tipare të ndryshme ndr yshme si kapsulimi (ang. encapsulation), modulariteti (ang. modulariteti), polimorfizmi (ang. polymorphism), dhe trashëgimi (ang. inheritance). Popullariteti i kësaj paradigme pa rritjen e tij të parë tek në fillim të viteve 1990, mirëpo në ditën e sotme shumica e gjuhëve programuese e përkrahin këtë paradigmë. HISTORIA
Koncepti i objekteve dhe instancave për herë të parë arriti të depërtoj në fushën e informatikës nëpërmjet PDP-1 sistemit në MIT M IT.. Objektet u paraqitën si entitete programimi në vitet e 1960ta në gjuhën programuese Simula 67 e cila ishte dizajnuar për krijimin e simulacioneve. Kjo gjuhë ishte krijuar nga Ole-Johan Dahl dhe Kristen Nygaardnë Qendrën Kompjuterike Norvegjeze në Oslo. Simula nuk e paraqiti vetëm nocioni ne klasave, por e dhe atë të instancave të klasave. Konceptet që u paraqitën nëpërmjet Simula 67 patën ndikim në gjuhë të ndryshme programuese, e sidomos në Smalltalk si dhe gjuhët tjera që rrjedhën n ga ai, si Lisp dhe Pascal. Gjuha programuese Smalltalk, e cila u zhvillua në Xerox PARC gjatë viteve të 1970-ta, e paraqiti termin "programimi i orientuar në objekte" në mënyrë që ta përsh kruante vetinë e shfrytëzimit të objekteve dhe mesazheve si baza të llogaritjes. Duhet veçuar që krijuesit e Smalltalk ishin të ndikuar nga idetë e paraqitura në Simula 67, por megjithatë ata e dizajnuan Smalltalk në atë mënyrë që të ishte sistem dinamik, ku klasat mund të krijohen dhe ndryshohen në mënyrë dinamike (në vend të mënyrës statike si që ishte bërë në Simula 67). Smalltalk, e me gjithë te edhe POO iu paraqitën një audience të gjerë më Gusht të 1981 nëpërmjet revistës Byte.
54 | P a g e
PROGRAMIMIIORJENTUARNËOBJEKTE Si pasojë e ndikimit nga gjuha programuese C++, programi i orientuar në objekte arriti që të bëhej metodologjia dominante programuese gjatë mesit të viteve 1990-ta. Më pas, d ominimi i POO-së u fuqizua edhe më shumë pasi që ishte shumë i përshtatshëm për zhvillimin e interfejsëve grafik për shfrytëzues që ishin duke përjetuar rritje të popullaritetit. Më vitin 1995 shfaqet gjuha programuese Java[4] e cila ka sintaksë të derivuar nga gjuhët programuese C dhe C++, mirëpo vetia kryesore që e dallon nga këto është makina virtuale e saj. Java si një gjuhë e cila plotësisht e përkrah POO-në, me anë të makinës virtuale që i ofron veti ndër-platformike arriti që edhe më tej ta fuqizonte dhe në të njëjtën kohë të zgjeronte dominancën e programimit të orientuar në objekte. Rishtazi ka sipërfaqësuar një numër i gjuhëve programuese që edhe pse janë të orientuara në objekte ato përkrahin edhe metodologjinë procedurale, si p.sh. Python ose Ruby. Në përjashtim të Java, gjuhë tjera që kanë sipërfaqësuar rishtazi, dhe kanë rëndësi për botën komerciale janë Visual Basic .NET (VB.NET) dhe C# ku të dyja janë të dizajnuara për platformën platfo rmën .NET të Microsoft. Duhet veçuar që VB.NET dhe C# përkrahin trashëgimin ndër-gjuhësor, ku kjo e bën të mundshme që p.sh. klasat e definuar në VB.NET të trashëgohen në C# dhe anasjelltas. KONCEPTETTHELBËSORE
Deborah J. Armstrong nëpërmjet studimit të saj pothuajse 40-vjeçar të literaturës kompjuterike ka përpiluar listën vijuese e koncepteve thelbësore të cilat janë të përfshira në shumicën e definicioneve të POO-së: Klasa
Definon tiparet dhe sjelljet (metodat) e objektit. Pra, klasa mund të konsiderohet si një kallëp për objekte. Nëse e marrim rastin e klasës Qeni shohim sho him që kjo klasë do t'i përmbaj tiparet thelbësore për të gjithë qentë, si p.sh. lloji, ngjyra e qimes, etj. Klasa gjithashtu do të përmbaj edhe sjelljet (metodat) si p.sh. aftësia për të lehur dhe për t'u ulur. Këto tipare si dhe metoda që përfshihen nga klasa janë të njohura si anëtarë an ëtarë të klasës.
55 | P a g e
PROGRAMIMIIORJENTUARNËOBJEKTE Objekti
Është një ekzemplar i klasës. Pra, klasa Qeni paraqet kallëpin për qenë të ndryshëm, ndërsa objekti Aresi paraqet një qenë të veçantë, me veti dhe sjellje të veçanta të trashëguara nga klasa Qeni si p.sh. lloji për objektin Aresi është pit bull ndërsa ngjyra e qimes është e zezë. Instanca
Instanca paraqet objektin të krijuar nga klasa. Pra, duke u bazuar në rastin e lartpërmendur objekti Aresi është instancë e klasës Qeni. Grumbulli Gru mbulli i vlerave dhe atributeve të një objekti njihet si gjendje, ku kjo d.t.th. që objekti përbehet nga gjendja dhe sjelljet që janë të definuara në klasën e objektit. Metoda
Paraqet sjelljet dhe aftësitë e një objekti.Metodat mund t'i shohim si procedura ose funksione. Procedurat jane metodat qe nuk kane vlere kthese, ndersa funksionet jane metoda qe kthejne dicka si rezultat i ekzekutimit te asaj metode. Pra, objekti Aresi ka aftësinë për të lehur, dhe për atë arsye ky objekt përmban metodën leh(). Objekti Aresi mund të përmbaj edhe metoda tjera si p.sh. ulu(), ec(), etj. Dërgimi i mesazhit
Procesi me anë të cilit objekti dërgon të dhëna një objekti tjetër, ose kërkon nga një objekt tjetër që ta thërras një metodë. Trashëgimi
Nënklasat paraqesin versione të veçanta të klasave, klasav e, ku këto i trashëgojnë tiparet dhe sjelljet nga klasat e tyre prindërore. Nënklasat mund të përmbajnë tipare dhe sjellje shtesë, përsipër atyre që i kanë trashëguar nga klasat prindërore. Për shembull, klasa Qeni mundet ti ketë nënklasat PitBull, Doberman, etj. ku objekti Aresi do t'ishte instancë e nënklasës PitBull. Nëse në klasën Qeni e kemi të definuar metodën leh() atëherë të dy nënklasat PitBull dhe Doberman do ta
56 | P a g e
PROGRAMIMIIORJENTUARNËOBJEKTE trashëgojnë këtë metodë, ku kjo e bën të mundshme që programori ta shkruaj vetëm një herë këtë metodë. Çdo nënklasë mund t'i ndryshoj tiparet dhe sjelljet e trashëguara. Për shembull, nënklasa Doberman mund ta ndryshon tiparin ngjyraQimes që ta ketë vlerën zi-dhe-kafe; ose nënklasa PitBull mund ta ndryshon metodën leh() që lehja të jetë më e fuqishme tek instancat e kësaj nënklase. Trashëgimia e shumëfishtë paraqet rastin kur trashëgimia bëhet nga më shumë se një klasë, përderisa asnjëra nga klasat prindërore nuk është e trashëguar nga njëra tjetra. Abstraksioni
Është procesi i thjeshtëzimit dhe faktorizimit të detajeve me qëllim të përqendrimit në disa koncepte në krahasim prej përqendrimit në të gjitha konceptet përnjëheri. Pra, abstraksioni paraqet procesin në të cilin bëhet modelimi i klasave të përshtatshme për pr oblemin, si dhe punimi me nivelin e përshtatshmën të trashëgimisë prej një aspekti specifik të problemit. Kapsulimi
Është njëri nga tre konceptet themelore të programimit të orientuar në objekte (dy të tjerët janë Trashëgimi dhe Polimorfizmi). Ky koncept paraqet fshehjen e detajeve të implementimit të klasës si dhe ofrimin e qasjes vetëm nëpërmjet interfejsit të dokumentuar ( metodave qasëse dhe metodave ndryshuese). Polimorfizmi
Polimorfizmi në programimin e orientuar në objekte e bën të mundshëm që objektet që përkasin tipeve të dhënave të ndryshme t'i përgjigjen thirrjeve të metodave me emër të njëjtë në përputhshmëri me specifikat e tipit të tyre. Për shembull, nëse kemi klasën Njeri e cila e ka metodën pershendet(), dhe më pas kemi dy nënklasa Shqiptar dhe Anglez atëherë ato do të trashëgojnë dhe e mbishkruajnë strukturën dhe funksionalitetin e metodës pershendet() sipas specifikave të tipit. Ky mbishkrim do ta bën të mundshme që kur të thirret metoda pershendet() në instancat (objektet) e nënklasave Shqiptar dhe Anglez të dy instancat do të reagojnë sipas
57 | P a g e
PROGRAMIMIIORJENTUARNËOBJEKTE specifikave të tipit të tyre, pra: shqiptar.pershendet() do të kthen Përshëndetje! ndërsa anglez.pershendet() do të kthen Hello!. Shçiftëzimi
Shçiftëzimi (ang. decoupling) paraqet procesin e minimalizimit të sasisë dhe fuqisë të varshmërive në mes të pjesëve të ndryshme të programit. Nëpërmjet këtij procesi bëhet lokalizimi i operimeve të ndryshme në entitete të vetme ku këto kanë varshmëri minimale ndaj entiteteve tjera. Kjo veti e POO-së është shumë e dobishme, sidomos për programe të mëdha, pasi që nëse është bë shçiftëzimi, atëherë në rast të ndonjë problemi, programori mund të përqendrohet në një entitet të vetëm e jo në tërë programin PËRMBLEDHJE
Zanafilla e POOP-së daton që nga vitet e 1960-ta. Në atë kohë, shpesh herë kualiteti komprometohej, si pasojë e rritjes të kompleksitetit të harduerit dhe softuerit. Hulumtuesit duke studiuar mënyra të ndryshme për mirëmbajtje të kualitetit të softuerit përfunduan duke e krijuar POO nëpërmjet së cilën e theksuan në veçanti vetinë e saj për rishfrytëzimin e njësive të logjikës programuese. Pra, në POO metodologjia është e përqendruar në të dhëna e jo në procese; ku programet janë të përbërë nga ng a module të pavarura (objekte) që përmbajnë të gjitha të dhënat që janë të nevojshme për manipulimin e strukturave vetanake të të dhënave. Gjuha e parë programuese që konsiderohet konsidero het si gjuhë e cila plotësisht e përvetëson paradigmën programuese POO është Smalltalk. POO mund të perceptohet si një grumbull objektesh ndërvepruese, ku secili objekt është i aftë që të pranoj mesazhe, të procesoj të dhëna, si dhe t'i dërgoj mesazhe objekteve tjera. Pra, çdo objekt mund të konsiderohet si një makinë e pavarur me një rol dhe përgjegjësi të veçantë.
58 | P a g e
POO–PROGRAMIMIIORJENTUARNËOBJEKTE– DEKLARIMIIKLASAVE POO – Programimi i orjentuar ne ne objekte – Deklarimi i Klasave Krijimi I POO beri nje revolucion revolucion ne zhvillimin e softuere softuere ve ve , pershkak qe me me nyra e programimit programimit ndryshoj , u lehte lehte sua duke be be re re edhe uljen e shpenzimit shpen zimit te kohes. Si dhe edhe numri i programere programere ve ve mund te te rritet brenda krijimit te te nje nje softueri. Brenda ke ke ti kapitulli do ti mesojm njohurit baze te te POO-se POO-se , ku deri tash kemi mesuar vetem zgjidhjen e detyrave te vogla dhe ndonje problem te vogel me kompjuter, tash te gjitha ato ushtrime te te be be ra ra do ti krijojm klasa te veçanta per çdo ushtrim. Ne Ne ke ke te te kapitull do te te me me sojm pe pe r : Klasat, Krijimin e opjekteve, Trashige Trashige min .
59 | P a g e
KONCEPTETRRETHKLASAVE Konceptet rreth Klasave Me Me here here t programere programere t (zhvilluesi i ati programi) e kane kane shkruar kodin e tyre bazuar b azuar ne ne metodologjine metodologjine e programimit procedural (ky lloje lloje I te te programuarit programuarit ee shte shte se i teree programi ee shte shte I shenuar bashke bashke , dhe nuk lejon riperdorimin e nje nje kodi te te pe pe rdorur rdorur me me larte larte ), Kodet kane kane qene qene te te ndara ne ne module, Ndryshimet qe qe jane jane novoitur ne ne kod kan qene qene te te ve ve shtira shtira , duhej shkruar shume shume kod , si dhe nese ka ndodhur nje gabim ne kodim , ate ate here here e shte shte novoitur qe qe I te te re re kodi te te ishte kontrolluar ne ne imte imte si , ndersa n dersa pas zbulimit te te POO si dhe avancimit te te saj nga Microsoft (platform .NET) si dhe Java te te cilat edhe sot e ke ke saj dite e pe pe rkrahin ke ke te te teknologji. Klasa është një bllok kodi i grupuar brenda një strukture të veçant , përmban attribute dhe funksionalitete funksionalitete që përshkruajnë për shkruajnë punën e një objekti pastaj të instancihen nga ajo (Brenda nje nje programi objektet nga ajo klas mund te te thirren). Llojet e klasave jane jane : Built-in klasat që gjinden në .NET Framework Framework , të ashtuquajtura Framework Class Library dhe Klasat e definuara nga programerët. Shembull me klasa : Të krijohet klasa e cila në vete e ka një metodë e cila e bë llogaritjen e dy vlerave numerike pastaj tek tek klasa main të të bëhet thirrje thirrje e klasës së krijuar. Hapi i pare : pare : te te hapet nje nje projekt i ri (me emrer U1 Klasa) ne konsole te krijohet klasa tek Hapi i dytë : dytë : te I kemi te Solution Explorer I paraqitura te te re re folderin e programit tone. I paraqitur si ne figure Me tastin e djatht klikojm mbi i cili e shte shte folder kryesor i U1Klasat i
60 | P a g e
KONCEPTETRRETHKLASAVE projektit tone, pastaj klikojm tek Add tek Add dhe e zgjedhim opsionin Class .
Pastaj hapet nje dialog tek i cili e zgjedhim opsionin Class dhe e emre emre rtojm rtojm me eme eme r klasalogaritse (ose si te doni ju). Ky dialog mund te te hapet edhe me kombinimin e tasteve CTRL + SHIFT + A.
61 | P a g e
KONCEPTETRRETHKLASAVE Hapi i tretë : tretë : Pasi qe qe te te krijohet klasa jemi gati edhe pastaj p astaj do ta krijojm nje metod e cila llogarit dy vlera vlera edhe I shtyp s htyp ato ne ne konsol. using System; using System; using using System.Collections.Generic; using System.Linq; System.Linq; using System.Text; System.Text; using using System.Threading.Tasks; namespace U1_Klasat namespace U1_Klasat { class klasalogaritse { public void void llogarit() llogarit() { int a, int a, b, c; Console.Write( Console .Write("Sheno "Sheno vleren e a"); a" ); a = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); Console.WriteLine( Console .WriteLine("Sheno "Sheno vleren e b"); b" ); b = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); c = a + b; Console.WriteLine( Console .WriteLine("Rezultati "Rezultati = ",c); " ,c); } } }
: pastaj krijohet objekti I cili e therret klase klase n class klasalogaritse . Hapi i katërt : using System; using System; using using System.Collections.Generic; using System.Linq; System.Linq; using System.Text; System.Text; using using System.Threading.Tasks; namespace U1_Klasat namespace U1_Klasat { class Program { static void void Main( Main(string string[] [] args) { klasalogaritse klasa = new klasalogaritse (); klasa.llogarit(); } } }
62 | P a g e
KONCEPTETRRETHKLASAVE Ushtrimi 1:Tëkrijohetklasaecilaimerrën 1:Tëkrijohetklasaecilaimerrëngaperdoruesi3emrad gaperdoruesi3emradhepastajishtyptëtre hepastajishtyptëtre emratnëconsole.EmrattëkenëllojinevariablesS emratnëconsole.EmrattëkenëllojinevariablesStringedhetëjetëvargvekt tringedhetëjetëvargvektorial,ku orial,ku metodatektëecilatëjetëmetodprivate,siedhenjë metodatektëecilatëjetëme todprivate,siedhenjëmetodtjetërpublikeecilaIndi metodtjetërpublikeecilaIndihmonqë hmonqë tëinicializohetnëKlasenkryesore. TekKlasaclass emrat using System; using System; using using System.Collections.Generic; using System.Linq; System.Linq; using System.Text; System.Text; using using System.Threading.Tasks; namespace U1_Klasat namespace U1_Klasat // kjo vlerë mund të mos jetë e njejt e këtë. { class emrat { private void vlerateksturore() vlerateksturore() { string[] string [] emri = new string string[3]; [3]; Console.WriteLine( Console .WriteLine("Sheno "Sheno 3 emra"); emra" ); emri[0] = Console Console.ReadLine(); .ReadLine(); emri[1] = Console Console.ReadLine(); .ReadLine(); emri[2] = Console Console.ReadLine(); .ReadLine(); Console.WriteLine( Console .WriteLine("Vlerat "Vlerat e shenuara janë" ); Console.WriteLine(emri[0]); Console .WriteLine(emri[0]); Console.WriteLine(emri[1]); Console .WriteLine(emri[1]); Console.WriteLine(emri[2]); Console .WriteLine(emri[2]); } public void void shtyp() shtyp() { vlerateksturore(); } } }
TekKlasakryesoreclass Program using System; using System; using using System.Collections.Generic; using System.Linq; System.Linq; using System.Text; System.Text; using using System.Threading.Tasks; namespace U1_Klasat namespace U1_Klasat { class Program { static void void Main( Main(string string[] [] args)
63 | P a g e
KONCEPTETRRETHKLASAVE { emrat e = new emrat emrat e emrat(); (); e.shtyp(); } } }
Ushtrimi 2:Tëkrijohendyklasa 2:Tëkrijohendyklasatektecilatnjeranga tektecilatnjerangatotëllogaritetshuma totëllogaritetshumaenumravenatyror enumravenatyror tënjëpasnjëshëmnganumri1derinën,ndersa tënjëpasnjëshëmnga numri1derinën,ndersatekklasatjetërtëbëhe tekklasatjetërtëbëhetllogaritjae tllogaritjae prodhimittënumravenatyrorçiftdukefilluarng prodhimittënumravena tyrorçiftdukefilluarnganumri2derinëm,ndersa anumri2derinëm,ndersatëkrijohetedhe tëkrijohetedhe njëklasëtjetërecilaebënëkrahasiminevleravenëseplotëso njëklasëtjetërecilaebënëkra hasiminevleravenëseplotësohetkushtiIparetëinicializo hetkushtiIparetëinicializohet het llogaritjaeshumës,ndersanesenukplotëso llogaritjaeshumës,nde rsanesenukplotësohetkushtiatëherë hetkushtiatëherëtëzgjidhetprodhimi. tëzgjidhetprodhimi. Kushti duhet të jetë nëse vlera e shtypur është më e madhe se 5 të filloj kushti kus hti i pare (Shuma), nese vlera e shtypur është më e vogel ose e barabart me 5 të plotësohet kushti i dytë (Prodhimi). (Prodhimi). D.m.th.dotëkrijohen3klasatëreja D.m.th.dotëkrijohen3klasatëreja,njërapërshumën,edyt ,njërapërshumën,edytapërprodhiminndersa apërprodhiminndersaetreta etreta përkrahasim,dhenëfundtëtëshfaqetrezulta përkrahasim,dhenëfundtëtëshfaqetrezultatinëkonzolë, tinëkonzolë,KUJDES nese perdoruesi e shenon një karakter që nuk është numër të paraqes një mesazh në console që vlera e shenuar nuk është numër . .
EmërtimiiprojektitUshtrimi2,
–Shuma,Prodhimi,Krahasimi. Emërtimiiklasave – Klasa Shuma using System; using System; using using System.Collections.Generic; using System.Linq; System.Linq; using System.Text; System.Text; using using System.Threading.Tasks; namespace Ushtrimi2 namespace Ushtrimi2 { class Shuma { public void void shumë() shumë() { try { int n; int n; double S double S = 0; Console.WriteLine( Console .WriteLine("Shkruaj "Shkruaj vleren e n = "); " ); n = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); for ( for (int int i i = 1; i <= n; i++) {
64 | P a g e
KONCEPTETRRETHKLASAVE S = S + i; } Console.WriteLine( Console .WriteLine("Rezultati "Rezultati S = {0}", {0}" , S); } catch ( catch (Exception Exception) ) { Console.WriteLine( Console .WriteLine("Vlera "Vlera e shenuar nuk është numër" ); } } } }
Klasa Prodhimi using System; using System; using using System.Collections.Generic; using System.Linq; System.Linq; using System.Text; System.Text; using using System.Threading.Tasks; namespace Ushtrimi2 namespace Ushtrimi2 { class Prodhimi { public void void prodhim() prodhim() { try { int m; int m; double P double P = 1; Console.WriteLine( Console .WriteLine("Shkruaj "Shkruaj vleren e m = "); " ); m = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); for ( for (int int i i = 2; i <=m ; i=i+2) { P = P * i; } Console.WriteLine( Console .WriteLine("Rezultati "Rezultati P = {0}", {0}" , P); } catch ( catch (Exception Exception) ) { Console.WriteLine( Console .WriteLine("Vlera "Vlera e shenuar nuk është numër" ); } } } }
65 | P a g e
KONCEPTETRRETHKLASAVE Klasa Krahasimi using System; using System; using using System.Collections.Generic; using System.Linq; System.Linq; using System.Text; System.Text; using using System.Threading.Tasks; namespace Ushtrimi2 namespace Ushtrimi2 { class Krahasimi { public void void krahaso() krahaso() { Console.WriteLine( Console .WriteLine("Shkruaj "Shkruaj vleren për krahasim" ); int a int a = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); if (a>5) if (a>5) { Shuma sh Shuma sh = new Shuma Shuma(); (); sh.shumë(); } else { Prodhimi p Prodhimi p = new Prodhimi Prodhimi(); (); p.prodhim(); } } } }
Klasa main (Program) using System; using System; using using System.Collections.Generic; using System.Linq; System.Linq; using System.Text; System.Text; using using System.Threading.Tasks; namespace Ushtrimi2 namespace Ushtrimi2 { class Program { static void void Main( Main(string string[] [] args) { Krahasimi k Krahasimi k = new Krahasimi Krahasimi(); (); k.krahaso(); } } }
66 | P a g e
KONSTRUKTORËT Konstruktoret Paskrijimittënjëklasetërebrendaprogramit,krijohetkonstruktoriItijnëformëaut Paskrijimittënjëklasetërebrendaprogramit,krijohetk onstruktoriItijnëformëautomatike. omatike. Porprogramerimundtikrijojatanëformmanuale,meparametradhepaparametra.Brenda njëklasemundtëketëkonstruktortëndryshëm njëklasemundtëketëk onstruktortëndryshëmedhemeparametratëndryshëm. edhemeparametratëndryshëm. Konstruktorët,Ishërbejnprogramer Konstruktorët,Ishërbejnprogramerëvepërtëvendosurvlerat ëvepërtëvendosurvleratëparazgjedhura,kufizoj ëparazgjedhura,kufizojn n instancimetevariablavedhetëshkruajnkodinqëështëmëfleksibilëdhemëIlehtëpërtu lexuar. Vetit e konstruktorëve janë : ata mbajn emrin e njejt me klasen , dhe nuk këthen vlerë. Çfarë duhet ditur para se të përdoren konstruktorët : ›
Duhet shmangur operacionet me databazë në konstruktorin e klasës, kjo shkakton mbingarkesë.
›
Duhet shmangur sa më shumë kodet që përsëriten,
›
Duhet shmangur përdorimin e overloaded konstruktorëve static.
Në shembullin e më poshtëm janë të paraqitur dy konstruktor të ndryshëm njëri paparametra ndersa tjetri me parametra. using System; using System; using using System.Collections.Generic; using System.Linq; System.Linq; using System.Text; System.Text; using using System.Threading.Tasks; namespace Konstruktor namespace Konstruktor { class konstruktor { public int int a, a, b; //Instancimi i konstruktorit të thjeshtë paparametra. public konstruktor() public konstruktor() { a = 0; b = 0; } //Instancimi i konstruktorit me parametra. public konstruktor( public konstruktor(int int a, a, int int b) b) { this.a this .a = a; this.b this .b = b;
67 | P a g e
KONSTRUKTORËT } //Kujdes !!! Konstruktorët dalloj nga parametrat , mos i krijoni konstruktoret me parametra të njejtë!!! // Metoda e më poshtme e bënë shëndrimin e vlerave int që janë në konstruktor në string. public override string string ToString() ToString() { return ( return (String String.Format( .Format("({0},{1})" "({0},{1})", , a, b)); } } class Program { static void void Main( Main(string string[] [] args) { //Thirrja e konstruktorëve të cilët dallojn nga parametrat. konstruktor k1 konstruktor k1 = new konstruktor konstruktor(); (); konstruktor k2 konstruktor k2 = new konstruktor konstruktor(5,8); (5,8); Console.WriteLine( Console .WriteLine("Vlerat "Vlerat nga konstruktori i parë (Paparametra) = {0}" , k1); Console.WriteLine( Console .WriteLine("Vlerat "Vlerat nga konstruktori i dytë (Me parametra) = {0}" , k2); } } }
68 | P a g e
DESTRUKTORËT Destruktoret Destruktore Destruktore t jane jane te te ngjashe ngjashe m me konstruktore konstruktore t , vete vete m se dallojne dallojne me shenje shenje n ~ . Destruktore Destruktore t nuk kane kane parametra dhe nuk ke ke thjen vlera, ata thirren automatikisht. Nje Nje klase klase mund te te kete kete vete vete m nje nje destruktore destruktore . Destruktore Destruktore t jane jane vende ku futen variablat pe pe r lirimin nga memorja. Thirren nga C# Garbage Collector gjate gjate lirimit te te memories. using System; using System; using using System.Collections.Generic; using System.Linq; System.Linq; using System.Text; System.Text; using using System.Threading.Tasks; namespace Konstruktor namespace Konstruktor { class DestruktorKlasa { ~ DestruktorKlasa() DestruktorKlasa() { Console.WriteLine( Console .WriteLine("Destruktori "Destruktori i klasës DestruktorKlasa" ); } } }
PSENUKDUHETTËPERDORENDESTRUKTORËT!? 1. Nësejemiduketpërdorurunmanagedcodedheharrojmëqëtashkatërrojmë
nëdestruktorëobjektineinstancuar,atëherëaiobjektdotëgjendetnë memoriedhenukdotalirojatëderisatëbëhetndonjëaksionitretë. 2. Nësetentojmëtashkatërrojmënjëobjektqëështëdukeupërdorurngandonjë
proces. Nësetentojmëtashkatërrojmënjëobjekticilitashmëështëshkatërruar ëshkatërruar.. 3. Nësetentojmëtashkatërrojmënjëobjekticilitashmëësht ÇFARËËSHTËGARBAGECOLLECTOR, ÇfarëbënëGCmëmirëseprogrameri: ›
69 | P a g e
KurprogramipërfundonGCautomatikishtlironmemorienngaobjektete instancuara,
DESTRUKTORËT ›
›
›
70 | P a g e
GCkalistënetëgjithaobjektevedhesiguronçdoobjekttëshkatërrohetvetëm GCkalistënetëgjithaobjektevedhesiguronçdoobjekttëshkatërr ohetvetëm njëherë, GCsiguronqëobjektetereferencuaranukdotëshkatërrohen, GCshkatërronobjektetvetëmat GCshkatërronobjektetvetëmatëherëkurështëenevojshme,nëseduhet ëherëkurështëenevojshme,nëseduhetqë që njëobjekttëshkatërrohetnënjëmomenttëcaktuar njëobjekttëshkatërrohetnënjëmomenttëcaktuar,atëherëduhettë ,atëherëduhettë thirret manualisht metoda System.GC.Collect();.
TRASHËGIMIA Trashegimia Trashëgimia(inheritance)ështënjërindërkonceptetprimare Trashëgimia(inheritance)ështënjërindërkonceptetprimaretëprogramimitt tëprogramimittëorientuarnë ëorientuarnë objekte.Lejonqënjëklasëtëderivohetnganjëklasëtjetër,kjoekakuptiminqënganjëklasë tëtrashëgohentëgjithaobjektetdhefunksionetnënjëklasëtjetër tëtrashëgohentëgjithao bjektetdhefunksionetnënjëklasëtjetër.. Përmesimplementimitefektivtëko Përmesimplementimitef ektivtëkonceptevetëOOP nceptevetëOOP-sëndërtoedhetrashëgimisë,mundtë -sëndërtoedhetrashëgimisë,mundtë kursehetshumëkohënëprogramim. Implementohetpërmesvendosjessë“:”nëfillimtëdeklarimittëklasave,C#lejon trashëgiminvetëmnganjëklasë,kurselejonlejonimplementimineshumëinterfejsëve. KlasaParentClass using System; using System; public class ParentClass { public ParentClass() public ParentClass() // Konstruktori paparameter { Console.WriteLine( Console .WriteLine("Parent "Parent Constructor."); Constructor." ); } public void void print() print() { Console.WriteLine( Console .WriteLine("I'm "I'm a Parent Class."); Class." ); } }
Klasa ChildClass ecilatrashëgonngaklasaParentClass public class ChildClass ChildClass : : ParentClass { public ChildClass() public ChildClass() { Console.WriteLine( Console .WriteLine("Child "Child Constructor."); Constructor." ); } }
NdersatekklasakryesoretekklasaProgramebëjmëthirrjenesaj static void Main( void Main(string string[] [] args) { ChildClass child ChildClass child = new ChildClass ChildClass(); (); child.print(); }
71 | P a g e
TRASHËGIMIA NëConsoledotëshfaqenvleratsinëfigure.
72 | P a g e
USHTRIMEMEKLASA Ushtrime me klasa nde rruar gjithe gjithe ashtu edhe emrin e Namespace -sit, 1. Te krijohet nje klas e re duke e nde dhe te te krijohet program i cili llogarit nje shume dhe nje nje prodhime prodhime duke perdorur nje nje unaze unaze te te vete vete me.
Klasa per llogaritje namespace Detyra namespace Detyra { public class ushtrim { public void llogaritjett() llogaritjett() { Console.WriteLine( Console .WriteLine("Metoda "Metoda me perdorimin e objektit për thirrje...." ); int n, int n, i, k, m; double S double S = 0, P = 1, y; Console.Write( Console .Write("Shkuraj "Shkuraj vleren e n = "); " ); n = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); Console.Write( Console .Write("Shkuraj "Shkuraj vleren e m = "); " ); m = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); for (i = 1, k = 2; i <= n || k <= m; i++, k = k + 2) for (i { S = S + i + 4; P = P * Math Math.Pow(k, .Pow(k, 2); } y = S + P; Console.WriteLine( Console .WriteLine("Rezultati "Rezultati y = {0} ", " , y); Console.ReadLine(); Console .ReadLine(); } } } using System; using System; using using System.Collections.Generic; using System.Linq; System.Linq; using System.Text; System.Text; using using System.Threading.Tasks; using Detyra; using Detyra; namespace Andy namespace Andy { class Program { static void void Main( Main(string string[] [] args)
73 | P a g e
USHTRIMEMEKLASA { Fillimi: try { //Fillimi i programit Console.WriteLine("Mire Console.WriteLine( "Mire se erdhe"); erdhe" ); Console.WriteLine( Console .WriteLine("Per "Per te vazhduar me program shtyp --p per te ndal shtyp --j"); --j"); char r; char r; r = Convert Convert.ToChar( .ToChar(Console Console.ReadLine()); .ReadLine()); if (r if (r == 'p' 'p' || || r == 'P' 'P') ) { ushtrim obj ushtrim obj = new ushtrim ushtrim(); (); obj.llogaritjett(); } else if if (r (r == 'j' 'j' || || r == 'J' 'J') ) { Console.WriteLine( Console .WriteLine("----------------------------"----------------------------- Programi Mbaroj ---------------------------- "); " ); Console.ReadLine(); Console .ReadLine(); } else { Console.WriteLine( Console .WriteLine("Ju "Ju shtypët '" + '" + r + "' vlera e shtypur nuk është --p e as --j , programi mbaroj" ); Console.ReadLine(); Console .ReadLine(); goto Fillimi; goto Fillimi; } } catch ( catch (Exception Exception ex) ex) { Console.WriteLine( Console .WriteLine("Ju "Ju keni shtypur dy karaktere ose asnjë : " + ex.Message); Console.ReadLine(); Console.ReadLine(); goto Fillimi; goto Fillimi; } } } }
74 | P a g e
C#STREAMREADERDHESTREAMWRITER C#StreamReaderdheStreamWriter StreamReaderlexonT StreamReaderlex onTextfile.AjohasetnëhapësiraSyst extfile.AjohasetnëhapësiraSystem.IO.Ajosiguronperformancëtë em.IO.Ajosiguronperformancëtë mirëdheështëelehtëpërtushkruarnëprogram. PërnjëperdorimtëlehtëtëStreamReadersëpariduhetqëtëparacakt Përnjëperdorimtëleht ëtëStreamReadersëpariduhetqëtëparacaktojmlibrarinSystem ojmlibrarinSystem.IO, .IO, Using:Kjodeklaratdotëpërpilohetnëruntimepërtibërëtëgjithapunëtepastrimitnë dritarenefajllitqëtrajtohet. using System; using System; using System.IO; using System.IO; class Program { static void void Main() Main() { string rreshti; string rreshti; using ( using (StreamReader StreamReader reader = new StreamReader StreamReader( ("file.txt" "file.txt")) )) { rreshti = reader.ReadLine(); reader.ReadLine(); } Console.WriteLine(rreshti); Console .WriteLine(rreshti); } }
Ekrijojmnjëfiletxtmeemrifile.txttekdirektoriumiiprogramittonëdheishenojmshenimesi mëposht. Pastajnëprogramdotëekzekut Pastajnëprog ramdotëekzekutohetvetëmrr ohetvetëmrreshtiipareicili eshtiipareicili gjindettekfajllifile.txt.
75 | P a g e
C#STREAMREADERDHESTREAMWRITER StreamWriter bënëshkriminenetekstinënjëfile,nëshembullintonënënjëtxtfile.
Tëkrijohetprogramiicilimerrëngaperdoruesinjëtekstsidheeruanatënënë aperdoruesinjëtekstsidheeruanatënënë Shembulli 1 : Tëkrijohetprogramiicilimerrëng njëtxtfile. static void Main( void Main(string string[] [] args) { Console.WriteLine( Console .WriteLine("Shkruaj "Shkruaj një tekst dhe ruaje atë : " ); string teksti string teksti = Console Console.ReadLine(); .ReadLine(); Console.WriteLine("Dëshironi Console.WriteLine( "Dëshironi ta ruani nëse PO shtyp 1 nëse JO shtyp 0" ); int numri int numri = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); if (numri if (numri == 1) { try { StreamWriter shkrim = new StreamWriter ("teksti.txt" , true true, , Encoding.Unicode); Encoding .Unicode); shkrim.WriteLineAsync(teksti); shkrim.Close(); Console.WriteLine( Console .WriteLine("Teksti "Teksti është ruajtur"); ruajtur" ); } catch ( catch (Exception Exception) ) { Console.WriteLine( Console .WriteLine("Teksti "Teksti nuk është ruajtur"); ruajtur" ); } } else Console.WriteLine( Console .WriteLine("Lidhja "Lidhja nuk është e realizuar !" ); { } }
76 | P a g e
KONCEPTETEDATABAZAVE Konceptet e databazave ÇKAKUPTOJMËMEBAZA ÇKAKUPTO JMËMEBAZATETËDHËNAVE? TETËDHËNAVE? Mebazënetëdhënavekuptojmëgrumbulliminetëdhënavenënjëvendtëcaktuarmeqellim qëgjatëpërdorimitdheshfrytëzimittëtyreqasjatëjetëelehtëdheethjeshtë.Ngaky grumbulliorganizuarmirëitëdhënavemundtënxirrendhetëparaqitenmë pas,pothuajse,çfarëdotëdhënashtëpjesshme.Kyorganizimitëdhënaves pas,pothuajse,çfarëdotëdhënashtëpjesshme.K yorganizimitëdhënavesidomosnëkohëte idomosnëkohëte soditështëpothuajseidomosdoshëm,nukkashkollë,komunë,spital,organizatatëndryshme etj,tëcilatdëshirojnëqëpunaetyretëjetëesuksesshmedhefunksionaleetëmoskenënjë bazëkutiruajnëtëdhënatetyre.Prameqenësemanipulimimetëdhëna,qëjanëtë organizuaranëbazëtëdhënash,ështëshumëipërshtatshëmdhemeshumëinterespërvetë kompanitë,organizatatendryshme,k kompanitë,organizatatendryshme,komunat,shkollatetj,mundtëpërfundojmëk omunat,shkollatetj,mundtëpërfundojmëkëtëhyrjeme ëtëhyrjeme pakfjalësekrijimidhemenaxhimiibazavemetëdhënaështënjëdomosdoshmëriekohës. Kadisaprogramekompjuterikeqëshërbejnëpërpunëmetëdhëna,njëringaprogrameticili ështëidedikuarkryesishtpërbazatetëdhënaveështëprogramiMicrosoftAccess,përtëcilin nenëkëtëmaterialdotëmundohemsadopaktësqarojmësesiduhetpunuarmetë. PerveçMicrosoftAccesskemiedheprogrametëcilatjanëmëtëavancuarasesaAccess-ieato PerveçMicrosoftAccesskemiedheprogramet ëcilatjanëmëtëavancuarasesaAccess-ieato janëSQLServer,OracelDatabaseetj,tekkëtotëfunditorg janëSQLServer,OracelDatabaseetj,tekk ëtotëfunditorganizimiitabelavebëhennëpër anizimiitabelavebëhennëpër mjetkoditndersatekaccessiekemiGUI(graphicaluserinterface)ecilaështëmëelehtëpër tumenaxhuar. kryesore i baze baze s se se te te dhe dhe nave ee shte shte tabela. Duhet te te mbani ne ne Tables – Tabela: Tabela: objekti kryesore mend se te te dhe dhe nat nat nuk ruhen askund tjete tjete r pe pe rveç ne ne tabele tabele ,e ,e pastaj pe pe rmes objekteve tjera mund te te nxirren dhe te te paraqite paraqite n ne menyra te te ndryshme mire mire po burimi i tyre ee shte shte tabela. shte objekt mjafte mjafte i re re nde nde sishe sishe m i bazes se se te te dhe dhe nave,pe nave,pe rmes Queries – Pyetësori: e shte pyete pyete sore sore ve ve ne mund te paraqesim p araqesim vete vete m nje nje pjese pjese te te dhe dhe nave nave qe qe i plote plote sojne sojne kushtet e parashtruara. Forms – Formularët: pe pe rmes rmes forme forme s ne mund te te be be jme jme ndryshime drejtpe drejtpe rdrejt ne ne tabele tabele . Puna me te te dhe dhe na pe pe rmes forme forme s ee shte shte shume shume e lehte lehte se sa drejte drejte pe pe r drejte drejte
77 | P a g e
KONCEPTETEDATABAZAVE pe pe rmes rmes tabelave. Pe Pe rveç rveç ke ke tyre pe pe rpare rpare sive pe pe rmes rmes formulare formulare ve ve parandalohen edhe munde munde sit e futjes se se te te dhe dhe nave nave gabim. qe llim te te shtypjes ne ne lete lete r te te te te Reports – Raportet : zakonisht raporti krijohet me qe dhe dhe nave nave te te caktuara. Raportet mund te te krijohen prej tabelave,pyete tabelave,pyete sve ose formave.
TIPETETËDHËNAVE Text –tëdhënatmundtëzgjidhensitekstnës tëdhënatmundtëzgjidhensitekstnësefushakatëbëjëme efushakatëbëjëmetekst,apokombinimii tekst,apokombinimii tekstitmenumra,adresatëgjatësisëmak tekstitmenumra,adresatëgjatësisëmaksimalederinë255karaktere. simalederinë255karaktere.Duhettëkemikuj Duhettëkemikujdes des kyllojitëdhënavemundtëzgjidheedhenëraste kyllojitëdhënavemund tëzgjidheedhenërastekurfushakatëb kurfushakatëbëjëmenumraporjoedh ëjëmenumraporjoedhe e mellogaritjenetyre. Shembull:kyllojmundtëzgjidhettenumratetelefonita Shembull:kyllojmundtëzgjid hettenumratetelefonitadresatendryshmeetj. dresatendryshmeetj. Memo – Kjofushëpërdoretpërsh Kjofushëpërdoretpërshkuarjenetekst kuarjenetekstevedhenumravemegjatësitëm evedhenumravemegjatësitëmëdhaderi ëdhaderi në64000karaktere(eqëmesatarishtdikullo në64000karaktere(eqëmesatarishtdikullogaritetderinëtetëfaqetek garitetderinëtetëfaqetekst)prakjofushë st)prakjofushë përdoretpërpërshkrimedetaletëfushave. Number – Kyllojitëdhënavezgjidhegjithmonë Kyllojitëdhënavezgjidhegjithmonëkurkemitëbëjmëmenu kurkemitëbëjmëmenumra,tëcilëtkanëtë mra,tëcilëtkanëtë bëjnëedhemellogaritje. Date/Time – Zakonishtkyllojitëdhënavezgjidhetkurk Zakonishtkyllojitëdhënavezgjidhetkurkemitëbëjmëmedatëndhek emitëbëjmëmedatëndhekohën. ohën. Currency – Zgjidhetnërastekurkemitëbëjmëmevalu Zgjidhetnërastekurkemitëbëjmëmevalutën(paratëshembullEuro, tën(paratëshembullEuro,dollarietj). dollarietj). AutoNumber – Zgjidhetnërastekurkemitëbëjmëmenumërimr Zgjidhetnërastekurkemitëbëjmëmenumërimrendoreqëshkruhe endoreqëshkruhetnë tnë mënyrëautomatik. Yes/No – Kyllojitëdhënavezgjidhetnëa Kyllojitëdhënavezgjidhetnëatorastekurk torastekurkemitëbëjmëmedyvlerasipsh emitëbëjmëmedyvlerasipshYes/No Yes/No (Po/Jo),True/False (Po/Jo),True/False(esaktë/epasaktë)ose (esaktë/epasaktë)oseOn/Off On/Off (ikyçur/iç’kyçur)etj. OLE Object – Zgjidhetnëatorastekurnëatëfush Zgjidhetnëatorastekurnëatëfushëduhettëvendosetnd ëduhettëvendosetndonjë onjë fotografi,grafikë,regjistrimzëri,apondonjëfletëpunues fotografi,grafikë,regjistrim zëri,apondonjëfletëpunueseecilaështëepunuars eecilaështëepunuarshembullnë hembullnë programinExel. Hyperlink – Kyopsionzgjidhetkuredhënaduhettëlidhetm Kyopsionzgjidhetkuredhënaduhettëlidhetmendonjëskedarëtjetër. endonjëskedarëtjetër.
78 | P a g e
KONCEPTETEDATABAZAVE Lookup Wizard – Kyllojitëdhënavekatëbëjëmekrijiminekutizavetëthjeshtadhetë List Box buttondhe button dhecomb comb box)eqëlehtësonshumëpunënmetë box)eqëlehtësonshumëpunënmetë kombinuaratëcilatquhen(List kombinuaratëcilatquhen( dhënattëcilatpërsëritën. Shembull:Njënxënësnëshk Shembull:Njënxënësnëshkollëkagjithsej13lëndëdheato ollëkagjithsej13lëndëdheatonjëherëshkruhenep njëherëshkruhenepastajpër astajpër secilinnxënësatonukkanevojëtëshkru secilinnxënësatonukkanevojëtëshkruhenporvetëmzgjidhen,a henporvetëmzgjidhen,apovitetnjëherëshkru povitetnjëherëshkruhen hen shembull2007,2008,2009etjdheatopastajvetëmzgjidhensipasnevojës.
TIPARETEFUSHËS(FIELDPROPERTIES) Tipiicaktuaritëdhënaveikaedhetiparet(karakteristikat)eveta. Tipiicaktuaritëdhënaveikaedhetiparet(k arakteristikat)eveta.Këtotiparejanëtë Këtotiparejanëtë (Field Properties)shihennë ndryshmeprejnjëllojitëdhënashnëllojintjetër.Tiparetefushës(Field pjesëneposhtmetëdritaresdizajnuesetëtabelës. General ,kursenëfletën ShumicaekëtyrekarakteristikavegjendennëfletënGeneral ,kursenëfletënLookup mundtë bëhetdeklarimiifushëssilistëezgjedhjes. Në figurën në vijim kemi paraqitur Tiparet e fushës (Field Properties)
–epërcaktonmadhësinëmaksimaletëtëdhë Field Size –(Madhësiaefushës) – epërcaktonmadhësinëmaksimaletëtëdhënavenëfushë. navenëfushë. Text kytipmundtëketëprej(0deri255)karak NësetipiitëdhënaveështëText Nësetipiitëdhënaveështë kytipmundtëketëprej(0deri255)karaktere.Pornësene tere.Pornësene këtëparametërekemivendosur15,atëherënëk këtëparametërekemiv endosur15,atëherënëkëtëfushëmundtës ëtëfushëmundtëshkruhenvetëm15 hkruhenvetëm15 karaktereejomëshumë.Nësetipiitëdhënave karaktereejomëshumë.Nësetipiitëdhënaveështëpërcaktua ështëpërcaktuar rNumber, Number,tipari tipari Field Field Size e përcaktonmadhësinëmaksimaletëlejuarpërr përcaktonmadhësinëmaksimaletëlejuarpërregjistrimtëvleravenumerike. egjistrimtëvleravenumerike. Format –Kjofushënamundësonkontrollinpërvendo Kjofushënamundësonkontrollinpërvendosjenetëdhënavedhe sjenetëdhënavedheparaqitjenetyre paraqitjenetyre Shembull: Nëseneshkruajmëkëtodysimbole !>,nëçfarëdomënyreqë nëformatëndryshme.Shembull: nëformatëndryshme. Nëseneshkruajmëkëtodysimbole!> ,nëçfarëdomënyreqë ![red],kjofushë shkruhettekstiaiparaqitemeshkronja shkruhettekstiaiparaqitemeshkronjatëmëdha,osenëseshk tëmëdha,osenëseshkruajmëkëtë ruajmëkëtë![red], kjofushë bëhetmeshkronjatëkuqeetj.
–përdoretpërtëkontroll Input Mask –(Maskahyrëse) – përdoretpërtëkontrolluardhepërtiformatizu uardhepërtiformatizuartëdhënatnë artëdhënatnë njëfushë.Meanëtëkësajveçoriekufizohetllojiitëdhënave.Shembull:dukeepërdorurkëtë Shembull:dukeepërdorurkëtë kritermundtëcaktojmëqëemriiklientittëfillojëgjithmon kritermundtëcaktojmëqëemriiklientittëfillojëgjithmonëmeshkronjëtëmad ëmeshkronjëtëmadhepae hepae Caps Lock,vetëmvendosimkëtëshenjë Lock,vetëmvendosimkëtëshenjë> >. përdorurtastinShift përdorurtastinShiftapo apoCaps
79 | P a g e
KONCEPTETEDATABAZAVE Caption –Caktohetetiketaefushës,eciladotë Caktohetetiketaefushës,eciladotëparaqitetnëvendtëemrittëfus paraqitetnëvendtëemrittëfushës.Emrii hës.Emrii fushësedhemetutjembetetaiqëkaqenë,por fushësedhemetutjemb etetaiqëkaqenë,porndryshonvetëmgjatëpa ndryshonvetëmgjatëparaqitjessëtabelësnë raqitjessëtabelësnë Datasheet View. View. Default Value –Vleraeparazgjedhurës Vleraeparazgjedhurështëvlerëecilaparaqitetpa htëvlerëecilaparaqitetpaumbushurfarenga umbushurfarenga shfrytëzuesi.Kjovlerëmundtëndryshohet,pornësenuk shfrytëzuesi.Kjovlerëmundtënd ryshohet,pornësenukintervenohetnëtë,ajombete intervenohetnëtë,ajombetetsie tsie tillë.Kjovlerëzakonishtvendosetpërtëdhënatt tillë.Kjovlerëzakonishtvendo setpërtëdhënattëcilatpërdorenshpes ëcilatpërdorenshpeshdhepërsëritentë hdhepërsëritentë njëjtatvlera.Shembull: njëjtatvlera.Shembull: nësenëfushënçmimitënjëtabelëshumicaea nësenëfushënçmimitënjëtabelëshumicaeartikujvekanëçmimin3 rtikujvekanëçmimin3 euro,këtëvlerëevendosim3.Gjatëregjistrimittëartikujveauto euro,këtëvlerëevendosim3.Gja tëregjistrimittëartikujveautomatikishtvendose matikishtvendosetvlera3,kjo tvlera3,kjo procedurëelehtësonpunëntonëdhenem procedurëelehtësonp unëntonëdhenemundtëndryshojmëvetëm undtëndryshojmëvetëmkurëçmimiiartikujve kurëçmimiiartikujve nukështë3euro. Validation Rule –Këtumundtikufizojmëvlerattëcilatvendosenmetëdh Këtumundtikufizojmëvlerattëcilatvendosenmetëdhënanëfushë.Këto ënanëfushë.Këto vlerajanëlogjikedhe,sitëtilla,kanëvetëmdyvleratëmundshmeTrue(evërtetë)ose True(evërtetë)oseFalse False(e (e pavërtetë).Shembull:nësenëkëtëfushëesh pavërtetë).Shembull:nësenëkëtëfushëeshkruajmëkushtin>4,a kruajmëkushtin>4,atëherëdotëlejohentë tëherëdotëlejohentë regjistrohenvleratmëtëmëdhasekatër,kursevlerak regjistrohenvleratmëtëmëdh asekatër,kursevlerakatër,emëtëvoglaseka atër,emëtëvoglasekatërnukmund tërnukmund tëregjistrohen. Validation Text –Këtumundtëshënohetporosiekrijuarnga Këtumundtëshënohetporosiekrijuarngavetëshfrytëzuesi.Shemb vetëshfrytëzuesi.Shembullnë ullnë Validaton Rule e shkruajmë kushtin >4,kurse në Validation Text shkruajmë porosinë psh: Kujdes nuk mund të shkruhet numri 1 deri 4. Nëse ne dëshirojmë të shënojmë në këtë fushë numrin 1,2,3 ose 4 paraqitet porosia të cilën ne vetë e kemi shkruar. Ngjashëm mund të parashtrojmë parashtrojmë edhe kritere kritere tjera. Required –Tekjofushënësevendosevlera Yesnukmundtëkaloninëfushëntjetër Shembull: TekjofushënësevendosevleraYes nukmundtëkaloninëfushëntjetërShembull : Yes,jumundtëshk tefushaMbiemrikenicaktuarvlerënYes tefushaMbiemrikenicaktuarvlerën ,jumundtëshkruaniemrindhenësenuk ruaniemrindhenësenukeshkruani eshkruani mbiemrinjunukmundtëkaloninëfushattjera.
RELACIONETMESTABELAVE(LIDHJAET RELACIONETMEST ABELAVE(LIDHJAETABELAVE)RELA ABELAVE)RELATIONSHIPS TIONSHIPS Nëmënyrëqëbazaetëdhënavetëjetëkompletedheracionale,tabelat Nëmënyrëqëbazaetëdhënavetëjetëkomplet edheracionale,tabelatqëruajnëtëdhënatë qëruajnëtëdhënatë veçantaduhettëkrijojnëlidhje(relacione). Lidhjaetabelaveofronshumëmundësipërp Lidhjaetabelaveofro nshumëmundësipërpunëtëmëtutjeshmemetë unëtëmëtutjeshmemetëdhënat.Lidhjet dhënat.Lidhjet ndihmojnënëgjetjendherregulliminetëdhënavetëbazës,gja ndihmojnënëgjetjendh erregulliminetëdhënavetëbazës,gjatëshfrytëzimittëtyre.Gjatë tëshfrytëzimittëtyre.Gjatë lidhjeveduhettëkemikujdes,fushatëlidhësenë lidhjeveduhettëkemikujdes ,fushatëlidhësenëmesëveteduhettëjenëtënjëjta mesëveteduhettëjenëtënjëjta.Prafushat .Prafushat tëcilatshërbejnëpërlidhje,nëtëdytabelatduhe tëcilatshërbejnëpërlidhje,n ëtëdytabelatduhettëjenëmetiptëtëdhëna ttëjenëmetiptëtëdhënavedheformëtë vedheformëtë njëjtë.Gjatëlidhjevesëdytabelave,sifushëlidhësenënjërënta njëjtë.Gjatëlidhjevesëdytabelave,s ifushëlidhësenënjërëntabelëmerretfushaeçelësit belëmerretfushaeçelësit primartësaj.Kurse,fushalidhësenëtabelëned primartësaj.Kurse,fus halidhësenëtabelënedytëquhetçelësiijashtëmd ytëquhetçelësiijashtëmdhezakonishtnuk hezakonishtnuk ështëfushëeçelësitprimar.
80 | P a g e
KONCEPTETEDATABAZAVE
Relacionet në mesë tabelave mund të jenë:
Një me një Një me shumë Shumë me shumë etj.
PYETËSORI(QUERIES) Pyetësorikryesishtpërdoretpërkrijiminetabelavetëpërkohshme.duk Pyetësorikryesishtpërdoretpërkrijiminetabelavetëpërk ohshme.dukeishfrytëzuartë eishfrytëzuartë dhënatezgjedhurangatabelabazë.Pyetësori është objekt i veçantë në bazën e të dhënave i cili ofron mundësi të mëdha si: kalkulime të ndryshme,shtrimin e kritereve të ndryshme,kryerjen e analizave të ndryshme në bazën e të dhënave etj. Nësegjatëdizajnimittëpyetësveshfrytëzohetvetëmnjëtab Nësegjatëdizajnimittëpyetës veshfrytëzohetvetëmnjëtabelë,përtëthuhetseështë elë,përtëthuhetseështëpyetës pyetës ithjeshtë.Nësedizajnimibëhetmemëtepërtabelaatë ithjeshtë.Nësedizajnimibë hetmemëtepërtabelaatëherëkypyetësquhetipërb herëkypyetësquhetipërbërë. ërë. Pyetësitjanënjëndërobjektetkryesor,tëcilëtebëjnë Pyetësitjanënjëndërob jektetkryesor,tëcilëtebëjnëprograminAccess programinAccessshumëmëtë shumëmëtë fuqishëmsesapunameprogramettjerash fuqishëmsesapunameprogramettjerashembull:sesaprogram embull:sesaprogramiExcel. iExcel.
FORMULARËT (FORMS) Njëringaobjekteticilishihetmësëshumtingashfrytëzuesiikëtijprogramiësh Njëringaobjekteticilishihetmësëshumtingas hfrytëzuesiikëtijprogramiështëformulari. tëformulari. Mbushjadireketetëdhënavenëtabelëneprog Mbushjadireketetëd hënavenëtabelëneprogramitAccessështë ramitAccessështëengjashmemeprogra engjashmemeprogramin min Exel,kjombushjedireketetëdhënavenëprogr Exel,kjombushjedireke tetëdhënavenëprograminAccessështë aminAccessështëepapreferuarpërarsyese epapreferuarpërarsyese gabimetmundtëjenëmëtëmëdhagjatëvendosjessëtëdhënave. PrograminAccessformularëtebëjnëedhemëtë PrograminAccessformularëtebëjnëedhemëtësuksesshëm,sepse suksesshëm,sepsevendosjaetëdhënavenë vendosjaetëdhënavenë tabelëpërmesformularëveështëmjaftëefektivedheethjes tabelëpërmesformularëveësh tëmjaftëefektivedheethjeshtëdhegjasatp htëdhegjasatpërvendosjenetë ërvendosjenetë dhënavegabimjanëmëtëvogla.Formularëtmu dhënavegabimjanëm ëtëvogla.Formularëtmundtëshfrytëzohenedh ndtëshfrytëzohenedhepërshfletiminetë epërshfletiminetë dhënavenëekran,dukeimarrëtëdhënat dhënavenëekran,dukeimarrëtëdhënatdirektngatabelaeba direktngatabelaebazës,osepërmespyetësorëve zës,osepërmespyetësorëve tëndryshëm.
RAPORTI–(REPORTS) Zakonishtraportetkrijohenmeqëllimtështypjes Zakonishtraportetkrijohenmeqëllimtështypjessëtëdhënavenëletër. sëtëdhënavenëletër. Procedura e krijimit të raporteve është e ngjashme me krijimin e formularëve. Edhe raporti mund të krijohet nga tabela ose nga pyetësorët të cilët ne i kemi krijuar paraprakisht.
Nenukdotëmësojmkrijiminenjëdatabaze,por Nenukdotëmësojmkrijiminenjëdatabaze,pornedotimësojlidhjenetyre,Lidhjenme nedotimësojlidhjenetyre,Lidhjenme Access.
81 | P a g e
LIDHJAEACCESS-ITMEPROGRAM Lidhja e Access-it me Program NemundtalidhimnjëdatabazëtëaccessitdhetamenaxhojmnëdyformapërmesConsoles edhepërmesWindowsForms. SëparidotakrijojmnjëdatabazëtëthjeshtmeaccesstektecilatdotiruajmvetëmEmrindhe MbiemrinenjëpersonisidheMosheneti–përshkakqëtibëjmëdallimetnëmesvlerave teksturoredhenumerike.T teksturoredhenumerike.Tekdatabazajonëmeemrin ekdatabazajonëmeemrinEmriMbiemri ikakëtollojetëtipevetë tëdhënave:
AutoNumber Text (Short Text në Access 2013) Text (Short Text në Access 2013) Number Pasi ta krijojm tabelen me emrin
, e ruajm databazën prarp dhe e hapim
Visual Studion e hapim një projekt të ri , unë e kam emërtuar
82 | P a g e
.
LIDHJAEACCESS-ITMEPROGRAM Si dhe në modin e dizajnimit
Mbasi ta kemi krijuar databazën atëherë jemi gati për lidhje me Program përmes gjuhes C#. Pastaj e hapin projektin e ri , une e kam emërtuar me emrin – është
dritarja
për lidhje ne jashtë (me database , me Server dhe me Windows Azure). Nëse kjo dritare nuk është e paraqitur në si në figurë atëherë në menynë e zgjedhim opsionin ose me kombinimin e tasteve . dhe Klikojm tek butoni i tret në
dhe hapet
dritarja si n dhe hapet dritarja si në vazhdim.
83 | P a g e
LIDHJAEACCESS-ITMEPROGRAM
E zgjedhim opsionin e parë tek klikojm ne butonin
:
dhe
. Pastaj hapet dialogu tjetër.
Pastaj tek Database file name: e zgjedhim zg jedhim butonin Browse… e zgjedhim lokacionin e databazës që deshirojm ta lidhim me databazë. Dhe klikojm në Test Connection për të testuar lidhjen nëse se lidhja nuk rezulton e suksesshme dhe paraqitet dialogu në vijim :
84 | P a g e
LIDHJAEACCESS-ITMEPROGRAM
atëherë shikojeni se nese Sistemi Operativ është I arkitektures 64 bitshe ndersa Visual Studio është 32 bit edhe Office është 64 bit atëherë duhet ta instaloni Office 32bit , sepse novoitet e njejta arkitektur për lidhje. Kur ti bëni këto ndryshime vazhdoni prap, dhe kur ta testoni lidhje do të paraqitet dialogu si në figurë.
Pastaj klikojm OK. Dhe do të shihet se tek Server Ser ver Explorer do të paraqite databejsi që na shërben për lidhje.
Kalojm tek kodi , për tu lidhur së pari duhet ta deklarojna direktoriumin direktoriumin për databaza I cili është . using System.Data; System.Data; using System.Data.OleDb; System.Data.OleDb;
85 | P a g e
LIDHJAEACCESS-ITMEPROGRAM PasiqëtëedeklarojmdirektoriuminOleDb,tashmëigjithëkodiqënashërbenpërruajtjene PasiqëtëedeklarojmdirektoriuminOleDb ,tashmëigjithëkodiqënashërbenpërruajtjene static void Main(). Main() . tëdhënavenëdatabasedotashënojmnëmetodenstatic static void void Main( Main(string string[] [] args) { OleDbConnection connect = new OleDbConnection (); connect.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Enes Hoxha\Documents\EmriMbiemri.accdb" ; Console.WriteLine( Console .WriteLine("Shkruaj "Shkruaj Emrin"); Emrin" ); string emri string emri = Console Console.ReadLine(); .ReadLine(); Console.WriteLine( Console .WriteLine("Shkruaj "Shkruaj Mbiemrin"); Mbiemrin" ); string mbiemri string mbiemri = Console Console.ReadLine(); .ReadLine(); Console.WriteLine( Console .WriteLine("Shkruaj "Shkruaj moshën"); moshën" ); int mosha int mosha = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); connect.Open(); OleDbCommand cmd = new OleDbCommand ("INSERT into Nxënësit(Emri,Mbiemri,Mosha)" + "values(@emri,@mbiemri,@mosha)" , connect); if (connect.State if (connect.State == ConnectionState .Open) { cmd.Parameters.Add( "@emri" "@emri", , OleDbType OleDbType.Char, .Char, 30).Value = emri; cmd.Parameters.Add( "@mbiemri" "@mbiemri", , OleDbType OleDbType.Char, .Char, 30).Value = mbiemri; cmd.Parameters.Add( "@mosha" "@mosha", , OleDbType OleDbType.Char, .Char, 30).Value = mosha; try { cmd.ExecuteNonQuery(); Console.WriteLine( Console .WriteLine("Shenimet "Shenimet janë regjistruar me sukses" ); connect.Close(); } catch ( catch (Exception Exception expe) expe) { Console.WriteLine(expe.Source); Console .WriteLine(expe.Source); connect.Close(); } } else { Console.WriteLine( Console .WriteLine("Lidhja "Lidhja është shkëputur"); shkëputur" ); } }
Analiza e kodit : OleDbConnection connect = new OleDbConnection (); - krijohetobjektimeemër
connectItipitOleDbConnection connectItipitOleDbConnectionicilinashërbenpërtulidhëmedatabase. icilinashërbenpërtulidhëmedatabase. connect.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Enes Hoxha\Documents\EmriMbiemri.accdb" ; -pastajpërmesConnectionString
neezgjedhimlokacioninsekuështëdata neezgjedhimlokacionin sekuështëdatabaza,sigjindetkjonëko baza,sigjindetkjonëkompjuterintuajnëfillimtek mpjuterintuajnëfillimtek
86 | P a g e
LIDHJAEACCESS-ITMEPROGRAM ServerExplorerklikojmtekdatabazatëcilënekemi vendosmëpare,metastinedjathtëkilkojmtek EmriMbiemri.accdbdheezgjedhimopsionin Properties,dhepastajtekPropertiestekopsioni ConnectionString
Ekopjojmtëgjithëlokacioninqëgjindettek ConnectionStringdheevendosimtekkodi connect.ConnectionString = @"Provider …………
Pasitavendosimlidhjenpërmeslidhjesme string,atëherëilexojmvlerateshënuara ngaperdoruesiidatabazëspasitimarrim vlertaeatëherëehapimlidhjensimëposhtë; Console.WriteLine( Console .WriteLine("Shkruaj "Shkruaj Emrin"); Emrin" ); string emri = Console string emri Console.ReadLine(); .ReadLine(); Console.WriteLine( Console .WriteLine("Shkruaj "Shkruaj Mbiemrin"); Mbiemrin" ); string mbiemri string mbiemri = Console Console.ReadLine(); .ReadLine(); Console.WriteLine( Console .WriteLine("Shkruaj "Shkruaj moshën"); moshën" ); int mosha int mosha = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); connect.Open();
OleDbCommand cmd = new OleDbCommand ("INSERT into Nxënësit(Emri,Mbiemri,Mosha)" + "values(@emri,@mbiemri,@mosha)" , connect);
KodimëlarëtekrijonobjektinmeemrincmddheemundësonqëtektabelaNxënësitqë gjinden4fusha,NR,Emri,MbiemridheMoshaporpasiqëNR(variablaNumrirendor)është itipitAutoNumberdhenukkeminevojëmeeshfaqësepsekolonambushetvetë,dheilidhim meemrtatevariablavetërealizuarmëlartëgjatële meemrtatevariablavet ërealizuarmëlartëgjatëleximittëvleravedheeshtojmng ximittëvleravedheeshtojmnganjë@ anjë@ paratyre.
87 | P a g e
LIDHJAEACCESS-ITMEPROGRAM if (connect.State == ConnectionState .Open) if (connect.State { cmd.Parameters.Add( "@emri" "@emri", , OleDbType OleDbType.Char, .Char, 30).Value = emri; cmd.Parameters.Add( "@mbiemri" "@mbiemri", , OleDbType OleDbType.Char, .Char, 30).Value = mbiemri; cmd.Parameters.Add( "@mosha" "@mosha", , OleDbType OleDbType.Char, .Char, 30).Value = mosha; try { cmd.ExecuteNonQuery(); Console.WriteLine( Console .WriteLine("Shenimet "Shenimet janë regjistruar me sukses" ); connect.Close(); } catch ( catch (Exception Exception expe) expe) { Console.WriteLine(expe.Source); Console .WriteLine(expe.Source); connect.Close(); } } else { Console.WriteLine( Console .WriteLine("Lidhja "Lidhja është shkëputur"); shkëputur" ); }
Nëselidhjaështëehapur,tekdegëzimiif
cmd.Parameters.Add( "@emri", cmd.Parameters.Add("@emri" , OleDbType OleDbType.Char, .Char, 30).Value = emri; -Kykodëbënë
vendosjeneparametravetëshenuartekvariablameemëremri ,gjithëashtuipetedhetipiitë dhënavepërruajtjenëdatabase+edhemevlerenmaksimaletëkaraktereveqëunëekam lënë30sepsenukbesojmqëkandonjëkushemrinmëtëmadhëse30karaktere,gjithashtu edhetektëdytjerat,edhetekmoshaelemë("@mosha" "@mosha", , OleDbType OleDbType.Char, .Char, 30tipinCharsepse tekleximiështëintdheneseruhetoseshfaqetnëdatabaseC#gjithëmonatovleraijepsi vlerastringoseChar. try { cmd.ExecuteNonQuery(); Console.WriteLine( Console .WriteLine("Shenimet "Shenimet janë regjistruar me sukses" ); connect.Close(); }
Pastajduhetprovuarsenukjemidukeiudrejtuarndonjëpyetsori,sepsetekpytësorëtnuk shënojmvleratërejapovetëmilexojmëato.Neseverifikohetsenukidrejtohemindonjë pytësoriatëherëshënimetruhennëdatabase.dhembylletlidhja. catch (Exception catch ( Exception expe) expe) { Console.WriteLine(expe.Source); Console .WriteLine(expe.Source); connect.Close(); }
88 | P a g e
LIDHJAEACCESS-ITMEPROGRAM Nësendodhëdiqkagabimmeshenimetqëdeshirojmpërtiruajturpseekalojmkufirinosei drejtohemindonjëpytësoriatëherënëkonzolëdot’nashfaqetorigjinaegabimittëbërë,dhe mbylletlidhja. else { Console.WriteLine( Console .WriteLine("Lidhja "Lidhja është shkëputur"); shkëputur" ); }
Nësedotëndodhëqëlidhjadotëjetëembylluratëherënëkonzolëdotëshfaqetmesazhi Lidhja është shkëputur.
Itërëkodiduketnëkëtëformë: using System; using System; using using System.Collections.Generic; using System.Linq; System.Linq; using System.Data; System.Data; using System.Data.OleDb; System.Data.OleDb; using System.Text; System.Text; using using System.Threading.Tasks; namespace TESTDATABASE namespace TESTDATABASE { class Program { static void void Main( Main(string string[] [] args) { OleDbConnection connect = new OleDbConnection (); connect.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Enes Hoxha\Documents\EmriMbiemri.accdb" ; Console.WriteLine( Console .WriteLine("Shkruaj "Shkruaj Emrin"); Emrin" ); string emri string emri = Console Console.ReadLine(); .ReadLine(); Console.WriteLine( Console .WriteLine("Shkruaj "Shkruaj Mbiemrin"); Mbiemrin" ); string mbiemri string mbiemri = Console Console.ReadLine(); .ReadLine(); Console.WriteLine( Console .WriteLine("Shkruaj "Shkruaj moshën"); moshën" ); int mosha int mosha = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); connect.Open(); OleDbCommand cmd = new OleDbCommand ("INSERT into Nxënësit(Emri,Mbiemri,Mosha)" + "values(@emri,@mbiemri,@mosha)" , connect); if (connect.State if (connect.State == ConnectionState .Open) { cmd.Parameters.Add( "@emri" "@emri", , OleDbType OleDbType.Char, .Char, 30).Value = emri; cmd.Parameters.Add( "@mbiemri" "@mbiemri", , OleDbType OleDbType.Char, .Char, 30).Value = mbiemri; cmd.Parameters.Add( "@mosha" "@mosha", , OleDbType OleDbType.Char, .Char, 30).Value = mosha; try { cmd.ExecuteNonQuery(); Console.WriteLine( Console .WriteLine("Shenimet "Shenimet janë regjistruar me sukses" );
89 | P a g e
LIDHJAEACCESS-ITMEPROGRAM connect.Close(); } catch ( catch (Exception Exception expe) expe) { Console.WriteLine(expe.Source); Console .WriteLine(expe.Source); connect.Close(); } } else { Console.WriteLine( Console .WriteLine("Lidhja "Lidhja është shkëputur"); shkëputur" ); } } } }
Manipulimetmebazatetëdhënavesi:insertimiitëdhënave,leximiitëdhënave,fshirjado tëspjegohenteknjesiamanipilimimeWindowsForms.Përarsyeseështëmëthjeshtdhemë intersant.
90 | P a g e
USHTRIMEMEDETYRA Ushtrime me detyra te re re shume shume n e nje vargu A = {8, 4, 7, -5, 7}. 1. Te krijohet program i cili llogarit te Do te te pe pe rdoret rdoret nje nje ra nga unazat e cila be llogaritjen e tyre. Rezultati pe pe rfundimtar e shte shte S = 21. nje varg nga vargu vargu i dhe dhe ne ne A = {8 ,4 , -5 , -7} , ne ne se se 2. Te krijohet program i cili krijon nje numri ee shte shte me me i madhe madhe se 0 ate ate here here numri do te te mblidhet me veten , ndersa nese e shte shte i barabart ose ma i madh se zero numri te te shume shume zohet zohet me indeksin e tij. Nxe ne ne sit me fusha pe pe r plote plote sim Nnr , Nemri , 3. Te krijohet databaza me tabelat Nxe plote sim Knr , Kklasa . Nvendi, Nnotamesatare, si Nnotamesatare, si dhe tabela Klasat me fusha per plote Kklasa . Te lidhet me program duke perdorur Console Application Application , , me dy klasa , klasa , tek klasa Nxënësit te te be be het ruajtja e shenimeve ne ne database nga perdoruesi ndersa tek klasa Klasa te be het ruajtja e shenimeve gjithe gjithe ashtu nga perdoruesi. Tek Klasa Klasa te be main te te thirret klasa nga perdoruesi (duhet delkaruar te te dyja vare vare sisht se si don perdoruesi), dhe pasi qe qe te te ruhen shenimet ne ne database nga njera class , tju be be het nje nje pyetje perdoruesit se nese deshiron me vendos shenim te te ri , ne ne se po te te shtypet 1 ose PO dhe te te ke ke thehet nga fillimi brenda asaj klase, ndersa ne ne se jo te te ke ke thehet blloku ekzekutues ne ne fillime fillime .
91 | P a g e
KAPITULLI2WINDOWSFORMS Kapitulli 2 Windows Forms
WINDOWSFORMSMEC#
Kapitulli 2 : Ne kete kapitull do ti mesojme Windows Format duke perdorur gjuhen programuese programuese C#. C #.
92 | P a g e
HYRJENËWINDOWSFORMS Hyrje ne Windows Forms ÇKAJANËWINDOWSFORMAT? Windows Forms (WinForms) ka ardhur nga
të
cilat janë të përfshira ose janë pjesë e Microsoft .NET Framework. Duke perdorur Visaul Studio ne jemi në gjendje g jendje të krijojm programe duke perdorur Format. Për dallim nga programet Console tek të cilat cil at programi ekzekutohet ekzekutohet vetëm me funksione si tekste , ose me komandim pa pasur mundësi këthimi mbrapa pas çdo procesi , ndersa me Forma qasja në një program është më e lehtë dhe më e thjesht për perdoruesin që perdorë atë program. Dallimi në mes Windows Explorerit (me ( me dizajne) dhe Command Prompt (console).
93 | P a g e
HYRJENËWINDOWSFORMS
Manipulimi me Command Prompt kundrejt Windows Explorer-it është mjaft më i vështirë , por nga ana e zhvillimit më e lehtë është zhvillimi i një programi me Console se me Forma. Para se të fillojmë zhvillimin e një programi me Windows Forms , duhet ditur disa koncepte : së pari programi duhet dizajnuar dhe pastaj koduar. Njohja me rrethinën punuese me Windows Forms duke perdorur Visaul Studion. Së pari e hapin Visual Studion edhe hapim menun
. Ose me kombinimin e tasteve
.
Dhe hapet dialogu i templejtave, por tash ne nuk do ta zgjedhim projektin si Console Application por si
94 | P a g e
, dhe e emërtojm projektin si
.
HYRJENËWINDOWSFORMS
Dhe klikojm në butonin OK , dhe në ekran do të hapet projekti me të cilin do të punojm
Në anën e majtë ndodhet lista e veglave Toolbox Toolbox por nese nuk është në kompjuterin tend e paraqitur ju mund ta vendosni duke klikuar në menun tasteve
ose me kombinimin e .
Pjesë e nevojshme para se ta fillojm me punën me Windows Forms janë edhe veglat si
dhe
të
cilat janë në anën e djathët të Visualit, nese nuk janë të paraqituar sin ë figutë prap mund të gjinden në menun
95 | P a g e
.
HYRJENËWINDOWSFORMS RREGULLIMIIMADHËSISSËPROGRAMIT
1. Mund ta caktoshë madhësinë duke e ngrehur skajin e dritarës së programit tone, sipas nevojës. 2. Nga
ne mund ti vendosim objektët në program është emërtimi i programit tone në momentin kur ai është i hapur ne do ta
3.
ndryshojm atë me emrin e projektit tone. Klikojm mbi Formë dhe tek hapsirën Text e shenojm dhe zgjedhur opsionin
96 | P a g e
në
sin ë figure, ose duke klikuar me tastin e djathët .
HYRJENËWINDOWSFORMS Tash do të bëjmë vendosjen e 3
,e3
dhe një
. Dhe i vendosim sin ë
figurën e më poshtme.
Klikojm një here here mbi label1 dhe në fushën Text Text tek Properties Properties e shenoj Vlera a : si për label2 Vlera b : , dhe për label3 Rezultati : , ndersa tek button1 e shenojm Kalkulo , si në figurën në vijim.
97 | P a g e
HYRJENËWINDOWSFORMS Mbasi ti rregulloni dizajnin tuaj të deshiruar. deshiruar. Oblektet të cilat do të na novoiten në prapavi (kod) janë të tre textboxat textboxat edhe butoni. Si janë të emërtuar këto objekte ? Textboxi i pare njihet me emrin TextBox1 , i dyti TextBox2 , dhe i fundi afër butoni është i emërtuar si Textbox3 Textbox3 , por ne mund ti emrërtojm sipas dëshirës duke klikuar mbi ta dhe zgjedhur opsionin Name tek Properites si në fig ure dhe ne do ti emërtojm ata si : TextBox1 – atxt – për arsye se lidhet me labelin l abelin Vlera a TextBox2 – btxt TextBox3 –rezultatitxt si dhe Button1 – kalkulobtn.
Klikojm dy here mbi butonin
98 | P a g e
dhe do tna paraqitet kodi.
HYRJENËWINDOWSFORMS
Tek private void void kalkulobtn_Click( kalkulobtn_Click(object object sender, sender, EventArgs EventArgs e) e) { Këtu ekzekutohet kodi në momentin e klikimit të butonit kalkulo. }
Në shembullin tone ne do ti marrim dy vlera nga përdoruesi dhe do ti mbledhim ato , vl era e pare do të shenohet në atxt – textboxin e pare si dhe vleren e dyte btxt – textboxin e dytë dhe në fund shuma e atyre vlerave do të paraqitet në textboxin e fundit. Kodi duket kështu : - pasi të shenohet kodi klikojm në butonin using System; using System; using using System.Collections.Generic; using System.ComponentMode System.ComponentModel; l; using System.Data; System.Data; using System.Drawing; using System.Drawing; using System.Linq; System.Linq; using System.Text; System.Text; using using System.Threading.Tasks; using using System.Windows.Forms;
99 | P a g e
HYRJENËWINDOWSFORMS namespace Projekt1Form namespace Projekt1Form { public partial class Form1 Form1 : : Form { public Form1() public Form1() { InitializeComponent(); } private void void kalkulobtn_Click( kalkulobtn_Click(object object sender, sender, EventArgs EventArgs e) e) { string a string a = atxt.Text; string b string b = btxt.Text; double c double c = Convert Convert.ToDouble(a .ToDouble(a) ) + Convert Convert.ToDouble(b); .ToDouble(b); rezultatitxt.Text rezultatitxt.Text = c.ToString(); c.ToString(); } } }
string a = atxt.Text; -- Variabla a e merrë vleren e cila shenohet në atxt nga string a perdoruesi. double c double c = Convert Convert.ToDouble(a) .ToDouble(a) + Convert Convert.ToDouble(b); .ToDouble(b); - variabla c është e barabart me vlera e shenuar në atxt dhe btxt . c = a + b. rezultatitxt.Text = c.ToString(); - në rezultatitxt – shenohet vlera e variables c.
100 | P a g e
HYRJENËWINDOWSFORMS PARAQITJAEMESAZHEVENËPROGRAM Në shembullin paraprak ne e pamë se i mund ta paraqesim një vlerë e cila është shumë e dy numrave dhe u paraqitke në një textbox, por ka edhe shumë mënyra tjera të paraqitjeve të rezultateve. rezultateve. Në këtë shembull do të njejtin nj ejtin rezultat të marrur nga vlerat e perdoruesit do ti paraqesin në një meszh. Mesazhet në C# nihen si
.
Ta hapim projektin e krijuar më herët me emrin
MessageBox .Show("Rezultati MessageBox.Show( "Rezultati C = " + " + c); - ky është kodi i cili bënë shfaqjen e vlerës C në mesazh .
I tërë kodi është i paraqitur kështu. using System; using System; using using System.Collections.Generic; using System.ComponentMode System.ComponentModel; l; using System.Data; System.Data; using System.Drawing; using System.Drawing; using System.Linq; System.Linq; using System.Text; System.Text; using using System.Threading.Tasks; using using System.Windows.Forms; namespace Projekt1Form namespace Projekt1Form { public partial class Form1 Form1 : : Form { public Form1() public Form1() { InitializeComponent(); } private void void kalkulobtn_Click( kalkulobtn_Click(object object sender, sender, EventArgs EventArgs e) e) { string a string a = atxt.Text; string b string b = btxt.Text; double c double c = Convert Convert.ToDouble(a .ToDouble(a) ) + Convert Convert.ToDouble(b); .ToDouble(b); rezultatitxt.Text rezultatitxt.Text = c.ToString(); c.ToString(); //Këtu mbaron njësia e parë - e cila shfaq vleren C në rezultatitxt.
101 | P a g e
HYRJENËWINDOWSFORMS //Nga këtu e poshtë do ta paraqesim vleren C në një mesazh. //Vlerat a dhe b i kemi të marruara tani në këtë formë do ti shpjegojm njësit. MessageBox.Show( MessageBox .Show("Rezultati "Rezultati C = " + " + c); } } } //Këtu – ju mos i shkruani në kod nëse deshironi këto janë komente të cilat na ndihmojn gjatë kodimit.
Programi duket kështu :
INTELLISENSE Ju tashmë jeni deshmitarë se në momentin e shtypjes së një shkrojne , në rastin tone në momentin e shtypjes së shkronjave M – për ta shtupur na ndihmon gjatë kodimit.
102 | P a g e
u paraqitke një dritare e cila
HYRJENËWINDOWSFORMS
Kjo dritare quhet
103 | P a g e
dhe është shumë e nevojshme gjatë kodimit.
MESSAGEBOX MessageBox Nga njësia e kaluar ne e pamë se duke perdorur një messagebox mund ta shtynim një vlerë. Tash ne do ta krijojm një projekt të ri me emër
. Dhe do ta vendosim vetëm një buton
në program, dhe do të shfaqim mesazhe të ndryshme.
Butonin do ta emërtojm me emrin
. Klikojm dy here mbi buton dhe kalojm në kodë.
MessageBox .Show("Mesazh MessageBox.Show( "Mesazh në C#" 1); 1 – ne do ta vendosim një “,” dhe do ta shenojm Mesazhi
104 | P a g e
MESSAGEBOX
VENDOSJAEBUTONAVEMBRENDAMESSAGEBOX
private void mesazhbtn_Click( void mesazhbtn_Click(object object sender, sender, EventArgs EventArgs e) e) {
105 | P a g e
MESSAGEBOX MessageBox.Show( MessageBox .Show("Mesazh "Mesazh në C#", C#" ,"Mesazhi" "Mesazhi", ,MessageBoxButtons MessageBoxButtons.YesNo); .YesNo); }
VENDOSJAEIKONAVENËNJËMESSAGEBOX Një gjë tjetër që mund të shtoni mbrenda një MessageBox janë edhe ikonat , të cilat na ndihmojn për të spjeguar më lehtë l ehtë Mesazhin. Pas MessageBoxButtons .YesNo e vendosim një presje dhe vazhdojm të shenojm kodin sin ë vi jim
I tërë kodi në metodën e butonit. private void void mesazhbtn_Click( mesazhbtn_Click(object object sender, sender, EventArgs EventArgs e) e) { MessageBox.Show( MessageBox .Show("Mesazh "Mesazh në C#", C#" ,"Mesazhi" "Mesazhi", ,MessageBoxButtons MessageBoxButtons.YesNo .YesNo , MessageBoxIcon .Asterisk); }
VENDOSJAENJËMESAZHINGAPERDORUESI. Të krijohet një program i ri dhe të emërtohet me emrin këto objekte në form ,
,
– të emërtohet me emrin në fushën ose si
106 | P a g e
dhe të vendosen
,ndersa tek .
, ndersa
1 një të emërtohet
– në properties tek fusha
tek të shenohet
MESSAGEBOX
Pastaj kur ti vendosni objektet si në figurën e më sipërme klikoni dy here mbi butonin me text Shfaq , dhe tek metoda e ti shenojm : private void void mesazhibtn_Click( mesazhibtn_Click(object object sender, sender, EventArgs EventArgs e) e) { string emri string emri = emritxt.Text; emritxt.Text; MessageBox.Show( MessageBox .Show("Emri "Emri i shenuar është : " + " + emri, "Mesazhi" "Mesazhi"); ); }
Kur të shkruhet emri i juaj apo ndonjë mesazh tjetër t jetër në emritxt dhe të klikojm në butonin shfaq dhe do të na shfaqet .
107 | P a g e
DISAKOMBINIMETËNEVOJSHMEGJATËPROGRAMIMIT MEVISUALSTUDIO Disa kombinime te nevojshme gjate programimit me Visual Studio CTRL+k+CTRL+d – be be ne ne rregullimin e hirearkis te te kodit si p.sh. class Program { static void void Main( Main(string string[] [] args) { OleDbConnection connect = new OleDbConnection OleDbConnection(); (); connect.ConnectionString = @"Provide @"Provider=Microsoft. r=Microsoft.ACE.OLEDB.1 ACE.OLEDB.12.0;Data 2.0;Data Source=C:\User Source=C:\Users\Enes s\Enes Hoxha\Documents\EmriMbiemri.accdb" ; Console.WriteLine( Console .WriteLine("Shkruaj "Shkruaj Emrin"); Emrin" ); string emri string emri = Console Console.ReadLine(); .ReadLine(); Console.WriteLine( Console .WriteLine("Shkruaj "Shkruaj Mbiemrin"); Mbiemrin" ); string mbiemri string mbiemri = Console Console.ReadLine(); .ReadLine(); Console.WriteLine( Console .WriteLine("Shkruaj "Shkruaj moshën"); moshën" ); int mosha int mosha = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); connect.Open(); OleDbCommand cmd OleDbCommand cmd = new OleDbCommand ("INSERT into Nxënësit(Emri,Mbiemri,Mosha)" + "values(@emri,@mbiemri,@mosha)" , connect); if (connect.State if (connect.State == ConnectionState .Open)
Nga pamja e larte larte me ke ke te te kombinim be be het ne ne ke ke te te forme forme , pe pe r ta pasur me te lehte leximin. class Program { static void void Main( Main(string string[] [] args) { OleDbConnection connect = new OleDbConnection (); connect.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\Enes Hoxha\Documents\EmriMbiemri.accdb" ; Console.WriteLine( Console .WriteLine("Shkruaj "Shkruaj Emrin"); Emrin" ); string emri string emri = Console Console.ReadLine(); .ReadLine(); Console.WriteLine( Console .WriteLine("Shkruaj "Shkruaj Mbiemrin"); Mbiemrin" ); string mbiemri string mbiemri = Console Console.ReadLine(); .ReadLine(); Console.WriteLine( Console .WriteLine("Shkruaj "Shkruaj moshën"); moshën" ); int mosha int mosha = Convert Convert.ToInt32( .ToInt32(Console Console.ReadLine()); .ReadLine()); connect.Open(); OleDbCommand cmd = new OleDbCommand ("INSERT into Nxënësit(Emri,Mbiemri,Mosha)" + "values(@emri,@mbiemri,@mosha)" "values(@emri,@mbiemri,@mosha)", , connect); if (connect.State if (connect.State == ConnectionState .Open)
CTRL+k+CTRL+C – be be ne ne komentimin e kodit CTRL+k+CTRL+U – Shenderron komentin ne kode kode . CTRL+SHFT+B – e krijon Programin 108 | P a g e
DISAKOMBINIMETËNEVOJSHMEGJATËPROGRAMIMIT MEVISUALSTUDIO F5 – Start Debugging CTRL+F5 – Start without Debugging CTRL+SHIFT+A – Add New Item SHIFT-ALT SHIFT-ALT-A – Add Existing E xisting Item Me Me poshte poshte gjinden Kombinimet e tasteve me me te te nevjshme gjate gjate programimit programimit me Visual Studio .
1.MANAGEVISUALSTUDIO
Ctrl+S
Save current file
Ctrl+Shift+S
Save all files
Ctrl+Shift+N
Create new project
Ctrl+O
Open file
Ctrl+Shift+O
Open project
Ctrl+Shift+A
Add item to project
Esc
Close menu or dialog
Ctrl+P
Print
Shift+Alt+Enter
Toggle full screen mode
Ctrl+F4
Close current tab
Ctrl+F6/Ctrl+Shift+F6
Go to next / go to previous window
Ctrl+Tab, then Arrow keys
Press and hold Ctrl+Tab, then using arrow keys gives a small task manager with all open files
CODEEDITOR
Find, Replace, and Goto Ctrl+F
Find and replace dialog box
F3/Shift+F3
Find next / find previous
Ctrl+H
Display Replace options on the quick tab
Shift+F12
Find all references for selected symbol
Ctrl+Shift+F
Find in files
109 | P a g e
DISAKOMBINIMETËNEVOJSHMEGJATËPROGRAMIMIT MEVISUALSTUDIO Alt+F3, s
Stop current find in files operation
Ctrl+F3/Ctrl+Shift+F3 Find next / find previous in selected text Alt+F12
Find symbol
Ctrl+D
Put cursor in find/command box of the toolbar. Use ctrl+/ in Visual C#
Ctrl+I/Ctrl+Shift+I
Incremental search / reverse incremental search
Shift+Alt+F12
Quick find symbol
Ctrl+,
Display Navigate-To dialog box
Ctrl+G
Goto line number
Ctrl+]
Go to matching brace in source file
Shift+Ctrl+Arrow down
Jump to next occurrence of highlighted symbol
Shift+Ctrl+Arrow up
Jump to previous occurrence of highlighted symbol Undo, Redo, Copy, Paste
Ctrl+x, Ctrl+c, Ctrl+V
Cut, copy, paste
Ctrl+Shift+V
Pastes an item from the Clipboard ring
Ctrl+Z
Undo
Ctrl+Y
Redo (or Shift+Alt+Backspace, or Ctrl+Shift+Z) Select Text
Shift+Arrow Keys
Extend selection one character/one line Extend selection to end / to beginning of Ctrl+Shift+End/Ctrl+Shift+Home document Ctrl+Shift+] Extend selection to nexst brace Shift+End/Shift+Home Extend selection to end / to beginning of line Shift+Page Down/Shift+Page Up Extends selection down one page / up one page pa ge Ctrl+W Select current word Esc Cancel Selection Moves cursor and extend selection to the last line Ctrl+Shift+Page Ctrl+Shift+P age Down/Page Up / first line in view. view.
110 | P a g e
DISAKOMBINIMETËNEVOJSHMEGJATËPROGRAMIMIT MEVISUALSTUDIO Ctrl+Shift+Arrow Right/Arrow Ctrl+Shift+Arrow Left Ctrl+A
Extend selection one word to the right / one word to the left Select All
CODING
Collapse Items Ctrl+M+M
Collapse / un-collapse current preset area (e.g. method)
Ctrl+M+H
Collpase / hide current selection
Ctrl+M+O
Collapse declaration bodies
Ctrl+M+A
Collapse all
Ctrl+M+X
Uncollapse all
Ctrl+m, ctrl+T Collapse Html tag Edit Code Ctrl+L Ctrl+Shift+L
Delete current line or selection of lines
Ctrl+Delete
Delete word to right of cursor
Ctrl+Backspace Delete word to left of cursor Ctrl+Enter
Enter blank line above cursor
Ctrl+Shift+Enter Enter blank line below cursor Ctrl+Shift+U
Make uppercase
Ctrl+U
Make lowercase (reverse upercase)
Ctrl+K+C
Comment selected text
Ctrl+K+U
Uncomment selected text
Ctrl+K+\
Remove white space and tabs in selection or around current cursor position
Ctrl+K+D
Format document to code formatting settings
Ctrl+K+F
Format selection to code formatting settings
Ctrl+Shift+SpaceDisplay Ctrl+Shift+Space Display parameter required for selected method Ctrl+Shift+8
Visualize whitespace (or press Ctrl+r, then Ctrl+w)
Ctrl+K+D
Format document to code formatting settings
111 | P a g e
DISAKOMBINIMETËNEVOJSHMEGJATËPROGRAMIMIT MEVISUALSTUDIO Ctrl+K+F
Format selection to code formatting settings
Ctrl+Shift+T
Transpose word to right of cursor; makes b=a out of a=b if cursor was in front of a
Ctrl+T
Transpose character left and right of cursor; cursor between ab would make ba
Shift+Alt+T
Transpose line: Move line below cursor up and current line down. IntelliSense and Code Helper
Ctrl+Space
Autocomplete word from completion list (or alt+right arrow)
Ctrl+Shift+SpaceShow Ctrl+Shift+Space Show parameter info Ctrl+F12
Display symbol definition
F12
Display symbol declaration
Ctrl+J
Open IntelliSense completion list
BUILDANDDEBUG
F6 Build solution (or Ctrl+shift+b) Ctrl+Alt+F7 Rebuild solution Ctrl+Break Cancel build process Ctrl+\+E Show error list F9 Toggle breakpoint Ctrl+B Insert new function breakpoint F5 Start debugging F11 Debug / step into F10 Debug / step over Shift+F11 Debug / step out Ctrl+F10 Debug / run to cursor Ctrl+Alt+Q Show Quickwatch window Ctrl+Shift+F10 Set current statement to be the next n ext executed Alt+* (on numeric keyboard) Show nexst statement Ctrl+Alt+E Show Exception dialog box Ctrl+F11 Toggle between disassembly disassembly and user code view Shift+F5 Stop Debugging
112 | P a g e
DISAKOMBINIMETËNEVOJSHMEGJATËPROGRAMIMIT MEVISUALSTUDIO Ctrl+F5 Ctrl+Alt+P Ctrl+Alt+break
Bypass debugger Show attach to process window Break all executing threads
TOOLWINDOWS
Ctrl+/ Put cursor in the find/command box in toolbar Ctrl+K+B Open code snippet manager window Alt+F11 Open macro IDE window Ctrl+K+W Open bookmark window Ctrl+Alt+K Open call hierarchy window Ctrl+Shift+C Open class view window Ctrl+Alt+A Open Command window Ctrl+Shift+OOpen Ctrl+Shift+O Open Output window Ctrl+Shift+E Open Resource view window Ctrl+Alt+S Open Server explorer window Ctrl+Shift+L Open Solution explorer window Shift+Esc Close Find & Replace Window
113 | P a g e
FJALËTKYÇETËGJUHËSPROGRAMUESEC# Fjalet Kyçe te Gjuhes Programuese C# abstract
explicit
namespace
as
extern
new
base
false
null
bool
object finally
stackalloc static string struct
break
fixed
operator
byte
float
out
case
for
out (generic modifier)
throw
override
true
catch foreach char
goto
checked
if
class
implicit
const in continue decimal default delegate do double else enum event
switch this
try params private
typeof
protected
uint
public
ulong
in (generic modifier)
unchecked readonly
int
ref
unsafe
interface
return
ushort
sbyte
using
internal
virtual
is
sealed
lock
short
void
long
sizeof
volatile whil
Fjale t kyçe jane Fjale jane te te paracaktuara, te te cilat kane kane kuptime te te veçanta pe pe r pe pe rpiluesin rpiluesin (compiler).
114 | P a g e