Deklarimet degëzuese

Në mësimet e Karelit, sa herë që donim që Karel të shkonte përpara, duhej të kontrollonim së pari nëse Kareli mund të shkonte përpara. Këto kontrolle ishin të domosdoshme sepse nëse do të përpiqeshim ta lëviznim robotin përpara kur sheshi përpara tij të mos ekzistonte, programi do të raportonte një gabim dhe do të ndalonte së punuari. Për të njëjtën arsye, ne ishim duke kontrolluar nëse kishte ndonjë top në një shesh kuti se ta merrte, dhe ne ishim duke kontrolluar nëse Karel kishte një top me të para se të binte topi.

Në mënyrë të ngjashme, në programet me numra shpesh duhet të krahasojmë dy vlera, d.m.th., për të përcaktuar nëse ato janë të barabarta, nëse njëra është më e vogël se tjetra, e ndryshme nga tjetra dhe të ngjashme. Në varësi të rezultatit të krahasimit, programi mund të vazhdojë të ekzekutohet në mënyra të ndryshme.

Disa nga simbolet e përdorura për krahasim janë të njëjta si në matematikë (për shembull < dhe >) dhe disa jo. Tabela e mëposhtme jep shënimin e të gjitha krahasimeve standarde të përdorura në matematikë dhe në Python (dhe gjithashtu në shumë gjuhë të tjera të programimit).

Math

Python

Meaning

\(а < b\)

a < b

a is less than b

\(a \leq b\)

a <= b

a is less than or equal to b

\(a > b\)

a > b

a is greater than b

\(a \geq b\)

a >= b

a is greater than or equal to b

\(a = b\)

a == b

a is equal to b

\(a \neq b\)

a != b

a is not equal to b

Shënimi \(a <b\) mund të kuptohet si një shprehje, vlera e së cilës është e vërtetë ose e rremë në secilin rast. Këto vlera janë shkruar në Python si True dhe False dhe ato janë konstante logjike, d.m.th., konstante të tipit bool të cilin ne i quajmë lloj logjik. Shprehjet, vlera e të cilave është e vërtetë ose e rremë (lloji logjik) quhen shprehje logjike. Të gjitha shprehjet në tabelën e mësipërme janë shprehje logjike (do të shohim më shumë shprehje logjike më vonë).

Deklarimi if

Deklarimi if ishte futur tashmë në mësimet e Karelit, le të kujtojmë:

Deklarimi if përdoret për të vendosur se cili nga dy grupet e deklaratave për të ekzekutuar. Në Python shkruhet si më poshtë:

Kuptimi (semantika) e deklarimit if:

    Deklarimi shkruar më lart do të thotë: nëse kushti është përmbushur, ekzekutoni statement_a1, … statement_ak, përndryshe ekzekutoni statement_b1, … statement_bm.

    Rregullat e të shkruarit (sintaksë) të deklarimit if

    - Pas fjalës if, është shkruar një shprehje logjike dhe në fund të rreshtit kërkohet karakteri :.     - Në rreshtat e mëposhtëm, të theksuar për të njëjtin numër hapësirash (zakonisht 4), janë shkruar deklarimet që duhet të ekzekutohen nëse shprehja logjike rezulton True. Mund të ketë një ose më shumë me këto deklarime.     - Pas urdhrave që janë ekzekutuar nëse plotësohet kushti, shkruhet fjala else dhe përsëri karakteri :. Fjala else shkruhet në të njëjtin nivel si fjala if.     - Në rreshtat e mëposhtëm, të indentifikuar për të njëjtin numër hapësirash, shkruajini komandat që duhet të ekzekutohen nëse shprehja logjike rezulton në False. Gjithashtu Mund të ketë një ose më shumë nga këto deklarime.

    Deklarimi if quhet edhe thënie degëzuese sepse rrjedhja e ekzekutimit të programit për këtë deklarim degëzon deklarimin tjetër për tu ekzekutuar dhe varet nga vlera e shprehjes logjike aktuale. Prandaj grupet e deklarimeve pas fjalës if ose else quhen edhe degë të deklarimit if.

Në rast se programi nuk ka nevojë të bëjë asgjë kur nuk plotësohet kushti i deklarimit if, d.m.th., kur nuk kemi nevojë për if degë të deklaratës if, mund ta heqim atë:

Ne do ta përdorim këtë formë të shkurtër të deklarimit if më vonë.

Deklarimi if - shembuj dhe ushtrime

Shembull - kush është më i ri:

     Peter dhe Marku duan të luajnë një lojë në pishinë. Ata ranë dakord që lojtari më i ri të luajë i pari. Shkruani një program që lexon moshën e Pjetrit dhe Markut (që nuk janë të barabartë) dhe cili që do të bëjnë lëvizjen e parë.

Shembull - paketim:

     Vezët në fermë janë paketuar në kuti me 10 pako dhe kutitë e plota dërgohen në dyqan. Shkruani një program që merr numrin e vezëve gati për paketim dhe shtypni nëse të gjitha vezët mund të paketohen dhe dërgohen në dyqan, ose nëse disa vezë do të lihen të paketuara përkohësisht.

Këtu duhet të kontrollojmë që numri i vezëve është i ndashëm me 10. Për këtë arsye, ne përdorim operatorin %, i cili jep pjesën e mbetur pas ndarjes. Nëse pjesa tjetër pasi të keni ndarë numrin e vezëve me 10 është e barabartë me zero, të gjitha vezët mund të paketohen dhe dërgohen.

Detyrë - Ana e rrugës:

Numrat e shtëpive janë në anën e djathtë të rrugës dhe numrat e shtëpive të çuditshme në të majtë. Shkruaj një program që merr një numër shtëpie dhe shtyp në cilën anë të rrugës numri është ndezur.

Këtu është e nevojshme të ekzaminohet nëse numri i dhënë është i ndashëm me 2. Detyra është e ngjashme me atë të mëparshme - nëse pjesa tjetër e ndarjes së numrit të shtëpisë së dhënë me 2 është e barabartë me zero, numri është në anën e djathtë të rrugës, përndryshe është në anën e majtë.

Detyrë - kinema:

Ju keni 10 euro me vete. Shkruani një program që merr çmimin e biletave të filmit dhe çmimin e kokoshkave, atëherë shtypni nëse keni para të mjaftueshme si për biletën ashtu edhe për kokoshka.

Shprehjet logjike

Në disa detyra duhet të shprehim kushte më komplekse sesa thjesht të krahasojmë dy vlera. Fjalët and, or dhe no përdoren për të lidhur termat më të thjeshtë, dhe Python përdor pikërisht të njëjtat fjalë për këtë. Ja se si të vlerësohen pohime të tilla komplekse. Nëse a dhe b janë kushte, atëherë:

  • kushti a and b do përmbushen nëse të dyja kushtet a dhe b janë përmbushur;

  • condition a or b çdo përmbushen nëse të paktën njëri kusht a dhe b është i përmbushur;

  • condition not a do të përmbushet nëse kushti a nuk përmbushet (gjë që kemi përmendur tashmë në mësimet për Karelin);

Këto kushte mund të kombinohen më tej në kushte edhe më komplekse sipas nevojave të detyrës. Në kushte komplekse, ne mund të përdorim kllapa për të ndikuar në rendin në të cilin llogariten kushtet (gjithashtu kur nuk jemi të sigurt se cili është urdhri i paracaktuar), dhe ta bëjmë programin më të qartë për njerëzit e tjerë që e lexojnë atë. Nëse nuk ka kllapa në gjendje komplekse, no aplikohet së pari, atëherë and, dhe në fund or.

Shprehje logjike - shembuj

Shembull - vit i brishtë:

     Shkruaj një program që shtyp nëse një vit i caktuar (midis 1800 dhe 2200, përfshirë kufijtë) është i thjeshtë ose i thjeshtë.

     Sipas kalendarit Gregorian, rregullat e mëposhtme përdoren për të përcaktuar nëse një vit është i thjeshtë apo i brishtë:

     - vitet që nuk janë të ndara me 4 (p.sh., 1923, 1070, 2017) janë të thjeshta;      - vitet që janë të ndara me 100 dhe jo me 400 (p.sh. 1700, 1800, 1900, 2100, 2200) janë gjithashtu të thjeshta;      - të gjitha vitet e tjera (p.sh. 1984, 2000, 2012) janë kërcime. Këto janë vite që janë të ndara me 4 dhe jo nga 100, ose janë të ndara me 400.

Duke shkruar këto rregulla në formën e kushteve logjike, marrim:

Ne marrim një zgjidhje po aq të mirë nëse përdorim përshkrimin për vitet e brishtë të dhënë në rregullin 3 (verifikoni duke menduar përmes tij dhe duke provuar të dy programet që kemi marrë të njëjtin rezultat):

Shembull - orët e zyrës:

     Orët e hapjes së një dyqani me suvenire janë nga 7 në 11 në mëngjes dhe nga 17 në 22 në mbrëmje (të konsiderohet se funksionon në 7:00 dhe në 17:00 dhe nuk funksionon në orën 11:00 dhe në 22:00). Peter erdhi nëpër dyqan në orën H orë dhe M minuta. Shkruani një program që merr numrin H (nga 0 në 23) dhe përgjigjet nëse Peter erdhi nëpër dyqan gjatë orarit të punës.

Ne gjithashtu mund të arrijmë në një zgjidhje duke llogaritur gradualisht vlerat logjike, duke përdorur variabla logjike:

Në këtë zgjidhje, vetëm h është variabel integer, dhe të tjerat (at_morning_office_hours, at_evening_office_hours, at_office_hours) janë logjike, që do të thotë që marrin vlera True ose False kur programi ekzekutohet.

Shprehej logjike - pyetje

    Q-24: Lidh shprehjet ekuivalente Provo përsëri!
  • a <= b
  • a < b or a == b
  • a >= b
  • b <= a
  • not (a == b)
  • a < b or a > b
  • not (a != b)
  • a == b

    Q-25: A janë të gjitha kushtet e barabarta me not (7 <= h and h <11)?

  • h < 7 and 11 <= h
  • Jo, kjo gjendje nuk përmbushet për asnjë h.
  • h < 7 or 11 <= h
  • Saktë.
  • not(7 <= h) or not(h < 11)
  • Saktë.
  • h <= 7 or 11 < h
  • Jo, vlera e kushteve ndryshon nëse h është saktësisht 7 ose 1
    Q-26: Lidh kushtet me përshkrimin Provo përsëri!
  • At least one of a, b, c is positive
  • a > 0 or b > 0 or c > 0
  • None of a, b, c is positive
  • a <= 0 and b <= 0 and c <= 0
  • a, b and c are not all positive
  • a <= 0 or b <= 0 or c <= 0
  • a, b and c are all positive
  • a > 0 and b > 0 and c > 0

    Q-27: Qeveria e shtetit po ofron ndihmë për ndërtimin e një qendre sportive. Vendbanimet me deri në 10,000 banorë kanë të drejtë të aplikojnë, si dhe vendbanime me më shumë se 10,000 banorë dhe të ardhura mesatare deri në 2000. Cila nga kushtet kontrollon saktë nëse mund të aplikojë një zgjidhje?

  • (population <= 10000) or (population > 10000 and income <= 2000)
  • Saktë.
  • population <= 10000 or income <= 2000
  • Saktë.
  • population <= 10000 and income <= 2000
  • Gabim.
  • (income <= 2000) or (income > 2000 and population <= 10000)
  • Saktë.

Shprehje logjike - detyra

Detyrë - numra sipas radhës:

Shkruaj një program që merr numrat e plotë a, b, c dhe i përgjigjet pyetjes nëse këta numra janë dhënë në mënyrë që nga më i vogli te më i madhi.

Detyrë - Numri mesatar:

Shkruaj një program që merr numrat e plotë a, b, c dhe i përgjigjet pyetjes nëse b është me madhësi mesatare.

Task - vëzhgo qenin:

Anna dhe Marku jetojnë së bashku dhe kanë një qen të quajtur Bobby. Të dy janë planifikuar të udhëtojnë në të njëjtin muaj, Anna nga dita a1a2, dhe Marku nga dita m1m2. Të dy largohen në mëngjes dhe kthehen në mbrëmje. Meqenëse nuk duan ta lënë Bobby-in vetëm, ata pyesin nëse udhëtimet e tyre mbivendosen.

     Shkruani një program që merr numrat e plotë a1, a2, m1 dhe m2 dhe përgjigjet në pyetjen nëse udhëtimet e Anës dhe Markut mbivendosen.

Ndihmë: udhëtimet mbivendosen nëse Marko largohet para se Ana të kthehet (dita e nisjes së Markut është më pak se ose e barabartë me ditën e kthimit të Anas) ose anasjelltas - nëse Ana largohet para se të kthehet Marko.