Şərt operatoru

Buraya qədər yazdığımız proqramlarda biz xətti alqoritmlərdən istifadə etdik. Yəni proqramlarımızdakı əməliyyatlar ardıcıl şəkildə icra olundular. Lakin proqramlaşdırmada budaqlanma alqoritmlərindən də istifadə olunur. Başqa sözlə desək, proqramın icra olunma istiqaməti verilmiş şərtin yerinə yetirilib yetirilməməsindən asılı olaraq dəyişə bilir. Bunun üçün Python dilində if-else şərt operatoru nəzərdə tutulmuşdur.

if-else şərt operatorunun standart yazılış forması aşağıdakı kimidir:

if şərt:
    ifadə1
else:
    ifadə2

Bildiniyiniz kimi ingiliscə if sözü əgər, else isə əks halda kimi tərcümə olunur. Burada şərt kimi istənilən məntiqi ifadə istifadə oluna bilər. Şərtdən sonra operator başlığının sonunu bildirmək üçün iki nöqtə (:) qoyulmalıdır, bu simvol həmçinin else operatorundan sonra da yazılmalıdır. Buradakı ifadə1ifadə2 isə istənilən ifadə və ya ifadələr ardıcıllığı ola bilər. Beləliklə yuxarıdakı yazılışı bu cür oxuya bilərik:

Əgər şərt ödənilirsə ifadə1, əks halda ifadə2 icra olunsun.

Python dilinin if-else şərt konstruksiyası ilə bağlı üç önəmli məqamı qeyd edək:

  1. Konstruksiyada iki nöqtə (:) simvolunun yazılması zəruridir. Bu simvol operator başlığı ilə icra olunacaq ifadəni (və ya ifadələr ardıcıllığını) bir-birindən ayırır.
  2. İki nöqtədən sonra gələn sətir aralıqla (indent) verilməlidir. Skript fayllarında bu məsafə standart olaraq dörd boşluq qədər təyin edilmişdir.
  3. İki nöqtədən sonra eyni aralıqla gələn bütün sətrlər verilmiş şərt daxilində icra olunurlar.

İndi isə şərt operatorunu konkret misal üzərində tətbiq edək. Deyək ki, verilmiş tam ədədin cüt və ya tək olduğunu yoxlamaq və bu haqda ekrana məlumat çıxarmaq lazımdır.

Proqramı yazmağa başlamadan öncə gəlin hansı ədədlərin cüt olduğunu müəyyənləşdirək. Bildiyiniz kimi ikiyə qalıqsız bölünən ədədlər cüt ədədlərdir. Başqa sözlə desək ədədi ikiyə böləndə alınan qalıq sıfıra bərabərdirsə, bu ədəd cüt, əks halda tək ədəddir. Xatırlayırsınızsa əvvəlki dərslərimizin birində biz qalıqlı bölmə operatorunu (%) keçmişdik. İndi bu operator bizim işimizə yarayacaq:

>>> a=int(input("Ədədi daxil edin:"))
Ədədi daxil edin:78
>>> if a % 2 == 0:
	   print("Cüt")
else:
	   print("Tək")

	
Cüt
>>>

Nə baş verdi? Əvvəlcə biz istifadəçinin input() funksiyası ilə daxil etdiyi qiyməti int() funksiyasından istifadə edərək bir-başa int tipinə çevirdik və a dəyişəninə mənsub etdik. Bundan sonra bu dəyişənin qiymətini ikiyə böləndə qalığının sıfır olub-olmadığını if-else şərt operatorunun köməyilə yoxladıq. Əgər qalıq sıfıra bərabərdirsə print() funksiyası ilə ekrana Cüt, deyilsə Tək məlumatını çıxardıq. Bu qədər sadə.

Keçək başqa bir misala. Azərbaycanın paytaxtının hansı şəhər olduğunu soruşan proqram tərtib edək. Düzgün cavab verəni alqışlayaq, səhv edəni də öyrədək. Gəlin bu proqramı skriptdə yazaq. Bunu necə etməyi artıq bilirsiniz:

sual = "Azərbaycanın paytaxtı hansı şəhərdir? "
cavab = input(sual)
if (cavab == "Bakı") or (cavab == "bakı"):
    print("Təbriklər! Cavabınız doğrudur.")
else:
    print("Təəssüflər! Cavabınız yanlışdır.")
    print("Doğru cavab: Bakı.")

Bu proqramı icra etmədən öncə gəlin onu incələyək. Burada biz əvvəlcə sual dəyişəninə vermək istədiyimiz sualı mənimsətdik. Sonra istifadəçinin klaviaturdan daxil etdiyi cavabı cavab dəyişənində yadda saxladıq. Bundan sonra isə cavab dəyişəninin qiymətini həqiqi cavabla müqayisə etdik və bu müqayisənin nəticəsindən asılı olaraq ekrana müvafiq məlumatlar çıxardıq.

Burada daha bir neçə məqama diqqətinizi cəlb etmək istəyirəm. Proqramdan da gördüyünüz kimi, biz şərt kimi mürəkkəb məntiqi ifadədən istifadə etdik. Bunu ona görə etdik ki, istifadəçi şəhər adını daxil edərkən ilk hərfi kiçik də yaza bilər. Burada məntiqi birləşdirici (məntiq operatoru) kimi or  (və ya) operatorundan istifadə etdik. Və biz burda sadə ifadələri mötərizə daxilində yazdıq. Əslində buna məcbur deyildik, sadəcə mürəkkəb ifadə bizim üçün daha aydın olsun deyə bunu etdik. 

Daha bir məqam isə else: operatorundan sonra iki ifadənin icra olunmasıdır. Xatırlayırsınızsa yuxarıda qeyd etmişdik ki, iki nöqtədən sonra eyni aralıqla gələn bütün sətrlər verilmiş şərt daxilində icra olunurlar. Eyni qayda if (şərt): operatorundan sonra eyni aralıqla gələn sətrlər üçün də keçərlidir.

Proqramı icra edin və suala doğru və yanlış cavablar verərək nəticələri yoxlayın.

Zəncirli cib saatı

   Ələsgərin babasından yadigar zəncirli cib saatı var. Bu saat hər saatın tamamında saatın göstəricisinə uyğun olaraq zəng çalır. Məsələn, saat 5-də beş dəfə, saat 10-da on dəfə zəng çalır. Hər saatın yarısında isə 1 dəfə zəng çalır.

zencirli_cib_saati

   Bir təqvim günü içində başlanğıc və son vaxtı bilməklə bu zaman aralığında ümumi zənglərin sayını hesablayan proqram tərtib edin.

Giriş verilənlərinin formatı

  Tək sətirdə başlanğıc və son vaxt verilir. Vaxtlar boşluqla ayrılmış saat (h) və dəqiqə (m) (0H23, 0M59) formatında verilir.

Çıxış verilənlərinin formatı

   Zənglərin sayını tək sətirdə vermək lazımdır.

Nümunə
Giriş verilənləri Çıxış verilənləri

13 30 15 10

7

   Proqramı özünüz tərtib etməyə çalışın. Əgər alınmasa, aşağıdakı həll ilə tanış olun.

pocket_watch

Cəbiş müəllimin sabunları

   Uzunuzadı dilətutmalardan sonra xanımı Cəbiş müəllimi sabun bişirməyə razı sala bildi. Amma Cəbiş müəllim ortaya belə bir şərt qoydu. Sabunlar üç cür qablaşdırmada satılacaq. İçində 100 sabun olan paketin qiyməti 100 manat, 20 sabun olanın qiyməti 30 manat və 1 sabun isə manatdan satılacaq.

soap

   Sizcə n ədəd belə sabun almaq üçün ən azı nə qədər pul sərf etmək lazımdır?

Giriş verilənlərinin formatı

  Tək sətirdə sabunların sayı olan n ədədi ədədi verilir.

Çıxış verilənlərinin formatı

   Tələb olunan ən az məbləği tək sətirdə vermək lazımdır.

Nümunələr
Giriş verilənləri Çıxış verilənləri

25
123
77

40
136
100

   Proqramı özünüz tərtib etməyə çalışın. Əgər alınmasa, aşağıdakı həll ilə tanış olun.

cebis_muellim