Məzmuna keç
Educora
Orta8-ci sinif22 dəq29 / 59

Proqramlaşdırma dilləri və Python: dəyişənlər, daxiletmə və xaricetmə

Proqram və proqramlaşdırma dili nədir, translyator (interpretator və kompilyator) necə işləyir; Python-da dəyişənlər, `int(input())` ilə daxiletmə, `print()` ilə xaricetmə, `//` və `%` əməlləri — DİM tipli «proqram nə çap edir?» tapşırıqları ilə.

Özünü yoxla
Bu dərsdə öyrənəcəksən
  • Proqram, proqramlaşdırma dili, maşın dili, aşağı və yüksək səviyyəli dilləri fərqləndirmək, interpretatorla kompilyatoru müqayisə etmək.
  • Dəyişən yaratmaq, int, float, str, bool tiplərini tanımaq və verilənləri input(), int(input()), input().split() ilə daxil etmək.
  • + - * / // % ** əməllərini düzgün ardıcıllıqla hesablamaq, abs(), int(), str() funksiyalarından istifadə etmək.
  • Qısa proqramın nə çap etdiyini addım-addım izləyərək müəyyən etmək (DİM-in qapalı və kodlaşdırılmış tapşırıqları).

Kompüter yalnız 0 və 1-lərdən ibarət əmrləri başa düşür, sən isə print(7 * 6) yazırsan və o, dərhal 42 cavabını verir. Bu iki dil arasında kim tərcüməçilik edir? Bu dərsdə həm bu sualın cavabını, həm də Python-un ilk vacib alətlərini öyrənəcəksən: dəyişənlər, klaviaturadan daxiletmə, ekrana xaricetmə və hesab əməlləri. DİM-in I qrup qəbul imtahanında informatikanın 30 tapşırığından 9-u Python proqramlarıdır — onların hamısı bu dərsdəki «kərpiclərdən» qurulur.

Proqram, proqramlaşdırma dilləri və translyatorlar

Tərif
Proqram

Kompüterin yerinə yetirməli olduğu əmrlərin (təlimatların) proqramlaşdırma dilində yazılmış ardıcıllığı. Proqram alqoritmin kompüter üçün yazılışıdır.

Tərif
Proqramlaşdırma və proqramlaşdırma dili

Proqramlaşdırma — proqram yaratma prosesidir: məsələnin qoyuluşu, alqoritmin qurulması, onun proqramlaşdırma dilində yazılması və yoxlanması. Proqramlaşdırma dili proqram yazmaq üçün ciddi qaydaları (sintaksisi) olan formal dildir: Python, C++, Java, Pascal, BASIC.

Dillər kompüterə yaxınlığına görə səviyyələrə bölünür. Maşın dili prosessorun birbaşa icra etdiyi yeganə dildir: əmrlər ikilik kodlarla yazılır və prosessorun tipindən asılıdır. Aşağı səviyyəli dillər (məsələn, assembler) maşın əmrlərini MOV, ADD kimi qısa hərf işarələri ilə yazır; onlar da konkret prosessora bağlıdır. Yüksək səviyyəli dillər (Python, C++, Java, Pascal) insan dilinə və riyazi yazılışa yaxındır, prosessordan asılı deyil, onların bir əmri çoxlu maşın əmrinə çevrilir.

Tərif
Translyator

Yüksək səviyyəli dildə yazılmış proqram mətnini (mənbə kodunu) maşın dilinə çevirən proqram. İki növü var: kompilyator və interpretator.

KompilyatorİnterpretatorProqram mətniProqram mətnibütün proqramıəvvəlcədəntərcümə ediricra olunan fayl(.exe)əmrləri bir-bir:tərcümə edir →icra edir →növbəti əmrNəticəNəticə
Kompilyator bir dəfə tərcümə edib hazır fayl yaradır; interpretator isə hər dəfə əmrləri bir-bir tərcümə edib yerinə yetirir.
XüsusiyyətKompilyatorİnterpretator
Necə tərcümə edirbütün proqramı birdəfəyə, icradan əvvələmrləri bir-bir: tərcümə edir və dərhal icra edir
Nəticəicra olunan fayl (məsələn, .exe); sonra translyatorsuz işləyirayrıca fayl yaranmır; hər icrada interpretator lazımdır
Sürəthazır proqram sürətli işləyiradətən daha yavaş işləyir
Səhvləricradan əvvəl, bütün mətn üzrə bildirilirsəhvli əmrə çatanda dayanır; əvvəlki əmrlər artıq icra olunub
NümunələrC, C++, Pascal, GoPython, JavaScript, PHP

Python interpretasiya olunan dildir. Proqram icra olunarkən 5-ci əmrdə səhv baş versə (məsələn, sıfıra bölmə), ilk dörd əmrin nəticəsi ekrana artıq çıxmış olur. Dəqiq desək, Python əvvəlcə bütün mətni aralıq bayt-koda çevirir — ona görə yazı (sintaksis) səhvi olan proqram heç başlamır — lakin məktəb kursunda və imtahanda Python interpretasiya olunan dil kimi təsnif olunur.

Sabitlər, dəyişənlər və mənimsətmə

Tərif
Sabit və dəyişən kəmiyyətlər

Sabit proqramın icrası zamanı dəyişməyən qiymətdir: 45, 3.14, 'Baku'. Dəyişən adı olan yaddaş sahəsidir, onun qiyməti proqramın gedişində dəyişə bilər. Python-da dəyişən ona ilk dəfə qiymət mənimsədiləndə yaranır.

Mənimsətmə operatoru = belə işləyir: əvvəlcə sağ tərəfdəki ifadə hesablanır, sonra nəticə sol tərəfdəki dəyişənə yazılır, köhnə qiymət isə itir. Buna görə x = x + 1 tənlik deyil, «x-in qiymətini 1 vahid artır» əmridir. DİM-in izahlarında bu, «dəyişənə … qiyməti mənimsədilir» kimi yazılır. Python bir sətirdə bir neçə mənimsətməyə də icazə verir: a, b = 3, 8.

  • ad hərflə və ya _ ilə başlayır, sonra hərf, rəqəm və _ gələ bilər: a1, sum_2, _k düzgündür, 2a, my-sum, a b isə səhvdir;
  • böyük və kiçik hərflər fərqlənir: a və A iki müxtəlif dəyişəndir;
  • xidməti sözlər (if, else, for, while, and, or, not, True) dəyişən adı ola bilməz.
TipNə saxlayırNümunələr
inttam ədəd45, -7, 0
floathəqiqi ədəd (onluq kəsr)3.5, 2.0, -0.25
strsətir: dırnaq içində mətn'Baku', "45", ''
boolməntiqi qiymətTrue, False
45 və '45' fərqlidir: birincisi ədəddir, ikincisi mətn. Həqiqi ədədlərdə Python həmişə nöqtə yazır: 3.5.
Python
a = 7
b = 2.5
s = '7'
t = a > 5
print(type(a), type(b), type(s), type(t))
print(a * 2, b * 2, s * 2, t)
▸ Gözlənilən nəticə
<class 'int'> <class 'float'> <class 'str'> <class 'bool'>
14 5.0 77 True
type() dəyişənin tipini göstərir. Diqqət: s * 2 sətri təkrarlayır (77), b * 2 isə float olaraq qalır (5.0).

Python-da dəyişənin tipi ona mənimsədilən qiymətlə müəyyən olunur və proqramın gedişində dəyişə bilər: x = 5-dən sonra x tam ədəddir, x = 'five'-dan sonra isə sətirdir. Buna görə hər tapşırıqda özündən soruş: bu anda dəyişəndə ədəd var, yoxsa mətn? Eyni + işarəsi ədədləri toplayır, sətirləri isə yan-yana birləşdirir.

Nümunə 1. Mənimsətmələri izləyək

a = 7, b = 3 olsun. Sonra ardıcıl olaraq a = a + b, b = a - b, a = a - b əmrləri icra olunur. print(a, b) nə çap edəcək?

Həllini göstər
Hər əmrdən sonra hər iki dəyişəni yazırıq:
a = a + b → a = 7 + 3 = 10, b = 3
b = a - b → b = 10 − 3 = 7, a = 10
a = a - b → a = 10 − 7 = 3, b = 7
Çap olunur: 3 7. Dəyişənlər yerlərini dəyişdi və üçüncü dəyişən lazım olmadı. Python-da eyni işi bir sətirlə görmək olar: a, b = b, a.

Daxiletmə və xaricetmə: input() və print()

print() funksiyası mötərizədəki qiymətləri ekrana çıxarır. Vergüllə ayrılmış bir neçə qiymət bir boşluqla ayrılaraq bir sətirdə çap olunur, hər yeni print() isə yeni sətirdən başlayır. sep parametri ayırıcını, end isə sətrin sonunu dəyişir: print(1, 2, 3, sep='-') → 1-2-3, print('a', end='') isə növbəti çapı həmin sətirdə saxlayır.

input() istifadəçinin klaviaturadan yazdığı sətri oxuyur və onu **həmişə sətir (str) kimi** qaytarır: 5 yazsan belə, '5' alınır. Ədədlə hesablamaq üçün sətri çevirmək lazımdır: tam ədəd üçün int(input()), həqiqi ədəd üçün float(input()). DİM tapşırıqlarındakı proqramlar məhz belə başlayır: n = int(input()). Bir sətirdə boşluqla yazılmış bir neçə qiyməti input().split() oxuyur — o, sətri boşluqlardan bölüb sətirlər siyahısı qaytarır; hər hissəni ayrıca int() ilə çeviririk.

Python
name = input()
age = int(input())
a, b = input().split()
a = int(a)
b = int(b)
print(name, age, a + b)
print(name, 'is', age, sep='_')
İmtahan variantı: proqram klaviaturadan üç sətir oxuyur. Aşağıdakı cədvəldə giriş və çıxış göstərilib.
Giriş (klaviatura)Çıxış (ekran)
Leyla
14
3 8
Leyla 14 11
Leyla_is_14
DİM-in yazılı tapşırıqlarında nümunələr məhz belə «Giriş / Çıxış» cədvəli ilə verilir.

Tapşırığın şərtini diqqətlə oxu: ədədlər hər biri ayrıca sətirdə daxil edilirsə, int(input()) lazım olan qədər təkrarlanır (a = int(input()), b = int(input())); ədədlər bir sətirdə, boşluqla yazılırsa, input().split() istifadə olunur. DİM-in yazılı tapşırıqlarında hər iki forma olur: məsələn, siyahının elementləri «bir-birindən bir boşluqla ayrılmış sətir şəklində», elementlərin sayı n isə ayrıca sətirdə verilə bilər.

Python
name = 'Leyla'
age = int('14')
line = '3 8'
a, b = line.split()
a = int(a)
b = int(b)
print(name, age, a + b)
print(name, 'is', age, sep='_')
▸ Gözlənilən nəticə
Leyla 14 11
Leyla_is_14
Brauzerdə işə salınan variant: klaviaturadan gələcək sətirləri birbaşa dəyişənlərə yazdıq. line.split() sətri ['3', '8'] siyahısına bölür. Qiymətləri dəyişib yenidən işə sal.
Nümunə 2. Bir sətirdə iki qiymət

Proqram icra olunarkən klaviaturadan bir sətirdə 12 5 daxil edilir:
a, b = input().split()
print(a + b, int(a) + int(b), a * 2)
Nə çap olunacaq?

Həllini göstər
split() sətri ['12', '5'] siyahısına bölür: a = '12', b = '5' — hər ikisi sətirdir.
a + b sətirləri birləşdirir: 125.
int(a) + int(b) = 12 + 5 = 17.
a * 2 sətri iki dəfə təkrarlayır: 1212.
Cavab: 125 17 1212.

Hesab əməlləri: //, % və əməllərin ardıcıllığı

ƏməlMənasıNümunəNəticə
+ - *toplama, çıxma, vurma17 + 5, 17 - 5, 17 * 522, 12, 85
/bölmə; nəticə həmişə float17 / 5, 8 / 23.4, 4.0
//tam bölmə — natamam qismət17 // 53
%bölmədən qalıq17 % 52
**qüvvətə yüksəltmə2 ** 532
a = b · (a // b) + a % b, 0 ≤ a % b < b
burada:
  • abölünən (tam ədəd)
  • bbölən, b > 0
  • a // bnatamam qismət
  • a % bqalıq

Qalıqlı bölmə: // və % həmişə cüt işləyir. Yoxlama: qisməti bölənə vurub qalığı əlavə etsən, bölünən alınmalıdır.

Nümunə 3. Natamam qismət və qalıq

Hesablayın: 1) 47 // 6 və 47 % 6; 2) 5 // 8 və 5 % 8; 3) -17 // 5 və -17 % 5.

Həllini göstər
1) 6 · 7 = 42 ≤ 47 < 48 = 6 · 8, deməli 47 // 6 = 7, 47 % 6 = 47 − 42 = 5. Yoxlama: 6 · 7 + 5 = 47.
2) Bölünən böləndən kiçikdir: 5 // 8 = 0, 5 % 8 = 5 (ədəd özü qalır).
3) Python-da // həmişə aşağı, kiçik tərəfə yuvarlaqlaşdırır: −17 : 5 = −3,4 → -17 // 5 = −4. Qalıq: −17 − 5 · (−4) = 3, yəni yenə 0 ≤ 3 < 5.
( ) → ** → * / // % → + −2 ** 3 ** 2 = 2 ** 9 = 512

Əməllərin prioriteti (soldan sağa azalır). Eyni səviyyəli * / // % əməlləri soldan sağa icra olunur, ** isə sağdan sola: 2 ** 3 ** 2 = 2 ** 9 = 512. ** birhədli mənfidən güclüdür: -2 ** 2 = −4.

Python
a = 7
b = 45
c = b // a % 4 * 3 + b % a ** 2
print(c)
▸ Gözlənilən nəticə
51
Nümunə 4-ün proqramı. İmtahanda birinci sətir a = int(input()) olur və klaviaturadan 7 daxil edilir.
Nümunə 4. DİM tipli qapalı tapşırıq

Klaviaturadan 7 daxil edilərsə, yuxarıdakı proqramın nəticəsini müəyyən edin.
A) 15 B) 51 C) 45 D) 6 E) 57

Həllini göstər
İfadəni iki hissəyə bölürük; + ən axırda icra olunur.
Sol hissə soldan sağa: b // a = 45 // 7 = 6 → 6 % 4 = 2 → 2 * 3 = 6.
Sağ hissədə ** daha güclüdür: a ** 2 = 49, sonra 45 % 49 = 45 (45 < 49, ədəd özü qalır).
c = 6 + 45 = 51, cavab B.
Tələ: b % a ** 2-ni (b % a)² kimi hesablayan 3² = 9 alır və səhvən 15-i (A) seçir.

Ədədin rəqəmləri və tip çevirmələri

n = 100·a + 10·b + c ⇒ a = n // 100, b = n // 10 % 10, c = n % 10
burada:
  • nüçrəqəmli natural ədəd
  • ayüzlüklər rəqəmi
  • bonluqlar rəqəmi
  • ctəkliklər (son) rəqəm

n % 10 həmişə son rəqəmi, n // 10 isə son rəqəmi atılmış ədədi verir. Dövrlə istənilən uzunluqlu ədədin rəqəmləri «Ədədlər üzərində əməllər: rəqəmlər, bölənlər və sadə ədədlər» dərsində işlənir.

Python
n = 739
a = n // 100
b = n // 10 % 10
c = n % 10
print(c * 100 + b * 10 + a, a + b + c, abs(a - c))
▸ Gözlənilən nəticə
937 19 2
Nümunə 5-in proqramı. İmtahan variantında birinci sətir n = int(input())-dur.
Nümunə 5. Rəqəmlərlə iş (kodlaşdırılmış cavab)

Klaviaturadan 739 daxil edilərsə, yuxarıdakı proqram nə çap edər?

Həllini göstər
a = 739 // 100 = 7 (yüzlüklər), b = 739 // 10 % 10 = 73 % 10 = 3 (onluqlar), c = 739 % 10 = 9 (təkliklər).
Birinci qiymət: 9 · 100 + 3 · 10 + 7 = 937 — ədəd tərsinə yazıldı.
İkinci: 7 + 3 + 9 = 19 — rəqəmlərin cəmi.
Üçüncü: abs(7 - 9) = |−2| = 2.
print üç qiyməti boşluqla ayırır: 937 19 2.

Tip çevirmələri. str() ədədi sətrə, int() isə sətri və ya həqiqi ədədi tam ədədə çevirir: str(45) + '1' → 451, int('45') + 1 → 46, int(7.9) → 7 (kəsr hissə sadəcə atılır, yuvarlaqlaşdırılmır). len(str(n)) ədədin rəqəmlərinin sayını verir: len(str(2026)) → 4. abs(x) ədədin modulunu qaytarır: abs(-12) → 12.

Tez hesabla: Python nə qaytarır?
  1. 1.17 // 5 →
  2. 2.17 % 5 →
  3. 3.2 ** 3 ** 2 →
  4. 4.-7 // 2 →
  5. 5.int('12') + 3 →
  6. 6.len(str(40961)) →

DİM tipli tapşırıqlar: proqram nə çap edir?

İmtahanda proqram adətən 5–15 sətirdir və sual birdir: «proqramın nəticəsini müəyyən edin». Qapalı tapşırıqda 5 cavab variantı olur, kodlaşdırılmış tapşırıqda isə cavabı özün yazırsan. Hər iki halda qalib gələn üsul eynidir — proqramı kompüter kimi, sətir-sətir «icra etmək».

  1. 1
    Dəyişən cədvəli aç

    Hər dəyişən üçün sütun çək və ilkin qiymətləri yaz. input() varsa, verilən giriş qiymətini tipinə uyğun yaz: int(input()) → ədəd, input() → sətir.

  2. 2
    Sətir-sətir irəlilə

    Hər mənimsətmədən sonra yalnız həmin dəyişənin sütununu yenilə, köhnə qiyməti üstündən xətlə. Sağ tərəf həmişə köhnə qiymətlərlə hesablanır.

  3. 3
    Prioritetə əməl et

    Mürəkkəb ifadədə əvvəl **, sonra * / // % soldan sağa, sonra + -. Aralıq nəticələri yaz.

  4. 4
    Tiplərə diqqət et

    / həmişə float verir (8 / 2 → 4.0); sətirlər üçün + birləşdirmə, * isə təkrardır.

  5. 5
    Çap formatını yoxla

    print(a, b) qiymətləri bir boşluqla ayırır, hər print yeni sətirdə çıxır. Variantlar çox vaxt məhz boşluq və sətir fərqi ilə ayrılır.

Tapşırıq

Film t saniyə davam edir. Onun neçə tam saat, dəqiqə və saniyə olduğunu bir sətirdə, boşluqla ayıraraq çap et. Proqramı t = 7384 üçün yoxla (imtahan variantında t = int(input()) olardı).

Tapşırıq · Python
t = 7384
# hours, minutes, seconds
▸ Gözlənilən nəticə
2 3 4
Tapşırıq

Bir sətirdə boşluqla iki natural ədəd verilib: line = '38 7'. split() ilə onları ayır, int() ilə çevir və bir sətirdə natamam qisməti, qalığı və yoxlama qiymətini (bölən · qismət + qalıq) çap et.

Tapşırıq · Python
line = '38 7'
# split, convert, print quotient, remainder, check
▸ Gözlənilən nəticə
5 3 38

Əsas fikirlər

  • Translyator yüksək səviyyəli dildəki proqramı maşın dilinə çevirir: kompilyator bütün proqramı əvvəlcədən və icra olunan fayla, interpretator isə əmrləri bir-bir tərcümə edib dərhal icra edir. Python interpretasiya olunan dildir.
  • = mənimsətmədir: əvvəl sağ tərəf hesablanır, sonra nəticə sol tərəfdəki dəyişənə yazılır.
  • input() həmişə sətir qaytarır: ədəd üçün int(input()), bir sətirdə bir neçə qiymət üçün input().split().
  • // natamam qisməti, % qalığı verir: a = b · (a // b) + a % b; n % 10 son rəqəm, n // 10 son rəqəmsiz ədəddir.
  • Prioritet: mötərizə → ** (sağdan sola) → * / // % (soldan sağa) → + -; / həmişə float verir.

Özünü yoxla

12 sual. Hər düzgün cavab XP qazandırır.

1 / 12
Proqram mətnini icradan əvvəl bütövlükdə maşın dilinə çevirən və icra olunan fayl yaradan translyator necə adlanır?