Uzun il

   Bildiyiniz kimi hazırda istifadə etdiyimiz təqvim Qriqori təqvimidir. Bu təqvimə görə üç il ard-arda Fevral ayı 28 gün, dördüncü il isə 29 gün olur. Beləliklə qısa il 365, uzun il isə 366 gündən ibarət olur. Bunun səbəbi Yer planetinin Günəş ətrafında tam dövretmə vaxtının, yəni astronomik ilin təxminən 365,25 gün (365 gün və 6 saat) olmasıdır. Həmin bu 6 saatlıq fərq hər 4-cü ildə toplanaraq əlavə 1 gün əldə edilir və həmin il uzun il elan olunur.

Leap-Year

Aşağıda uzun ili təyin etməyin qaydası göstərilmişdir:

  1. Əgər il 4-ə bölünmürsə, adi ildir.
  2. Əks halda ilin 100-ə bölünməsini yoxlamaq lazımdır.
  3. Əgər bölünmürsə, deməli bu yüzillik deyil və nəticə etibarilə uzun ildir.
  4. Yox əgər il 100-ə bölünürsə, deməli bu yüzillikdir və onun 400-ə bölünməsini yoxlamaq lazımdır.
  5. Əgər il 400-ə bölünürsə, uzun ildir.
  6. Əks halda adi ildir.
year = int(input()) 

if (year % 4) == 0: 
    if (year % 100) == 0: 
        if (year % 400) == 0: 
            print("uzun ildir") 
        else: 
            print("uzun il deyildir") 
    else: 
        print("uzun ildir") 
else: 
    print("uzun il deyildir")
Nümunələr
Giriş verilənləri Çıxış verilənləri

2017
2020

uzun il deyildir
uzun ildir

 

Ədədin sadəliyinin yoxlanılması

   Bildiyiniz kimi sadə ədədlər yalnız birə və özünə bölünən ədədlərdir. Məsələn 3 ədədi sadə ədəddir, çünki ancaq 1 və 3 ədədlərinə bölünür. 4 ədədi isə mürəkkəb ədəddir, çünki 1 və 4 ədədlərindən başqa həm də 2 ədədinə bölünür.

   Ədədin sadə olub-olmadığını tapmaq üçün bir neçə alqoritmdən istifadə olunur. Bu dərsimizdə biz bölünənlərin götürülməsi alqoritmini nəzərdən keçirəcəyik. Bölünənlərin götürülməsi alqoritmində verilmiş natural ədəd 2-dən başlayaraq öz kvadrat kökünə qədər (daxil olmaqla) bütün tam ədədlərə bölünür. Əgər bu bölənlərdən heç olmazsa biri verilmiş ədədi qalıqsız bölürsə, deməli baxılan ədəd mürəkkəb ədəddir. Yox əgər verilmiş ədəd göstərilən aralıqdakı ədədlərə qalıqlı bölünürsə, deməli baxılan ədəd sadə ədəddir.

from math import sqrt
 
n = int(input())
 
if n < 2:
    print("Ədəd 1-dən böyük olmalıdır!")
elif n == 2:
    print("Sadə ədəd")
else:
    limit = int(sqrt(n))
    i = 2
    m = True
    while i <= limit:
        if n % i == 0:
            print("Mürəkkəb ədəd")
            m = False
            break 
        i += 1 
    if m:
        print("Sadə ədəd")

Proqram icrasının nümunələri:

1
Ədəd 1-dən böyük olmalıdır!
17
Sadə ədəd
196
Mürəkkəb ədəd

 

Proqramçı Olmaq İstəyənlərə Tövsiyələr

   Bu gün ən prestijli və ən çox qazandıran ixtisaslardan biri, bəlkə də birincisi proqramlaşdırmadır. Bu faktdan xəbərdar olan bir çox insan həvəsə gəlib proqramçı olmaq istəyir. Əlbəttə ki, hər bir işə başlamaq üçün həvəs yaxşı motivatordur, lakin uğur qazanmaq və müvəffəq olmaq üçün kifayət deyil. 

Proqram_Yazmaq

   Bu günkü məqaləmizdə biz məsələyə daha konseptual yanaşacaq və proqramçı olmaq istəyənlərə dəyərli tövsiyələr verəcəyik.

Nə və niyə

   Proqramçı olmaq arzusuna düşənlərin ilk işi bu iki suala cavab tapmaq olmalıdır. Nə və niyə? Proqramlaşdırma nədir və mən niyə proqramçı olmaq istəyirəm? Sözsüz ki, hər bir insan seçəcəyi ixtisasın mahiyyətini dərk etməlidir. Proqramlaşdırma nədir, onun özünəməxsusluğu nədən ibarətdir, hansı çətinlikləri vardır? Bu suallara cavab tapmaq üçün ilk öncə özünüz araşdırmalı və daha sonra peşəkar proqramçılarla görüşməlisiniz. Yalnız bundan sonra özünüzə mən niyə proqramçı olmaq istəyirəm sualını verə bilərsiniz. Bax bu zaman vicdanınız qarşısında tam səmimi olmalısınız. Əgər cavabınız çoxlu pul qazanmaqdırsa, siz ən yaxşısı tacir olmağı seçin. Çünki proqramlaşdırma bir həyat tərzidir, fərqli bir dünyadır. Ona aşiq olmadan bu yolun yolçusu olunmaz. Əgər cavabınız proqramlaşdırma mənim düşüncə və həyat tərzimə uyğundur, mən özümü onda görürəm olsa, bax bu başqa məsələ. Demək ki, Siz proqramçı olmaq üçün doğulmusunuz… 

Doğru yol və sağlam cığır

   Bəs proqramçı olmaq üçün nə etmək lazımdır? Uzaq və yaxın məqsəd nədir? Nədən və necə başlamalı? Hansı proqramlaşdırma dilini öyrənməli, hansı kitabları oxumalı, hansı kurslara getməli? Növbəti mərhələdə bu suallara cavab tapmalısınız. 

   Proqramçı olmağa qərar verəndən sonra sizə bir neçə yol görünəcək. Siz doğru yolu seçməlisiniz. Məqsədə çatmaq üçün çox yollar vardır, amma bu şəxsdən şəxsə dəyişir. Hansı yolun Sizin üçün doğru olduğuna isə yalnız özünüz qərar verə bilərsiniz. Bunun üçün hansı sahədə proqramlaşdıracağınızı özünüz üçün müəyyənləşdirin. Sahələr çox müxtəlifdir: tətbiqi, sistem, mobil, web, oyun və s. Seçəcəyiniz sahə sizin yolunuzu müəyyənləşdirəcək, bu da öz növbəsində uzaq məqsədinizin nə olduğunu aydınlaşdıracaq.

   Doğru yolu təsbit etdikdən sonra sizi o yola götürən sağlam bir cığırı tapmaq lazımdır. Başqa sözlə desək yaxın məqsədləri müəyyən etməlisiniz. Yaxın məqsədlər isə proqramlaşdırma məntiqinə və alqoritm anlayışına sahib olmaqdır. Bunun üçün ən sadə proqramlaşdırma dilindən başlamaq məsləhətdir. Bu Python ola bilər.

Kitab seçimi

   Kitab seçimi çox önəmlidir. Elə bir kitabı seçməlisiniz ki, Sizi yarıyolda qoymasın. Sizin ilk proqramlaşdırma kitabınızın dili çox sadə və özü də əyləncəli olmalıdır. Mütləq özü öyrənənlər və yeni başlayanlar üçün nəzərdə tutulan kitablardan istifadə edin.

Özüm öyrənim yoxsa kursa gedim

   Asan olmasa da özünüzün öyrənməyiniz mümkündür. Bunun üçün Sizə iradə, nizam-intizam və səbr lazımdır. Əlbəttə kursa getməklə təkbaşına öyrəndiklərinizi daha qısa zamanda öyrənə bilərsiniz. Kursa getməyə imkanınız yoxdursa, yenə də üzülməyin. Çox yaxşı onlayn kurslar da mövcuddur, həm də pulsuz.

Təcrübə, təcrübə, təcrübə

   Proqramlaşdırmanı yaxşı öyrənmək üçün bu işin nəzəriyyəsini, fundamental əsaslarını və konsepsiyasını çox yaxşı bilməlisiniz. Proqramlaşdırmanı yaxşı bacarmaq üçün isə bol-bol praktika lazımdır. Neçə ki, yaxşı piano çalmaq üçün çoxlu piano çalmaq lazımdır. Eləcə də yaxşı proqram yazmaq üçün çoxlu proqram yazmaq lazımdır. Uzun sözün qısası daima proqramlaşdırma məntiqinizi inkişaf etdirməli və alqoritm tərtib etmək bacarığınızı təkmilləşdirməlisiniz. Bunun üçün müxtəlif çətinlik dərəcəli məsələləri həll edin, fərqli və optimal həll yollarını axtarın, eksperimentlər etməkdən çəkinməyin. Əlavə olaraq müxtəlif proqramlaşdırma yarışlarında iştirak edin. Bütün bunlar həm sizin təcrübənizi, həm də özünüzə inamınızı artıracaq.

Əlavə resurslar

   Bir tərəfdən proqramlaşdırın, digər tərəfdən də öyrənməyə davam edin. Forumlara üzv olun, bloqları izləyin, video-dərslərə baxın. Bir sözlə daim araşdırın və əlavə resurslardan hər zaman istifadə edin. Bu şəkildə biliklərinizi daha da zənginləşdirmiş olacaqsınız.

Bir mürşidiniz olsun

   Həyatda tanıdığınız (real və ya virtual) ən azı bir peşəkar proqramçı olsun. Rahat sual verə bildiyiniz, məsləhətini aldığınız, sizə yol göstərən bir proqramçı. Amma siz onu hər sıradan suallarınızla bezdirməyin. Əvvəlcə özünüz araşdırın, sualınıza cavab tapa bilməsəniz bir də araşdırın. Araşdırmanız nəticəsiz qalsa, bir daha araşdırın. Yalnız 3-cü uğursuz cəhddən sonra mürşidinizdən soruşun.

Bildiklərinizi paylaşın

   Biliklər paylaşdıqca artar. Bu qızıl qaydanı unutmayın. Siz də öz bildiklərinizi bu yolun yolçuları ilə bölüşün. İnanın bunun sizə də faydası olacaq. Bilikləriniz həm yenilənəcək, həm də canlı qalacaq.

Günün nəbzini tutun

   Proqramlaşdırma ilə bağlı hər şeyi izləyin, dəyişiklik və yeniliklərdən xəbərdar olun. Unutmayın ki, proqramlaşdırma dilləri də gün keçdikcə inkişaf edir, daha da zənginləşir.

Layihələr 

   Nəzəri biliklər və müəyyən dərəcədə praktiki vərdişlər əldə etdikdən sonra layihələrə başlaya bilərsiniz. İlkin olaraq kiçik layihələrdən başlamağınız məsləhətdir. Unutmayın məsələ layihənin kiçikliyində böyüklüyündə deyil. Əsas odur ki, başladığınız işi yarımçıq qoymayasınız. Hətta ən kiçik layihəni belə inkişaf etdirərək kifayət qədər ciddi proqram məhsulu halına gətirmək mümkündür. Burada əsas prosesin özüdür. Layihə boyunca qarşılaşdığınız problemləri anlamaq, onların həll yollarını tapmaq, bu həllərdən optimal olanını seçmək, addım-addım layihənin qarşınızda şəkillənməsi, onun təkmilləşdirilməsi… Bütün bunlar sizə tərifolunmaz həyəcan verəcək, zövq yaşadacaq.

Startuplar 

   Artıq bir neçə müstəqil layihəniz olduqdan sonra startup komandalarına da qoşula bilərsiniz. Bu həm sizə təcrübə qazandıracaq, həm komanda ruhu aşılayacaq, həm də əgər bəxtiniz gətirsə pul qazandıracaq.

Təcrübə proqramları

   Müəyyən səviyyəyə gəldikdən sonra hökmən şirkətlərin elan etdiyi pullu və ya pulsuz təcrübə proqramlarına qoşulun. Gələcək karyeranız adına bu çox uğurlu bir başlanğıc ola bilər. Bu zaman həm real təcrübə qazanar, həm də CV-nizə fəxrlə bir referans əlavə etmiş olarsınız. Hətta bəxtiniz gətirsə, təcrübə keçdiyiniz şirkət sizə real iş təklifi də edə bilər.

Beynəlxalq sertifikatlar

   Əsas bilik və bacarıqlardır, sertifikat o qədər də vacib deyil. Bu fikir əsasən doğrudur. Amma bilik və bacarıqları əldə etdikdən sonra bir də beynəlxalq sertifikatlar əldə etmək sizin peşəkarlığınızın real göstəricisi ola bilər. Şirkətlərə iş müraciətlərində, eləcə də müqavilə şərtlərində bu sertifikatların təsiri çox böyükdür. Digər tərəfdən sertifikat imtahanlarına hazırlaşarkən biliklərinizi sistemləşdirmiş olacaqsınız.

İşə düzəlmə

   Proqramlaşdırma peşəkar fəaliyətdir. Proqramçı olmaq arzusu ilə çıxdığınız bu yolun bir mənzili, məntiqi nəticəsi olmalıdır. Bu da təbii ki, işə düzəlməkdir. Uğurlu karyera qurmaq üçün bura qədər verdiyimiz məsləhətlərə hərfiyyən əməl etməlisiniz. Yalnız bu təqdirdə iş müsahibələrində özünəinamınız güclü olacaq. Öz imkanlarınızı layiqincə qiymətləndirin və iş təkliflərinə praqmatik yanaşın. Sizə uğurlar!

Onluq say sistemindən ikilik say sisteminə keçid

   Nəzərinizə çatdıraq ki, əslində Python proqramlaşdırma dilində verilmiş ədədin onluq say sistemindən ikilik say sisteminə çevrilməsi üçün bin() adlı funksiya nəzərdə tutulmuşdur:

>>> bin(5)  
'0b101'
>>> bin(10) 
'0b1010'
>>>

  Bu dərsimizdə sözügedən çevrilmənin alqoritmini nəzərdən keçirəcəyik. Onluq say sistemindəki ədədi ikilik say sisteminə çevirmək üçün 2-yə bölünmələrdən əldə olunan qalıqları tapmaq lazımdır. Bu zaman öncəki addımda tam bölmədən əldə olunan qismət sonrakı addımda bölünən rolunda çıxış edir. Bölmə əməliyyatı bölünən ədəd sıfıra çevrilənə qədər davam etdirilir. Alınmış qalıqları sondan əvvələ doğru ardıcıllıqla yazmaqla  onluq ədədin ikilik say sistemindəki yazılışını əldə edirik.

   Gəlin 10-luq say sistemindəki 8 ədədini 2-lik say sisteminə çevirək:

  • 8 / 2 = 4, qalıq 0
  • 4 / 2 = 2, qalıq 0
  • 2 / 2 = 1, qalıq 0
  • 1 / 2 = 0, qalıq 1
  • 0 – bölmənin sonu
  • Nəticə: 10002

   Alqoritmi proqramlaşdırma dilində tərtib edərkən alınan qalıqları bir araya toplamaq üçün sətir tipli dəyişəndən istifadə edə bilərsiniz.

n = int(input())
b = ''

while n > 0:
    b = str(n % 2) + b
    n = n // 2
 
print(b)

Proqram icrasının nümunələri:

8
1000
11
1011

Binar axtarış alqoritmi

  Proqramlaşdırmada verilmiş bir qiymətin massiv daxilində olub-olmadığını, varsa neçənci mövqedə yer aldığını müəyyən etmək üçün bir sıra axtarış alqoritmlərindən istifadə olunur. Binar (ikili) axtarış belə alqoritmlərdən biridir, və o sıralanmış massivlərdə axtarış aparmaq üçün nəzərdə tutulmuşdur.

Alqoritmin izahı

  1. Əvvəlcə massivin orta elementi tapılır. Bunun üçün ilk və son elementlərin indeksləri dəyişənlərə mənsimsədilir, orda elementin indeksi isə hesablanır.
  2. Axtarılan qiymət orta elementin qiyməti ilə müqayisə edilir. Əgər axtarılan qiymət orta elementin qiymətindən böyükdürsə, aşağı sərhəd orta elementin bir element sağına sürüşdürülür və sonrakı axtarış massivin sağ tərəfində aparılır. Əgər axtarılan qiymət orta elementin qiymətindən kiçikdirsə, yuxarı sərhəd orta elementin bir element soluna sürüşdürülür və sonrakı axtarış massivin sol tərəfində aparılır. Əgər bərabərlik qeydə alınarsa, axtarış dayandırılır.
  3. Massivin orta elementi yenidən, amma bu dəfə seçilmiş yarı hissədə tapılır. Yuxarıdakı alqoritm cari yarı hissə üçün təkrarlanır.

Alqoritmin kodu

   Proqramda massivin elementləri təsadüfi qaydada verilmişdir. Bunun üçün random modulundan randint() funksiyası çağırılmışdır. Lakin istəsəniz massivin elementlərini klaviaturdan da daxil edə bilərsiniz. Massiv meydana gətirildikdən sonra sort() funksiyası vasitəsilə elementlər azdan çoxa doğru sıralanır.

from random import randint

mas = []
for i in range(15):
    mas.append(randint(1, 50))
mas.sort()
print(mas)
 
value = int(input())
mid = len(mas) // 2
low = 0
high = len(mas) - 1
 
while mas[mid] != value and low <= high:
    if value > mas[mid]:
        low = mid + 1
    else:
        high = mid - 1
    mid = (low + high) // 2
 
if low > high:
    print("Qiymət tapılmadı")
else:
    print("ID =", mid)

Proqram icrasının nümunələri:

[6, 9, 13, 16, 22, 23, 24, 28, 28, 29, 32, 34, 34, 35, 44]
48
Qiymət tapılmadı
[3, 11, 17, 20, 31, 33, 38, 38, 39, 42, 43, 44, 44, 46, 50]
20
ID = 3

 

Fərqli adlar

  Proqramçı Famil uşaq vaxtlarında statistikaya da böyük maraq göstərirdi. Hələ məktəbdə oxuyarkən ağlına müxtəlif suallar gəlirdi. Bu suallara cavab tapmaq üçün proqramlaşdırma bacarıqlarından istifadə edirdi. Günlərin bir günü Famili belə bir sual maraqlandırmağa başladı. Görəsən, siniflərdə neçə müxtəlif adam adı vardır?

school_children

Giriş verilənlərinə nümunə:

Kərim Anar Səbinə Anar Fuad Sevinc Səbinə Anar

   Çıxış verilənlərinə nümunə:

Kərim Anar Səbinə Fuad Sevinc

   Proqramı özünüz tərtib etməyə çalışın. Dublikatları ixtisar etmək üçün bir funksiya təyin edin. Alınmasa, Familin həlli ilə tanış ola bilərsiniz:

unique_names

Üçbucağın sahəsi (Heron düsturu)

   Aşağıdakı proqram üçbucağın sahəsini Heron düsturu ilə tapmaq üçün tərtib olunmuşdur:

import math 

a=float(input('a-nı daxil edin: ')) 
b=float(input('b-ni daxil edin: ')) 
c=float(input('c-ni daxil edin: ')) 
s=(a+b+c)/2
area=math.sqrt(s*(s-a)*(s-b)*(s-c)) 
print('Üçbucağın sahəsi: {:.2f}'.format(area))

   Biz burada sqrt() funksiyasından istifadə etmək üçün standard modullardan olan math modulunu daxil etməliyik.

Mənimsətmə operatorları

   Biz indiyə qədər mənimsətmə əməliyyatlarında = operatorundan istifadə edirdik. Bu əsas mənimsətmə operatorundan başqa Python proqramlaşdırma dilində digər mənimsətmə operatorları da var. Aşağıdakı cədvəldə sadalanan bu operatorlar müəyyən mənimsətmə əməliyyatları zamanı sintaksisi sadələşdirmək üçün istifadə olunur:

Operator İstifadə Ekvivalent
+= a+=2 a=a+2
-= a-=2 a=a-2
*= a*=2 a=a*2
/= a/=2 a=a/2
//= a//=2 a=a//2
%= a%=2 a=a%2
**= a**=2 a=a**2

   Gəlin bu operatorlardan birini təcrübədə tətbiq edək. Aşağıdakı proqram 1-dən 100-dək ədədlər içərisində 3-ə bölünənlərin sayını və onların cəmini tapıb ekrana çıxarır:

>>> k=s=0  
>>> for i in range(3, 100, 3):
        k+=1
        s+=i

>>> print(k, s) 
33 1683
>>>

   Proqramdakı k+=1s+=i ifadələrinin nəyə ekvivalent olduqlarını aydınlaşdırın.