Page 62 - Demo
P. 62
TEMATIKA 2 ALGORITMIKA DHE PROGRAMIMINjë dështim në procesin e vlerësimit e vështirëson shkrimin e programit në kod. Sa më e qartë dhe e plotë të jetë zgjidhja e dhënë nga algoritmi, aq më shumë shanse ka që kodimi të shkruhet shpejt e qartë dhe të funksionojë saktë për çdo hyrje të mundshme. Testimi i kodeve Qëllimi i kësaj faze është gjetja e gabimeve. Kjo fazë është tejet e rëndësishme për të garantuar cilësinë e programit. Dështimi i saj shpesh mund të sjellë edhe dëme kolosale, veçanërisht për projekte me shumë kosto kohore apo monetare. Dimë që gabimet në kod mund të jenë sintaksore (të cilat vihen re gjatë përpilimit) ose logjike. Në rast të gabimeve logjike nuk ndalohet ekzekutimi i programit, por ai prodhon një vlerë të gabuar. Por si mund të kontrollojmë në përgjithësi saktësinë e programit? Ekzistojnë dy metoda kryesore për këtë.1. Analiza matematikore. Ndërtohet një vërtetim matematikor formal se algoritmi funksionon si zgjidhje për problemin, nëse merr vlera të vlefshme në hyrje. Në mungesë të një vërtetimi të tillë, algoritmi mund të vlerësohet thjesht si një përpjekje për zgjidhje, që mundet ose jo të na japë rezultatin e pritur. Matematikisht, një problem i mirëpërcaktuar përkufizohet si një bashkësi prej 3 palësh P = (I, O, R), ku I përbën hyrjet e përcaktuara të lejuara, O është përcaktimi i daljeve të mundshme dhe R është përcaktimi i lidhjes së dëshiruar mes hyrjes dhe daljes, shprehur me një funksion. Një algoritëm për zgjidhjen e problemit P quhet plotësisht i saktë, n.q.s. për të gjitha hyrjet i I, ai përfundon dhe prodhon një vlerë të saktë o O. Një algoritëm për zgjidhjen e problemit P është pjesërisht i saktë nëse për të gjitha hyrjet i I , vetëm n.q.s. programi përfundon, atëherë ai prodhon vlera të sakta dalje o O.2. Prova eksperimentale: Është e rëndësishme që programi të ekzekutohet me bashkësi të shumta hyrjesh. Madje, një pjesë e madhe e testeve që do të kryhen, duhet të planifikohen që kur projektohet algoritmi. Debugger është një nga mjetet më të rëndësishme të programit për lokalizimin e gabimeve logjike. Programi duhet testuar për vlefshmërinë e të dhënave në hyrje, si p.sh. vlera të ndryshme (0 për pjesëtim, negative për rrënjë katrore) apo lloje të ndryshme (jepet numër me presje në vend të një numri të plotë, një gërmë në vend të një numri). Po ashtu duhet kontrolluar edhe për saktësinë e rezultatit për secilën prej këtyre hyrjeve. Një program i mirë arrin të administrojë suksesshëm situatën pavarësisht çdo hyrjeje. Sidoqoftë, sado prova të mund të kryhen (veçse nëse ka një numër të fundëm të kufizuar vlerash hyrjeje), testimi nuk mund të sigurojë kurrë 100% saktësinë e rezultatit për të gjitha rastet.Shembull: Le të shohim pseudokodin për shumëzimin e a-së me b-në, pa ndihmëne operatorit. Caktojmë si bashkësi të hyrjeve I kushtin që a dhe b duhet të jenë numra të plotë. Vërejmë se nëse b është negative rezultohet në një cikël të pafundëm. Pra, kusht që algoritmi të jetë plotësisht i saktë, është që hyrja a të bëjë pjesë në numra të plotë realë Z, por b duhet të bëjë pjesë në bashkësinë e numrave të plotë natyrorë N. Përndryshe, nëse b lejohet të bëjë pjesë në Z, algoritmi quhet pjesërisht i saktë, pasi ekziston mundësia të mos përfundojë kurrë. Në mënyrë eksperimentale ky algoritëm mund të provohej me disa hyrje të a dhe b, ndër të cilat vlera pozitive, zero dhe negative. Pas çdo gabimi të gjetur realizohet korrigjimi i kodit, duke rishkruar kodin ose duke shtuar përcaktime të tjera shtesë, të cilat nuk ishin parashikuar në fazën e projektimit të algoritmit.SHUMËZO (a, b)1. x← 02. y←b3. while y ≠ 0 do4. x < x + a5. y← y –16. return xFig. 360

