Instruksione shtesë për funksionet

Ne përmendëm se ekzistojnë disa mënyra për të shkruar funksione në Python, dhe se funksionet që kemi shkruar dhe përdorur deri më tani kanë formën më të thjeshtë. Funksione të tilla janë, për shembull, move (), turn_left (), turn_right (), pick_ball () dhe drop_ball () nga Biblioteka Karel, si dhe funksionet back (), take_at_in сосеuese_square () dhe go_to_neighboriz_nonempty_square (), të cilat i kemi shkruar vetë. Të gjitha këto funksione kryejnë një punë specifike, gjithmonë në të njëjtën mënyrë.

Funksionet mund të shkruhen në mënyrë që në ekzekutime të ndryshme ata jo gjithmonë të bëjnë të njëjtën gjë saktësisht, por ata kryejnë një detyrë pak më të përgjithshme. Kur i quajmë funksione të tilla, u themi atyre saktësisht se si duam që ata të kryejnë detyrën e tyre. Për shembull, një funksion që do të lëvizte Karel për një numër të caktuar të kutive përpara ose prapa mund të jetë shpesh i dobishëm. Për këtë funksion, ne duam të specifikojmë kërkesën kur e thërrasim atë - sa kuti Karel duhet të lëvizë dhe në cilën anë.

Funksionet me parametra

Informacioni shtesë që ne i japim një funksioni shkruhet midis kllapave pas emrit të funksionit në rreshtin e parë të përkufizimit të tij. Midis kllapave mund të specifikojmë një vlerë, ose vlera të shumta të ndara me presje. Këto vlera quhen arguments ose parameters në një funksion. Fjalët “argumente” dhe “parametra” janë sinonime në programim dhe ne do t’i përdorim ato në mënyrë të barabartë.

Funksioni që lëviz Karel numër të caktuar të shesheve përpara ose prapa, mund të emërtohet go dhe ai mund të ketë një parametër të plotë. Nëse ky parametër është pozitiv, Karel do të lëvizë atë shumë sheshe përpara, dhe nëse është negativ, Karel do të kthejë një numër korrespondues (të kundërt) të shesheve përsëri. Për shembull, thirrja go (5) do të thoshte “shkoni 5 sheshe përpara”, ndërsa go (-2) do të thoshte “shkoni 2 sheshe mbrapa”. Ja se si mund të shkruajmë një funksion të tillë:

Ky funksion mund te thjeshtojë shumë programe që supozohet ti tregojnë të lëvizë disa herë një rrugë në disa drejtime. Shembull:

Performoni lëvizje të specifikuara

Karel ndodhet në kutinë fillestare të një shtegu me një gjatësi të mjaftueshme, dhe duhet të kryejë zhvendosjet e mëposhtme të topave:

     - 3 topa nga sheshi 3 tek sheshi 4      - 4 topa nga sheshi 5 në sheshin 1

Në zgjidhjen e kësaj detyre ne do të përdorim funksionin e përshkruar go. Për të thjeshtuar më tej zgjidhjen, mund të prezantojmë edhe funksionin displace, i cili zhvendos numrin e specifikuar të topave për një numër të caktuar të shesheve përpara ose prapa. Ky përshkrim tregon se funksioni displace duhet të ketë dy argumente.

Për ta bërë më të qartë qëllimin e secilit parametër, do t’u japim atyre emra që përshkruajnë rolin e tyre:

Funksioni displace përdor funksionin e shkruar më parë go. Thirrja e një funksioni nga një funksion tjetër si kjo mund të shkojë në thellësi aq sa kemi nevojë. Importantshtë vetëm e rëndësishme që çdo funksion të përcaktohet përpara se të thirret për ekzekutim.

Tani që kemi këto dy funksione në dispozicion, zgjidhja e detyrës fillestare është shumë e lehtë:

Please try loading this page in HTML5 enabled web browsers. All the latest versions of famous browsers such as Internet explorer, Chrome, Firefox, Opera support HTML5.

(Karel_functions__displace_balls)

Detyra pëer tu ushtruar

Jepet një numër topash

Shkruani funksionin take_up_to (n), i cili i thotë Karelit të marrë maksimumin e n topave nga kutia në të cilin qëndron. Më saktësisht, nëse ka n ose më shumë topa në kuti, Karel merr n prej tyre, dhe nëse ka më pak topa, Karel merr aq sa mundet.

     Karel, i cili është në kutinë e parë, duhet të marrë deri në 4 topa nga kutia e dytë, pastaj deri në 2 topa nga kutia e tretë, dhe deri në 3 topa nga sheshi i katërt, dhe pastaj të sjellë të gjitha topat e mbledhur në kutinë e parë. Sigurisht, funksioni take_up_to (n), i shkruar në pjesën e parë të detyrës, duhet të përdoret për këtë qëllim.

Please try loading this page in HTML5 enabled web browsers. All the latest versions of famous browsers such as Internet explorer, Chrome, Firefox, Opera support HTML5.

(Karel_functions__take_balls_up_to)

Driving according to instructions

Jepen funksionet face_left_at_intersection () dhe go_left (n).

    - Funksioni face_left_at_intersection () pozicionet Karel për t’u përballur me rrugën e parë që ai haset në anën e majtë. Në ekzekutimin e këtij funksioni, Kareli shkon përpara derisa të hasë në një kuti ku mund të shkojë majtas, por në të vërtetë ai nuk shkon majtas, ai mbetet në kryqëzim në vend të kësaj, kthehet në të majtë. Nëse Karel mund të shkojë majtas para thirrjes së funksionit, ai nuk do të lëvizë nga kutia e tij gjatë ekzekutimit të këtij funksioni, por do të kthehet vetëm në të majtë;     - Funksioni go_left (n) zhvendos Karel një kuti në rrugën n në të majtë. Nëse Karel tashmë është në udhëkryq, rruga në të majtë të tij llogaritet si e para;

    Shkruaj funksione të ngjashme face_left_at_intersection () dhe go_right (n) duke përdorur funksione të dhëna si model.

    Shkruaj një program që (duke përdorur funksionet e dhëna dhe të shkruara) e çon Karelin në rrugën e tretë në të majtë, pastaj të dytin në të djathtë dhe në fund, të dytin në të majtë. Kareli duhet të arrijë në fundin e asaj rruge dhe të marrë topin e vetëm në tryezë.

Please try loading this page in HTML5 enabled web browsers. All the latest versions of famous browsers such as Internet explorer, Chrome, Firefox, Opera support HTML5.

(Karel_functions__travel_instructions_1)