Upload
vutruc
View
280
Download
11
Embed Size (px)
Citation preview
TEMPUS PROJEKT: 516678 TEMPUS-1-2011-1-DE-
TEMPUS-JPCR:
ANPASSUNG DES LEHRBETRIEBS AN DEN BOLO-
GNA PROZESS IM INGENIEURSTUDIUM FÜR ASER-
BAIDSCHAN
Vorlesungsskript: Grundlagen der Informatik
Für Studiengang: Bachelor-Automatisierunmgstechnik und
El.Energiertechnik
Mühazirələr konspekti: İnformatikanın əsasları
“Proseslərin avtomatlaşdırılması mühəndisliyi" və
“Elektroenergetika mühəndisliyi” ixtisaslarının bakalavr
səviyyəsi tələbələri üçün
Dr. Ing. Senan Jafarov (ASEIU)
Dr. Ing. Afag Memmedova (AzTU)
Dr. Ing Zakir Sadichov (SUS)
Baku 2015
3
Grundlagen der Informatik
Einführung 7
1. Theorie von Algorithmen 8
1.1. Begriff des Algorithmus, Haupteigenschaften,
Typen und Darstellungsarten der Algorithmus
8
1.2. Software 18
1.3. Software – Unterstützung 18
1.4. System Software 21
1.5. Instrumentale Systeme 23
1.6. Einsatzprogramme 23
1.7. Programmiersprachen 25
2. Turbo-Pascal 29
2.1. Einführung 29
2.1.1. Funktionale Tasten 30
2.1.2. Textredakteur 32
2.2. Hauptelemente der Sprache 33
2.2.1. Sprachalphabet 33
2.2.2. Identifikatoren 35
2.2.3. Struktur des Turbo-Pascalprogramms 36
2.2.4. Kommentaren (Erläuterungen) 38
2.2.5. Daten 40
2.3. Datentypen 41
2.3.1. Vollständige Datentypen 41
2.3.2. Echte Typvariablen 43
2.3.3. Boolsche oder logische Datentypen 45
3.3.4. Symbol-Datentypen 46
2.3.5. Zeilen-Datentypen 48
2.3.6. Variablen 48
4
2.4. Formel. Einfache Ein-Aus-Operatoren 49
2.4.1. Formel 49
2.4.2. Eingangsoperatoren 51
2.4.3. Ausgangsoperatoren 52
2.4.4. Informationseinsatz mit Funktionstasten 56
2.5. Übergangsoperatoren. Zirkulierende Prozesse 58
2.5.1. Bedingte Übergangsoperatoren 58
2.5.2. Bedingungslose Übergangsoperatoren 62
2.5.3. Auswahloperator CASE 63
2.5.4. Zirkulierende Operatoren 66
2.6. Komplizierte Verbundene Variablen 73
2.7. Procedure und Function 80
2.8 Zeilentypdaten und derer
Verarbeitungsfunktionen
88
3. BORLAND DELPHI 96
3.1. Einleitung. Die an Computer gestellten
Anforderungen
96
3.2. Interface des Programms 98
3.3. FORM und seine besondere Eigenschaften 102
3.4. Vorkommnisse (Events) 104
3.5. Instrumentenpanel ”STANDARD“ 105
4. LITERATUR 115
5
İnformatikanını əsasları
Giriş 7
I FƏSİL. Alqoritm nəzəriyyəsi 8
1.1.Alqoritm anlayışı, alqoritmin əsas xassələri, tipləri və
təsvir üsulları 8
1.2.Kompüterlərin proqram minatı. 18
1.3.Sistem proqramlar 18
1.4.Xidməti proqram təminatı 21
1.5.İnstrumental sistemlər 23
1.6.Tətbiqi proqramlar 23
1.7.Alqoritmik dillər 25
II FƏSİL. Turbo-Paskal alqoritmik dili 29
2.1. Giriş 29
2.1.2. Funksianal klavişlər 30
2.1.3. Mətn redaktoru 32
2.2. Dilin əsas elementləri 33
2.2.1. Dilin əlifbası 33
2.2.2. İdentifikatorlar 35
2.2.3. Turbo-Pascal proqramının strukturu 36
2.2.4. Komentariyalar (şərhlər) 38
2.2.5. Verilənlər 40
2.3. Verilənlərin tipləri 41
2.3.1. Tam tip verilənlər 41
2.3.2. Həqiqi tip dəyişəniər 43
2.3.3. Bul və ya məntiqi tip verilən 45
2.3.4. Simvol tip verilən 46
2.3.5. Sətir tip verilənlər 48
2.3.6. Dəyişənlər 48
2.4. İfadələr. Sadə giriş-çıxış operatorları 49
2.4.1. İfadələr 49
2.4.2. Mənimsətmə operatoru 51
2.4.3. Çıxış operatorları 52
6
2.4.4. İnformasiyanın klaviaturadan daxil edilməsi 56
2.5. Keçid operatorların 58
2.5.1. Şərti keçid operatoru 58
2.5.2. Şərtsiz keçid operatoru 62
2.5.3. CASE seçmə operatoru 63
2.5.4. Dövr operatorları 66
2.6. Mürəkkəb tip dəyişənlər 73
2.6.1. Düzəltmə tiplər 73
2.6.2. Mürəkkəb tiplər 76
2.7. Funksiyalar və proseduralar 83
2.8. Sətri tip veriiənlər və onların emalı funksiyalan 88
III. BORLAND DELPHİ 96
3.1.Giriş. Kompüterə qoyulan tələblər 96
3.2.Proqramın interfeysi 98
3.3.FORM və onun əsas xüsusiyyətləri 102
3.4 Hadisələr(Events) 104
3.5.”STANDARD“ alətlər paneli 105
ƏDƏBIYYAT 115
7
Giriş
Son illər informasiya texnologiyalarının geniş yayılması,
kompüterlərin insan fəaliyyətinin bütün sahələrində tətbiq
edilmələri və İNTERNETİN ümumidünya şəbəkəsinə
çevrilməsi müxtəılif sahələr üzrə mütəxəssis hazırlığında bu
sahəyə ciddi fikir verilməsini tələb edir. Bu nöqteyi nəzərdən
son 20 il müddətində Azərbaycan Dövlət Neft Akademiyasının
“Avtomatika, telemexanika və elektronoka” kafedrasında
müxtəlif ixtisaslar üçün “Kompüter şəbəkələri və sistemləri”
fənni tədris edilir.Hal-hazırda bu fənn 050627 “Elektronika,
telekommunikasiya və radiotexnika mühəndisliyi”, 0500628
“Proseslərin avtomatlaşdırılması mühəndisliyi”, 0500631
“Kompüter mühəndisliyi” ixtisaslarının tədris planlarına daxil
edilmişdir. Lakin elektron sistemlərin proqram təminatı həsr
edilmiş azərbaycan dilində dərsliyin olmaması səbəbindən
fənnin tədrisində müəllimlər və tələbələr müəyyən çətinliklərlə
qarşılaşırlar. Bu boşluğu müəyyən qədər doldurmaq məqsədi
ilə bizim tərəfimizdən belə bir dərs vəsaitinin hazırlanmasına
təşəbbüs göstərilmişdir.
Dərs vəsaiti III fəsildən ibarətdir. Dərslikdə elektron
sistemlərin proqram təminatının tərkib hissəsinə daxil olan
alqoritmlərin qurulma qaydaları, metodiki və elmi əsasları
verilmiş, paskal proqramlaşdırma dilində qarşıya qoyulan
məsələnin həllinə, onların təyinatları, Delfi proqramın tərkibi
açıqlanmış və proqramın bütün elementlərindən istifadə
qaydaları verilmişdir.
Dərs vəsaiti müasir kompüter texnologiyaları və
informasiya sistemləri ilə maraqlanan mütəxəssislər üçün də
müəyyən əhəmiyyət kəsb edə bilər.
8
I FƏSİL. ALQORITM NƏZƏRIYYƏSI
1.1.Alqoritm anlayışı, alqoritmin əsas xassələri, tipləri və
təsvir üsulları.
Alqoritm sozü görkəmli alim Əbu Muhamməd İbn Musa
əl Xarəzminin (787-850) adının təhrif olunmuş formasıdır.
Belə ki, alimin “Kitab əl cəbr və əl-muqabala" əsəri XII əsrdə
latın dilinə tərcümə edilmiş və bu zaman tərcüməçi alimin
adındakı Xarəzmi sözünü təhrif edərək Alqoritmi kimi
verilmişdir və əsəri “Algoritmi de numero indorum”, yəni
“Alqoritmi hind hesabı haqqında” adlandırmışdır. Bu tərcümə
sayəsində alqoritm sözü Avropa dillərində, sonradan isə əksər
dünya dillərində, o cümlədən azərbaycan dilində bir termin
kimi istifadə olunmaqdadır.
Orta əsrlərdə Avropada alqoritm dedikdə onluq say
sistemində ədədlərlə hesablama qaydaları başa düşülürdü.
Müasir dövrdə isə bu anlayış daha geniş mənada, verilmiş
məsələni həll etmək və ya müəyyən məqsədə çatmaq üçün
zəruri olan əməliyyatlar ardıcıllığının yerinə yetirilməsi
haqqında icraçıya verilən dəqiq və aydın göstərişlərin-əmrlərin
təsviri kimi başa düşülür. Alqoritmin əmrləri sonlu sayda olub
ardıcıl yerinə yetirilir. Hər bir alqoritm konkret icraçı üçün
qurulur. İcraçı alqoritmi yerinə yetirməyə qadir olmalıdır.
Başqa sözlə alqoritmin bütün əmrləri isifadəçi üçün “başa
düşülən” olmalıdır. Məsələn, aydındır ki, birinci sinif şagirdi
riyaziyyatın ilk alqoritmlərindən hesab olunan Evklid
alqoritmini yerinə yetirə bilməz.
9
Alqoritm anlayışı bir termin kimi əksər elm sahələrində,
o cümlədən informatikada istifadə olunur. Alqoritm
informatikanın fundamental anlayı şlarından biridir. Belə ki,
informatikanın əsas tədqiqat obyekti ilkin informasiya əsasında
yeni rəqəmli informasiyanın yaradılmasını, informasiyanın
saxlanılmasını, işlə nilməsini, operativ mübadiləsini,
təhlükəsizliyini, insan əməyinin avtomatlaşdırı lmasını təmin
edən, effektiv və kompüterdə icra olunan alqoritmlərin
yaradılmasıdır. Bu baxımdan informatikada alqoritm anlayışına
aşağıdakı kimi tərif vermək olar:
Alqoritm – verilmiş məsə ləni həll etmək üçün ilkin
verilənlərlə icra olunan hesabi və məntiqi əməliyyatların sonlu
sayda ardıcıllığıdır.
Alqoritmlər çox rə ngarəng olsalar da, onların hamısı
aşağıdakı ümumi xassələrə malikdir:
1. Diskretlilik xassəsi. Hər bir alqoritm məsələnin həll
prosesini sadə addımların yerinə yetirilməsi ardıcıllığı şəklində
ifadə edir və hər bir addımın yerinə yetirilməsi üçün sonlu
zaman fasiləsi tələb olunur, yəni başlanğıc verilənlərlə icra
olunan hesabi və məntiqi əməliyyatların yerinə yetirilməsi və
nəticənin alınması zamana görə diskret yerinə yetirilir.
2. Müəyyənlik xassəsi. Hər bir alqoritm dəqiq,
birqiymətli olmalıdır. Bu xassəyə əsasən alqoritm yerinə
yetirildikdə istifadəçinin və onun istifadə etdiyi kompüterdən
10
asılı olmayaraq eyni nəticə əldə edilməlidir.
3. Kütləvilik xassəsi. Müəyyən sinif məsələnin həlli
üçün qurulmuş alqoritm bu sinfə aid olan yalnız başlanğıc
qiymətləri ilə fərqlənən bütün məsələlərin həllini təmin
etməlidir. Məsələn, ax2 +bx + c = 0 kvadrat tənliyi üçün
qurulmuş alqoritm a,b, c – nin ixtiyari qiymətləri üçün
məsələni həll edir.
4. Nəticəlilik və sonluluq xassəsi. Alqoritm sonlu sayda
addımdan sonra başa çatmalı və verilmiş məsələnin həlli
tapılmalıdır.
Alqoritm aşğıdakı üsullarla təsvir olunur:
• Sözlə
• Blok-sxemlə
• Alqoritmik dillə
• Qrafalarla
Alqoritmlərin ən sadə təsvir forması tə bii dillə - sözlə
yazılış formasıdır. Alqoritmin mahiyyətinin izahını vermək
üçün bu üsul çox əlverişli olur. Məsələn, verilmiş iki A və B
ədədlərindən böyük olanının tapılması alqoritmini sözlə ifadə
edək:
1. A ədədindən B ədədini çıxın.
2. Nəticədə mənfi qiymət alınarsa, B ədədinin
böyük olmasını bildirin.
11
3. Müsbət qiymət alınarsa, A ədədinin böyük
olmasını bildirin.
4. Sıfır alınarsa, hər iki ədədin bərabər olduğunu bildirin.
Alqoritmi əyani təsvir etmək üçün onu blok-sxem
şəklində vermək məsl əhətdir. Bu təsvir forması sözlə
yazılışa nisbətən daha yığcam və dəqiqdir.
Blok-sxem blok adlanan aşağıdakı standart
həndəsi fiqurlardan ibarət olur:
Başlanğıc və sonu bloku
Daxil etmə bloku
Hesablama və ya əməliyat bloku
Şərt bloku
Dövr bloku
Çap bloku
12
Hər bir blokda alqoritmin konkret bir və ya eyni tipli
bir neçə əmrini təsvir etmək olar. Bloklar bir-birilə şaquli və
ya üfüqi xətlərl ə və ya oxlarla əlaqə ləndirilir. Şaquli xəttlər
üçün istiqamət olaraq yuxarıdan - aşağıya, üfüqi xəttlər
üçün isə soldan- sağa qəbul olunmuşdur.
Blok-sxemi Proqram Sənədlərinin Vahid Standartı
əsasında tərtib edilməlidir. Məsələn, bu standarta əsasən
hesablama və ya əməliyyat blokunun minimal eni 10 mm
olmalı, bir blok-sxemdə verilən eyniadlı blokların ölçüləri
eyni olmalıdır. Məntiqi blok istisna olmaqla digər
bloklardan yalnız bir xət və ya ox çıxa bilər 1 . Məntiqi
blokdan isə iki xətt və ya ox çıxmalıdır. Blok - sxem bir
səhifəyə sı ğışmadıqda səhifələrarası birl əşdirici vasitəsilə
blok-sxemi növbəti səhifədən davam etdirmək olar. Səhifələ
rarası birləşdiricidə birləşdirci xəttin və ya oxun haradan
haraya istiqamətləndirildiyini göstərmək lazımdır.
Alqoritmin alqoritmik dillə təsvir üsulu onun
kompüterdə icrası üçün tərtib olunur. Alqoritmin belə yazılışı –
kompüter üçün proqram adlanır.
Alqoritmlər xətti, budaqlanan və dövrü struktura malik ola
bilər:
Xətti alqoritmlər sadə hesablama prosesini ifadə edən
bir neçə ardıcıl əməliyyatlardan ibarət olur və onlar yazıldığı
ardıcıllıqla da icra olunur.
Budaqlanma alqoritmlərin tərkibində bir və ya bir
neçə məntiq mərhələsi olur. Bu mərhələdə müəyyən
kəmiyyətlərin hər hansı bir şərti ödəyib-ödəmədiyi yoxlanılır
13
Başlanğıc
a,b,x
y=a+bx
y
Son
və ona uyğun olaraq sonrakı gedişin istiqaməti seçilir. Yəni
nəzərdə tutulan şərt ödənilirsə, bir istiqamətə, həmin şərt
ödənilmirsə, başqa istiqamətə doğru hərəkət edilir. Beləliklə,
alqoritmdə budaqlanma baş verir.
Dövr alqoritmi. Proqramlaşdırmada tez-tez eyni
əməliyyatlar qrupunun çoxlu sayda təkrar olunması lazım gəlir.
Bu halda dövr alqoritmindən istifadə olunur. Dövrlər sadə və
mürəkkəb olur. Sadə dövrlü alqoritmin bir dövrü olur. Əgər hər
hansı bir alqoritmdə bir neçə daxili dövr iştirak edirsə, onda
belə dövrlərə mürəkkəb dövr deyilir. Mürəkkəb dövrləri əmələ
gətirən sadə dövrlər kəsişə bilməz.
Xətti alqoritmik struktur
Tərkibində məntiqi və dövri mərhələ olmayan
mərhələlər ardıcıllığında təşkil olunur.
Xətti alqoritm elə alqoritmdir ki, bu
alqoritmi təşkil edən blokların hamısı növbə ilə yerinə
yetirilir. Məsələn, xbay
funksiyasının qiymətinin bir nöqtədə
hesablanması. Təbii danışıq dilində bu
funksiyanın qiymətinin hesablanması
alqoritmini aşağıdakı kimi yazmaq
olar.
1. Proqramın başlanğıcı
2. a,b,x-verilənlərini daxil etməli
3.y=a+b*x funksiyasının qiymətinin hesablamalı.
4. Nəticəni çap etməli.
5. Son.
Bu alqoritmin blok-sxemi aşağıdakıdır.
14
Budaqlanan alqoritmik struktur-Tərkibində bir və ya bir
neçə məntiqi mərhələ olan hesablama prosesinin təsvir edir.
Hər bir budaqlanma nöqtəsi uyğun məntiqi mərhələ ilə təyin
edilir. Budaqlanan alqoritmə elə alqoritmə deyilir ki, şərtdən
aslı olaraq, alqoritmi təşkil edən blokların bəziləri yerinə
yetirilir, bəziləri yox.
Məsələn,
baba
babay
,
,
Başlanğıc
a,b
a>b
y=a-b y=a+b
y
Son
yox
hə
15
Dövri alqoritmik strukturlar-Dövri strukturlar sadə və
mürəkkəb ola bilər. Sadə struktur bir, mürəkkəb struktur isə
biri digərinə daxil olan iki və daha çox dövrdən ibarət olur. Bu
strukturları sxematik olaraq belə göstərmək olar. Dövrü
strukturların tərtibi zamanı dövrün girişində hesabat prosesinin
tələb etdiyi hazırlıq əməliyyatlarının aparılması nəzərə
alınmalıdır(məsələn, cəmin və ya hasilin hesablanmasında
başlınğıc qiymətlərin məncub edilməsi). Mürəkkəb dövri
strukturlarda xarici və daxili dövrlər və onlar arasındakı
münasibətlər
müəyyənləşdirilməlidir.
Sərbəst dəyişən arqumentli
dövri hesablama prosesləri.
Arqumentin dəyişilməsində
müəyyən qanunauyğunluqlar
olmadıqda onun qiymətlər çoxluğu
nizamla düzülmüş ardıcıllıq
şəklində verilir. Bu ardıcıllıqda hər
elementin öz nömrəsi olmalıdır.
x1, x2, ... , x n-1, xn
Verilənlərin belə nizamlı düzülüşünə
massiv deyilir. Massivin elementi
kimi baxılan hər bir verilən
massivin adı və massivdəki yeri
(indeksi) ilə təyin edilir. Elemente
müraciət etmək üçün massivin adı və
elementin indeksi gəstərilməlidir.
Məsələn X massivində X (1) -1-ci
elementi, X (10) -10-ci elementi
16
göstərir. Massivin elementinə başqa sözlə indeksli dəyişən
deyilir. İndekslərin sayı massivin ölçüsünü göstərir. Bir
indeks massivin bir ölçülü yəni xətti olduğunu,iki indeks
massivin iki ölçülü yəni matris tipli olduğunu və s. göstərir.
Alqoritmik dillərdə massivlərlə işləmək üçün xüsusi
vasitələr nəzərə alınır.
Massivlərin işlədilməsinə aid bəzi tipik hesablama
proseslərinə baxaq.
a) Arqumentin qiymətlər çoxluğuna görə funksiyanın
qiymətləri çoxluğunun hesablanması.
Misal.Verilmiş X(100) massivinə əsasən ,
i=1,100 düsturu ilə y-in qiymətlər çoxluğunu hesablayan
alqoritmi qurmalı. Alqoritmin blok-sxemi şəkildə göstərilir.
b) Ədədlər massivinin elementlərinin cəminin (və ya hasilinin)
hesablanması.
Misal. Hörner sxemi vasitəsilə verilmişdir.
y = a 0 xn
+ a1 x n-1
+ . . . +a n-1 x + an
n dərəcəli çoxhədlinin qiymətinin hesablamaq üçün alqoritm
tərtib etməli.
Bu məsələnin həlli üçün verilənlər arqumentin x qiyməti və
a 0, a 1 ,a2, . . . , an əmsallarından düzəlmiş (n+1) elementli
massivdir. Hörner sxemi ilə verilən çoxhədli ümumi halda
aşağıdakı kimi yazılır.
y = (...(( a 0 x + a1 ) x a2)x
+ . . . +a n-1 ) x + an
17
Mürəkkəb dövrü proseslər.
Praktik məsələlər əksər hallarda
daxildən dövri strukturlar olan
mürəkkəb dövri proseslər şəklində
verilir. Daxili dövrlər ya müstəqil
şəkildə,ya da biri digərinin içərisində
xarici dövrdə daxil ola bilərlər.
Dövrlərin birinin digərinə daxil
olmalarının say məhdudlaşdırılmır.
Mürəkkə dövri alqoritmlərin
xarici və daxili dövrlərinin təşkil
qaydaları əsasən sadə dövrlərdə
olduğu kimidir. Sadə dövri
strukturları kombinasiya edərək
lazımi mürəkkəb struktur almaq olar.
Bu zaman aşağıdakılar nəzərə
alınmalıdır:
- daxili dövrlərin parametrlərinin
başlanğıc qiymətləri onların
işlənməsinə qədər hazırlanmalıdır;
- daxili dövrdən xarici dövrə çıxış daxili dövrü bitdikdən sonra
və ya hər hansı şərtin ödənməsi nəticəsində yerinə yetirilir;
- xarici dövrdən daxili dövrə yalnız onun başlığı vasitəsilə daxil
olmaq mümkündür;
18
1.2. Kompüterlərin proqram təminatı
Proqram təminatı kompüterlərin istifadə etdiyi
proqramlar toplusundan ibarətdir. Proqram isə öz növbəsində
tələb olunan məsələnin həll alqoritminin kompüterin “başa
düşəcəyi dildə” yazılmış təsvir formasıdır. Kompüter proqramı
yerinə yetirməklə alqoritmə uyğun əməliyyatları yerinə yetirir.
Müvafiq proqram təminat ı kompüteri insan fəaliyyətinin ən
müxtəlif sahələrində tətbiq edilməsinə imkan verir. Məhz onun
sayəsində kompüterlər çoxsahəli bir əmək aləti olaraq, insan
həyatının zəruri bir elementinə çevrilməkdədir.
Öz funksional təyinatına görə proqramlar üç
kateqoriyaya bölünür:
1. Sistem proqramları (System Software)
2. İnstrumental sistemlər
3. Tətbiqi proqramlar
1.3.Sistem proqramları
Sistem proqramları əməliyyat və istifadəçi interfeysi
mühitinin yaradılmasını, kompüterin qur ğularının və digər
proqramların birgə fəaliyyətini, kompüter şəbəkəsinin idarə
olunmasını, diaqnostika və profilaktika, bir sıra köməkçi
texnoloji əməliyyatların (məsələn, informasiyanı arxivləşdirmə,
ehtiyat surətinin yaradılması və s.) yerinə yetirilməsini təmin
19
edir. Bu kateqoriyaya aid proqramlar kompüterin
arxitekturasını nəzərə almaqla və keyfiyyət standartlarına 1
uyğun hazırlanır.
Sistem proqramlarını şərti olaraq iki qrupa bölmək olar:
1. Əməliyyat sistemləri
2. Xidməti proqramlar
Əməliyyatlar sistemi hər bir kompüter üçün zəruri olan,
onun informasiya, proqram və aparat təminatını idarə edən,
istifadəçi ilə kompüter arasında dialoqu təmin edən proqramlar
kompleksindən ibarətdir. Əməliyyatlar sistemi adətən xarici
yaddaş qur ğusunda saxlanılır və kompüter elektrik
dövriyyəsinə qoşulduqda operativ yaddaşa yüklənərək, məsəl
ənin həlli üçün tələb olunan fiziki və məntiqi ehtiyatlar2 ayırır
və istifadəçiyə rahat və sadə işçi interfeysi təklif edir.
Xarici yaddaş qurğusu olmadığından ilk fərdi
kompüterlər əməliyyatlar sisteminə malik olmamışlar. Yalnız
bu qurğular yaradıldıqdan sonra faylların idarə olunması üçün
əməliyyatlar sisteminin yaranması zərurəti yaranmışdır.
Kompüterlərdə müxtəlif arxitekturalı və funksional im-
kanlı əməliyyatlar sistemlərindən istifadə olunur. Əməliyyatlar
sisteminin normal iş rejimi müvafiq konfiqurasiyalı aparat
təminatı olduqda təmin olunur. Məsələn, maynfreymlərdə və
fərdi kompüterlərdə fərqli əməliyyatlar sistemləri istifadə olu-
nur. Əməliyyatlar sistemində əməliyyatların yerinə yetirilməsi
sürəti kompüterin operativ yaddaşından və istifadə etdiyi pros-
20
essordan asılıdır. Bu baxımdan, əməliyyatlar sisteminin istifadə
etdiyi prosessorun tərtibinə görə təsnifatını vermək olar. Fərdi
kompüterlərdə 16, 32, 64 -tərtibli əməliyyatlar sistemlərindən
istifadə olunur. Məsələn, İBM tipli kompüterlərdə istifadə
olunan MS-DOS, PC-DOS, FreeDOS əməliyyatlar sistemləri
16 tərtibli, Windows 2000 sistemi 32 tərtibli, Windows XP 64
Bit Editon sistemi 64 tərtibli əməliyyatlar sistemidir.
Əməliyyatlar sistemi yerinə yetirdikləri məsələlərin mi-
qdarına görə birməsələli və çoxməsəl əli sistemlərə bölünür.
Birməsələli əməliyyatlar sistemində cari anda yalnız bir məsələ
yerinə yetirilir. Bu cür əməliyyatlar sistemlərinin tipik
nümunəsi kimi MS-DOS əməliyyatlar sistemini misal
göstərmək olar.
Çoxməsələli əməliyyatlar sistemi kompüterdən isti-
fadəçilərin multiproqram vaxt bölgüsü rejimində kollektiv isti-
fadəni təmin edir. Bu zaman cari anda kompüterin operativ
yaddaşında bir neçə proqram və məsələlər toplusu ola bilər ki,
mikroprosessor kompüterin ehtiyatlarını onların arasında effek-
tiv bölüşdürür. Bel ə əməliyyatlar sisteminə misal olaraq
UNIX, OS/2, Windows 9x/Xp/Vista, Windows NT/Server və
digər əməliyyatlar sistemlərini göstərmək olar.
İst ənilən bir məsəl əni kompüterdə həll edərkən çox-
saylı elementar əməliyyatları yerinə yetirmək təl əb olunur.
Əməliyyatlar sistemi belə elementar, amma mürəkkəb
əməliyyatları kompüterin daxilində olan qurğularda həll edərək
bütün iş prosesini istifadəçidən gizli saxlayır, istifadəçiyə
21
kompüterdə işləmək üçün əlverişli interfeys yaradır. İsti-
fadəçiyə təklif etdiyi işçi interfeysinə görə əməliyyatlar sistem-
ləri əmr və qrafiki interfeysli əməliyyatlar sistemlərinə bölünür.
Əmr interfeysli əməliyyatlar sistemlərində hər bir əməliyyat
müvafiq əmri klaviaturadan daxil etməklə yerinə yetirilir.
Qrafiki əməliyyatlar sistemində əmrlər əsas və kontekst
menyu sistemi, alətlər panelləri və dialoq pəncərələri1 vasit
əsilə yerinə yetirilir. Qrafiki əməliyyatlar sistemi daha rahat və
sadə işçi interfeysinə malikdir.
1.4. Xidməti proqram təminatı
Praktikada kompüter istifadəçiləri bir sıra hallarda
proqram-texniki problemlərlə qarşılaşır. Bu problemlərin
səbəblərinin müəyyən edilməsi və aradan qaldırılması xidməti
proqramlar vasitəsilə yerinə yetirilir
Xidməti proqramlar kompüterin aparat hissəsinin işinə
nəzarət edir, kompüterdə baş verən nasazlığı və onun harada
baş verdiyini aşkar edir, əməliyyatlar sisteminin əvvəlki vəziy-
yətinin bərpa olmasını, icra zamanı qarşıya çıxan səhvləri
düzəltməyə, sərbəst proqram modulları arasında qarşılıqlı
əlaqəni təmin etməyə, disklərin formatlaşdırılmasına, CD və
DVD disklərinə yazılması və sairə bu kimi texnoloji işlərin
həyata keçirilməsinə imkan verir.
Xidməti proqramlar qrupuna interfeys proqramları, dia-
qnostika, antivirus və şəbəkəyə xidmət, arxivləşdirmə proqram-
22
ları, drayverlər aiddir.
İnterfeys proqramları əməliyyatlar sistemi ilə birgə
fəaliyyət göstərərək istifadəçiyə daha sadə və rahat interfeys
təqdim edir. Məsələn, MS-DOS əməliyyatlar sistemi üçün Nor-
ton Commander (NC)1 , 1985-ci ildə isə Windows 1.0, 1990,
1992, 1993-cü illərdə Windows 3.0/3.1/3.11 qrafiki proqram
örtükləri2 yaradılmışdı.
Diaqnostika proqramları kompüterin qurğularını dia-
qnostika edər ək yaranan nasazlıqları aşkar edir və imkan dax-
ilində aradan qaldırmağa xidmət göstərir. Məsələn, maqnit
disklərin diaqnostikası üçün Scandisk, Norton Disk Doctor
(NDD), diskin defraqmentləşdirilməsi üçün Defrag, Speed
Disk, diskdən ləğv olunmuş fayl və qovluqların bərpası üçün
Easy Recover, Tiramisu, Drive Rescue proqramlarından isti-
fadə etmək olar. CD və DVD disklərinə yazılma proqramları
diskin surətinin alınmasını, multimedia disklərin, avtomatik
yüklənən proqram disklərin hazırlanmasını və s. texnoloji
əməliyyatları yerinə yetirirlər. Bu tip proqramlara
RegCleaner, Customizer XP Easy CD Creator, WinOnCD,
Nero Burning ROM, Direct CD və s. proqramları gostərmək
olar.Arxivləşdirmə proqramları faylları xüsusi riyazi alqoritm
əsasında sıxaraq daha kiçik h əcmdə, bir və ya bir neçə arxiv
faylı nda saxlayır. Hal-hazırda faylları arxivləşdirmək üçün
ARJ, ZIP, WINZIP, RAR, WINRAR proqramlarından istifadə
edilir.
23
Antivirus proqramları isə kompüterin virusa
yoluxmasının qarşısını alır, vaxtaşırı faylları yoxlayır və on-
larda əmələ gəlmiş virusları aradan qaldırır.
1.5.İnstrumental sistemlər
İnstrumental sistemlər yeni sistem və tətbiqi proqram
vasitəl əri yaratmaq üçün istifadə edilir. İnstrumental sistemlər
maşın dilindən fərqli və istifadəçi üçün asan olan alqoritmik
dillərdə işləməyi təmin edir.
Kompüter yalnız maşın dilini başa düşdüyü üçün alqor-
itmik dildə yazılan proqram icra prosesindən qabaq mütləq
maşın koduna çevrilməlidir. Bu məqsəd üçün instrumental sis-
temlər qrupuna daxil olan translyator adlanan proqramlar kom-
pleksindən istifadə olunur.
Translyatorun işi iki üsulla təşkil oluna bilər: inter-
pretasiya və kompilyasiya yolu ilə. Buna uyğun olaraq çox vaxt
translyatoru interpretator və ya kompilyator adlandırırlar. Onlar
arasında fərq çevrilən proqramın mətninin müxtəlif üsullarla
emal olunmasıdır.
1.6.Tətbiqi proqramlar
İnsan fəaliyyətinin konkret fəaliyyət sahələrinə aid
məsələləri həll etmək üçün nəzərdə tutulan proqramlara tətbiqi
proqramlar deyilir. Tətbiqi proqramlar 3 formada – proqram,
proqramlar paketi və standart proqramlar kitabxanası şəklində
24
istehsal olunur.
Tətbiqi proqramlar paketi müəyyən sinif məsələləri həll
etmək üçün nəzərdə tutulmuş elə proqramlar kompleksidir ki,
kompleksin komponentlərindən biri idarəedici rolu oynayaraq,
paketin digər bütün proqramlarının bir-biri ilə əlaqəsini təşkil
edir.
Standart proqramlar kitabxanası isə kompüterdə riyazi
funksiyaların hesablanmasını, standart mahiyyətli məsələlərin
həllini, verilənlərin emalını və s. bu kimi işləri yerinə yetirən
proqramlardan ibarətdir. Belə proqramlar adətən üsul yonümlü
proqramlarla birlikdə istifadə olunur.
Müasir dövrdə fərdi kompüterlərdə müxtəlif təyinatlı
yüz minlərlə tətbiqi proqramlardan istifadə edilir. Funksional
imkanlarına görə tətbiqi proqramlar ümumi təyinatlı, üsul
yönümlü və problem yönümlü proqramlara bölünür. Ümumi
təyinatlı proqramlara mətn 1 , elektron cədvəl
2 prosessorları,
nəşriyyat sistemlər, verilənlər bazasının idarəetmə sistemləri,
qrafiki redaktorlar, təqdimat, multimedia proqramları,
kompüter oyunları və s. aiddir.
Üsul yönümlü proqramlar müəyyən sinif məsəl ələrin
həll üsulları əsasında fəaliyyət gəstərir. Onlara statistik təhlil
proqramlarını (məsələn, Statistica, StatFi 2007 və s. ), riyazi
proqram paketlərini (məsələn, Matlab, Mathcad, Mathmatica,
Maple və s) və s. göstərmək olar.
Problem yönümlü proqramlar konkret ixtisaslı isti-
25
fadəçilər üçün onlar ın peşə fəaliyyətinə aid müəyyən sinif
məsələlərin həlli üçün yaradılır. Onlar tibbdə, bank işində,
müəssisələrin və istehsalatın avtomatik idarəetmə işində və s.
geniş tətbiq olunur. Belə proqramlar adətən Avtomatlaşmış İşçi
Yeri kimi fəaliyyət göstərirlər. Məsələn, İRBİS 64 proqram pa-
keti kitabxanaların avtomatlaşdırılması üçün istiafadə olunur və
onun əsasında kataloqlaşdırıcı, kitab verilişi, oxucu, adminis-
trator, komplektləşdirici və s. Avtomatlaşmış İşçi Yerləri təşkil
olunur.
1.7.Alqoritmik dillər
Kompüter istehsal ının ilk dövründə proqramlar maşın
dilində yazılırdı. Maşın dili kompüterin “başa düşdüyü” kodlar-
la ifadə olunmuş əmrlərdən ibar ət olub, konkret kompüterin
arxitekturasından asılı idi. Hər bir əmrdə ümumi şəkildə,
aparılacaq əməliyyatın məzmunu haqqında məlumat, üzərində
maşın əməliyyatı aparılacaq başlanğıc verilənlərin yerləşdiyi
yer-ünvan, nəticənin ünvanı və bu əmrdən sonra yerinə
yetiriləcək əmr haqqında məlumat verilirdi.
Maşın dilində proqramları n yaradılması və onların kompüterdə
yerinə yetirilməsi kifayət qədər mürəkkəb və vaxt aparan idi.
Bu səbəbdən kompüter texnologiyasının inkişafının sonrakı
mərhələsində t əbii dilə daha yaxın olan simvolik dillər yarandı.
Belə ki, ikinci nəsil kompüterlərin yaranması , konkret maşının
yox, qoyulmuş məsələnin xüsusiyyətlərindən asılı olan dillərə
ehtiyac yaratdı. Bu dillərə formal dillər və ya sadəcə alqoritmik
dillər deyilir və bir sıra üstünlüklər ə malikdir. Bu dill ər əyani
26
olub, onlarla ixtiyari alqoritmi asanlıqla ifadə etmək mümkün-
dür. Alqoritmik dillər alqoritmin birqiymətliliyini, mürəkkəb
alqoritmin daha sadə alqoritmlərin vəhdəti şəklində ifadə
edilməsini təmin edir. İlk mükəmməl alqoritmik dil 1954-cü
ildə İBM firmasında Con Bekusun rəhbərlik etdiyi qrupun
yaratdığı FORTRAN dili idi. Bu dilin adı FORTRAN-
FORmulae TRANslation - formulaların t ərcüməsi sözündən
götürülmüşdür. Bu dil çox sadə struktura malik olduğundan on-
dan hal-hazırkı vaxta qədər istifadə olunur. Fortranda proqram
operatorlar ardıcıllığı şəklində yazıl ır. Bu dildə yazılan
proqram bir və ya bir neçə seqmentlərdən (alt proqram) ibarət
olur. Bütün proqramın işini idarə edən seqment əsas proqram
adlanır.
Fortran dili elmi və mühəndis texniki hesablama sa-
hələrində istifadə edilmək üçün nəzərdə tutulmuşdu. Lakin bu
dildə budaqlanan strukturlu məsələlər (istehsal prosesinin mod-
elləşdirilməsi və s.), bəzi iqtisadi məsələlər və redaktəetmə
məsələləri (c ədvəl, arayış və s. qurulması) üçün proqramlar da
qurula bilər. Sonrakı illərdə bu dilin müxtəlif modifikasiyaları
yaradılmışdı.1960-cı ildə Alqol-60 (Alhoritmic Language-
alqoritmik
dil) dili, 1966-cı ildə isə Fortran dili əsasında Dartmut
kollecinin hesablama mərkəzində Basic dili (BASIC-
Beginner’s Allpurpose Symbolic İnstruction Code-yeni
başlayanlar üçün çoxməqsədli simvolik əmrlər dili) yaradıldı.
Basic dili Visual Basic.Net versiyasına qədər böyük təkamül
yolu keçmişdir. Hal-hazırda Visual Basic.Net dilindən qrafiki
interfeysli proqram əlavələrin yaradılmasında geniş istifadə
olunur.
27
Fortran, Alqol-60 dillərilə paralel olaraq intensiv inkişaf
edən elm və texnikanın yeni sahələrinin tələbatını ödəmək üçün
yeni proqramlaşdırma dilləri yaradılmışdır. Məsələn, 1957-ci
ildə riyazi verilənlərin emalı üçün APL (Aplication Program-
ming Language) dili, 1959-cu ildə İ BM firması tərəfindən
böyük həcmli verilənlər massivinin emalı üçün Cobol (Com-
mon Business Oriented Language) dili, mətn informasiyanın
emalı üçün 1962-ci ildə Snobol1, 1969-ci ildə çoxluqlar
üzərində əməliyyatlar aparmaq üçün SETL dili yaradılır.
Üçüncü nəsil kompüterlərin yaranması, universal alqor-
itmik dillərin yaradılması məsələsini qar şıya qoydu. Bu cür
dillərin yaradılması üçün edilən cəhdlərdən biri nəticəsində
İBM firması tərəfindən PL/1 (Programming-Language/1-
proqramlaşdırma dili-1) dili yaradılır. Bu dil Fortran, Alqol və
Cobol dillərinin əsasında yaradılmış və bu dillərin üs-
tünlüklərini özündə birləşdirmişdi.
1971-ci ildə Nikuls Virt tər əfindən Paskal2 dili
yaradılır. Bu dil struktur proqramla şdırma ideyasının, yəni
proqramın kiçik, dəqiq təyin edilmiş prosedurlardan tədricən
qurulması ideyasının həyata keçirilməsini təmin edən ilk dildir.
1983-cü ildə Pentaqonda Ada 3 dili yaradılır. Bu dil əsasən
hərbi və bğyük sənaye layihələrinin yaradılmasında istifadə
edilir. Dil birinci proqramlaşdırıcı – qrafinya Ada Lavlaysın
şərəfinə adlandırılmışdı r. 1972 -ci ildə Kreniqan və Ritçi
tərəfindən C dili, 1986-cı ildə onun bazasında Brayn Straustrup
tərəfindən problem yönümlü C++
dili yaradılır. C/C++
dili-
28
universal dil olub, sistem proqramlarının yaradılmasında, o
cümlədən geniş yayılmış UNİX əməliyyat sistemi üçün ko-
dların yazılmasında geniş istifadə olunur. 1995-ci ildə Sun Mi-
crosystems kompaniyasında Java dili yaradılır. Qeyd etdiyimiz
dillərdən başqa dillər də mövcuddur və bu dillərin yaradılması
prosesi davam etdirilir.
XX əsrin 90-cı illərindən başlayaraq Web proqram-
laşdirma dilləri meydana gəldi. Web proqramlaşdirma dilləri
Web səhifəl ərin idarə olunmasında istifadə olunur. Onlara
misal olaraq HTML, XML, JavaScript, VbasicScript, Perl, Pay-
ton göstərmək olar.
29
II FƏSİL. TURBO-PASKAL ALQORITMIK DILI
2.1. Giriş
Turbo-Paskalı çağırmaq üçün kompüterlərin kataloq-
larının ağacvari strukturasında TURBO.EXE faylını axtarmaq
lazımdır, həm də TURBO.HLP (məlumat xidməti
proqramxanası) TURBO.TPL (translyatorun kitabxanası)
ıstemdə saxlanılır. Proqramı yazan zaman kompüterin qrafik
imkanlarından istifadə etmək üçün GRAPH.TPU kitabxana
faylı və qrafik drayveri özündə saxlayan fayl lazım olur.
Məsələn, CGA.BGI. Buna görə də qrafik drayverin tipi və
faylın adı konkret kompüterin aparat vasitələrindən asılıdır.
CGA drayveri IBM kompüterin əksəriyyətində saxlanılır.
Əksəriyyət hallarda Turbo-Paskala aid olan bütün fayllar TP,
TURBO, TURBOPAS, PASCAL adlı kataloqlarda və ya onlara
uyğunkataloqlar saxlanılır.
Tutaq ki, bu katalokı TP adlanır və S diskində yerləşir.
Onda Turbo-Paskalı çağırmaq üçün aşağıdakı əmri vermək
lazımdır.
C:\TP\TURBO.EXE
Ya da kataloqların ağacvari strukturasında kursoru TRBO.EXE
faylının üzərinə gətirib ENTER düyməsini sıxmaq
lazımdır.Sistemi çağırdiqdan sonra kompüterin ekranının
yuxarı sətrində Turbo-Paskalın iş rejimləri menyusu, aşağı
sətrində əsas funksional klavişlərin mənası haqqında qısa
məlumat verilir (şəkil 1).Ekranın qalan hissəsini redaktor
pəncərəsi adlandırmaq olar. Bu pəncərə Turbo-Paskalda
yazılmış proqramı daxil etməkdən və mətn üzərində
korreksiya etməkdən və mətn üzərində korreksiya etməkdən
30
istifadə olunur. Pəncərənin yuxarı sətri (ekranın ikinci sətri)
mətin redaktorunun xidməti məlumatını özündə saxlayır:
kursor duran sətrin nömrəsini və mövqeyini, redaktə olunan
faylın adını və s. Redaktor pəncərəsindən və nəticələrin
çıxarılması pəncərələrindən istifadə olunur{şək.2.1.).
Şək.2.1.Turbo-Paskalın ekran görünüşü
2.1.2. Funksianal klavişlər
Funksional klavişlər F1...F10 simvolları ilə qeyd olunub
klaviaturanın yuxarı. birinci sətrində yerləşir. Bu klavişlərin hər
bırı bır neçə əmrlə əlaqəlidir və onları idarə edir. Bu klavişlərin
hər birini iki xüsusi klavişin ALT (ALTernative- tamamlayıcı)
və CTRL (ConTRoL- idarə) köməyi ilə modifikasiya etmək
olar.
ALT və CTRL klavişləri həm də müvəqqəti registrlərin
dəyişdirilməsi üçün də istifadə olunur. Əvvəlcə bu klavişlərdən
birini basmaq, sonra klavişi buraxmadan funksional
klavişlərdən birini basmaq lazımdır. Bundan sonra bu
klavişlərin kombinasiyasını tire işarəsi ilə göstərəcəyik.
Məsələn, ALT-F3 kombinasiyasının mənası o deməkdir kı,
31
ALT klavişi ilə F3 klavişini birgə sıxmaq lazımdır, CTRL-F9 -
CTRL klavişi ilə F9 klavişi birgə basılmalıdır.
Aşağıda funksional klavişlərin və onların bir neçəsinin
ALT və CTRL klavişləri ilə kombinasiyası və onların mənası
göstərilmişdir.
F1 - məlumat xidmətindən hər hansı bir məlumatı almaq.
F2 - redaktə olunan faylı diskə yazmaq.
F3 - diskdən faylı oxumaq.
F4 - proqramın yerinə yetirilməsinə başlamalı, yaxud da
davam etdirməli, hansı sətir icra edilirsə, kursoru onun
qarşısında saxlamalı (sazlama rejimində istifadə edilir).
F5 - ekrana iki pəncərəni yerləşdirir: sazlama və redaktor
pəncərəsini. F5 düyməsinin yenidən basılması ekranı ilkin
vəziyyətə gətirir.
F6 - redaktor pəncərəsini sazlama pəncərəsinə dəyişir.
F7 - proqramın növbəti sətirini yerinə yetirir. Əgər
notirdə proseduraya (funksiyaya) müraciət varsa proseduraya
dstxil olur (sazlama rejimində istifadə olunur).
F8 - proseduraya daxil olmadan proqramın növbəti
uutirini yerinə yetirir.
F9 - proqramı yerinə yetirmədən komplaysiya edir.
F10 - əsas menyunun köməyilə iş rejimini seçmə
dialoquna keçir.
Alt-F3 - Turbo.PCK fayllar siyahısından proqramlardan
birini redaktora yükləyir.
Alt-F5 – redaktor pəncərəsini çıxış nəticələri pəncərəsinə
dəyişir.
Alt-F6 – Turbo.PCK fayllar siyahısından axırıncı
proqramı redaktora yükləyir.
32
Alt – Turbo-Paskalda işi qurtarır.
Ctrl-F9 – redaktorda yerləşən proqramı kompilyasiya və
icra edir.
Funksional klavişlər haqqında ətraflı məlumatı Turbo-
Paskalın əsas menyusundan almaq olar. Ən əsas sizə
aşağıdakılar lazım olacaq. Sizin proqramın işlənməsini
yoxlamaq üçün Ctrl-F9, Turbo-Paskaldan çıxarmaq üçün Alt-X
və istənilən vaxt çıxış nəticələrinə baxmaq üçün Alt-F5.
2.1.3. Mətn redaktoru
Turbo-Paskalın mətn redaktoru populyar redaktor olan
WordStar əsasında qurulmuşdur. Əsas menyunun seçmə
vəziyyətindən redaktor vəziyyətinə keçmək üçün ESC
düyməsini basmaq lazımdır. Redaktor pəncərəsində sayrışan
kursor vardır ki, o da yazılan simvolun mövqeyini göstərir.
Əsas menyudan seçmə vəziyyətində kursor itir və menyu
sətirində düzbucaqlı şəklində rəngli göstərici görünür ki, bu da
hər hansı açar sözünü seçmək üçün istifadə olunur.
Proqramın mətnini yaratmaq üçün sadəcə olaraq o mətni
klaviaturadan daxil etmək lazımdır.
Əgər kursor özünün yerdəyişməsi ilə axırıncı sətirə
keçirsə, onda proqramın mətni bir sətir yuxarı sürüşür. Əgər
kursor ekranın sağ tərəfinə çatırsa və simvolların daxil edilməsi
davam edirsə, onda pəncərə də simvollar daxil edildikcə sağa
sürüşür. Sətirin maksimal uzunluğu 249 simvoldur. Turbo-
Paskalın komplyatoru bir sətirdə 126 simvola qədər qəbul edir.
Şaquli uzunluğu 64535 simvola qədərdir.
Pəncərəni aşağıdakı düymələrin köməyi ilə yerini
dəyişmək olar.
33
PageUp - səhifə yuxarı
PageDown - səhifə aşağı
Nome - cari sətirin başlanğıcına
End - cari sətirin sonuna
Ctrl-PageUp - mətnin başlanğıcına
Ctrl-PageDown - mətnin sonuna.
Kursor ekranda daxil ediləcək simvolun mövqeyini
göstərir. Əgər siz simvolların daxil edilməsində səhv
etmişsinizsə, onları silmək olar.
Delete-kursor üzərində duran simvolu silir.
Backspece-kursorun solundakı simvolu silir.Ctrl-Ykuror
duran sətri silir.
Sətiri bölmək, yəni yasını yeni sətrə keçirmək və ya
ümumiyyətlə yeni sətrə keçmək üçün Enter düyməsindən
istifadə edilir.
2.2. Dilin əsas elementləri
2.2.1. Dilin əlifbası
Hər bir dildə olduğu kimi Turbo- Paskalın da öz qanuna
uyğunluqları vardır. Yəni, əgər proqramın yazılışında bu
qaydalara riayət olunmazsa translyator buraxılmış qramatik
səhvləri aşkar edəcəkdir. Ona görə də Turbo-Paskala daxil olan
simvolları və açar sözləri öyrənək. Turbo-Paskalın əlifbasına
hərflər, rəqəmlər, 16- lıq rəqəmlər və xüsusi simvollar daxildir.
1. Latın əlifbasının a-dan z-ə qədər kiçik və A- dan Z - ə
qədər olan böyük hərflərindən operatorların, dəyişənlərin
yazılışında istifadə edilir. Turbo-Paskalda proqramın yığıl-
masında kiçik və böyük hərflərin fərqi yoxdur.
34
2. 0,1,...9 ərəb rəqəmlərindən ədədləri təsvir etmək üçün
istifadə olunur.
3. Xüsusi simvollardan və simvolların kombinasiyasından
istifadə edilir.
+ - * = , . : / ; < > [ ] { } ^ @ $ # ( ) ^ @ < > <= >=
:= (* *) (. .) ($) _ '
Lakin ifadələrin yazılışında bir və ya bir neçə boşluq
işarəsi qoymaq olar. Məsələn:
A:=A+1 və A:=A +1 eyni ifadədir.
ASCII-nin 128-255 kodlarına uyğun simvolları əlifbaya
daxil deyil. Ancaq onlardan komentariyaların yazılışında
istifadə oluna bilər.
ASCII-də 0-31 idarəedici kodiarı
Açar sözlər
Absolute For Nil string
And Forward Not then
Array Function Of to
Begin Goto Or type
Case If Packed unit
Const Implementati Procedure until
Div on Program uses
Do In Record var
Downto Inline Repeat while
Else Interface Set with
End Interrupt Chl xor
External Label Shr
File Mod
35
Proqram yazarkən mürəkkəb elementlər arasında boşluq
işarəsi qoymaq olmaz.
Məsələn:
> =
Standart funksiyalar və açar sözləri identifikator kimi
ıstifadə etmək olmaz.
2.2.2. İdentifikatorlar
İdentifikatorlar hərflə başlayaraq hərf, hərf rəqəm və (alt
xətt) simvolları kombinasiyasından təşkil edilirlər. İdentifi-
katorlar ixtiyari uzunluqlu ola bilərlər, lakin translyator ilk 63
simvolu qiymətli simvol sayır.
Turbo-Paskalda identifikatorlar konstantaların, dəyişən-
lərin, nişanların, tiplərin, praseduralann, modulların, faylların,
proqram və yazılarda sahələrin adlandırılmasında istifadə
olunur.
Boşluq və Turbo-Paskalın xüsusi simvollarından iden-
tifıkator kimi istifadə etmək olmaz.
Düzgün yazılmış identfikatora aid misal:
a, ALFA, DATA_27
Düzgün yazılmamış idintfikatrolara misal:
-beta, blok#1, mod, xor
36
2.2.3. Turbo-Pascal proqramının strukturu
Turbo-Paskalın quruluşuna aşağıdakı bölmələr daxildir:
PROGRAM
USES
CONST
TYPE
VAR
PROCEDURE
FUNCTION
BEGIN
END.
Proqramın sonu mütləq '.' simvolu ilə qurtarır. Yuxarıdakı
ardıcıllığa standart proqramda mütləq riayət olunmalıdır.
Turbo-Paskalda isə bölmələr ixtiyari ardıcıllıqda gələ bilər
(PROGRAM əvvəl, əsas blok sonda gəlir). Bəzi bölmələr
Turbo-Paskal proqramında iştirak etməyə bilər. Bölmələrin
funksiyalarını öyrənək.
PROGRAM <proqramın adı> (INPUT, OUTPUT);
direktivi Turbo-Paskal üçün məcburi deyil. Proqrama ad
vermək üçün istifadə olunur.
1) USES-direktivi Turbo-Paskalın standart proqram proq-
ramxanasından istifadə etməyə imkan yaradır. Bununla da da
Turbo-Paskalın CRT, DOS, GRAPH proqramxanalarındakı
prosedura və funksiyalardan proqramda istifadə edilə bilər.
Əgər bu bölmədən istifadə edilirsə USES operatoru növbəti
bütün bölmələr önündə gəlməlidir və o proqramda yalnız bir
dəfə yazıla bilər.
Məsələn:
37
USES CRT, DOS, GRAPH;
WINDOWS -da
USES WINCRT, WINDOS;
Aydındır ki, bu bölmə ilə birləşdirilən prosedura və
funksiyalar proqramda təsvir edilmirlər.
2) Proqramda istifadə edilən nişanlar LABEL
bölməsində bir- birindən vergüllə ayrılma ilə təsvir edilir.
Proqramda bir neçə LABEL bölməsi ola bilər. Lakin onlar əsas
blokdan öndə gəlməlidirlər. Nişan kimi [0,9999] parçasında
tam ədədlərdən və ya identifikatorlardan istifadə edilə bilər.
Məsələn:
LABEL A1, BB9, 12, 7;
3) Proqramda istifadə edilən sabitlər CONST
bölməsində təsvir edilir.
Məsələn:
CONST PI=3.14159;
4) Bəzən proqramda standart tiplərlə yanaşı yeni
tiplərdən istifadə etmək məqsədə uyğun sayılır. Bu halda yeni
tiplər TYPE bölməsində təsvir edilməlidirlər.
Məsələn:
TYPE
TAM=INTEGER;
MAS=ARRAY[1..50]OF REAL;
5) Proqramda istifadə olunan qlobal dəyişənlər
VAR bölməsində təsvir edilirlər.
Məsələn:
VAR
l,J,T:INTEGER;
38
K,ALFA:REAL;
6) Proseduralar və funksiyalar əsas blokdan əvvəl
təsvir edilirlər. Prosedura və funksiyalar proqramda ixtiyari
sayda ola bilər. Lakin çalışmaq lazımdır ki, onlara müraciət
olunana qədər təsvir və təyin edilsinlər.
7) Proqramın əsas blokunun mətni
BEGIN
- - - - -
END. arasında yerləşir.
END. operatorundan sonra gələn istənilən informasiya
translyator tərəfindən emal olunmur.
Turbo-Paskalın kompilyatoru hər bir proqram sətrində
126 simvolu emal edir. Yəni hər bir sətirdə 126 simvoldan çox
ola bilməz.
2.2.4. Komentariyalar (şərhlər)
Turbo-Paskalda proqram hissələrində izahatlar vermək
üçün komentariyalardan istifadə edilir. Komentariyalar iki
şəkildə verilə bilər.
{ixtiyari mətn}
(*ixtiyari mətn *)
mətn bir neçə sətirdə də verilə bilər.
{1-ci sətir
2-ci sətir
3-cü sətir}
Əgər '{'-dan sonra $ işarəsi gəlirsə bu komentariya
kompilyator üçün direktiv kimi başa düşülür. Yəni $
işarəsindən sonra kompilyator əmrinin mnemonikası gəlir.
39
Komentariyalar eyni adlı şərh simvolları arasında
olmalıdır.
Məsələn aşağıdakı yazılış düzgün deyil.
{düzgün deyil *) və ya (*düzgün deyil}
Komentariyalarda bir-birinin daxilində eyni adlı şərh
simvollarından istifadə etmək düzgün deyil.
Məsələn aşağıdakı yazılış düzgün deyil.
{düzgün deyil {düzgün deyil} düzgün deyil}
və ya
(*düzgün deyil (*düzgün deyil *) düzgün deyil *)
Müxtəlif tip şərh simvollarından istifadə edərək aşağıdakı
kimi yazmaq olar.
{düzgündür (* düzgündür *) düzgündür}
və ya
(* düzgündür {düzgündür} düzgündür *)
Müxtəlif tip şərh simvollarından istifadə edərək
aşağıdakı kimi yazmaq olar.
{düzgündür (* düzgündür *) düzgündür}
və ya
(* düzgündür {düzgündür} düzgündür *)
40
2.2.5. Verilənlər
Turbo-Paskal proqramında istifadə edilən hər bir verilən
əvvəlcədən təyin edilən (VAR və ya TYPE bölməsində) tipdən
asılıdırlar. VAR bölməsində əsasən verilənlər standart tiplər ilə
elan edilirlər. Standart tipləri şərti olaraq sadə və mürəkkəb
tiplərə bölə bilərik.
Sadə tiplər aşağıdakılardır.
1. ədədi qiymət alan tiplər.
BYTE - işarəsiz qısa tam
SHORTINT - işarəli qısa tam
WORD - işarəsiz tam
INTEGER - işarəli tam
LONGINT - işarəli uzun tam
REAL - həqiqi
2. BOOLEAN - məntiqi tip
3. CHAR - simvol tipi
4. STRING, STRING[N] - sətir tipi
5. POINTER - ünvan (göstərici) tip
6. Sadalanan tip
7. Məhdud tiplər
Əgər kompüterdə riyazi həmprosessor olarsa ədədi
tiplər genişlənə bilər.
Mürəkkəb tip verilənlər sadə tiplərdən təşkil edilirlər.
1. ARRAY of - massivlər
2. SET of - çoxluqlar
3. TEXT, FILE, FILE of - fayllar
41
4. OBJECT - obyekt
5. ^ baza tip - müraciət tip
2.3. Verilənlərin tipləri
2.3.1. Tam tip verilənlər
Turbo-Paskalda 5 müxtəlif tam tipin olması proqramın
emalı zamanı yaddaşdan qənaətlə istifadəyə gətirir. Tam
tiplərin aşağıdakı cədvəlini nəzərdən keçirək.
Tipin adı Tutduğu sahə Dəyişmə oblastı
BYTE 1 bayt [0,255]
SHORTINT 1 bayt [-128,127]
WORD 2 bayt [0,65535]
INTEGER 2 bayt [-32768,32767]
LONGINT 4 bayt [-2147483648,2147483647]
Tam ədədlərin qarşısında $ simvolu yazmaqla ədədi 16
- Iıq say sistemində təsvir edə bilərik.
Məsələn:
$17, $A3
16 - lıq rəqəmlər olan A, B, C, D, E, F ixtiyari registrdə
yazıla bilər (yəni yuxarı və aşağı registirlərdə). Yaddaşda
WORD, INTEGER və LONGINT tam verilənləri bayt
prinsipi üzrə (kiçik-kiçikdə, böyük-böyükdə) yaddaşa yazılır.
Yəni tutaq ki, A1 ədədi verilərsə, yaddaşda
A $A1
A+1 $12
42
kimi yazılır.
Tam tip dəyişənləri təsvir etmək üçün struktura ümumi
halda aşağıdakı kimi yazılır.
<dəyişənlərin siyahısı>: <tip>;
Məsələn:
VAR
A, B: INTEGER;
C, D: BAYT;
Tam tip dəyişənlər üzərində aşağıdakı əməliyyatları
aparmaq olar.
:= - (mənsubetmə);
+ - (toplama);
- - (çıxma);
* - (vurma);
DIV - (tam bölmə);
MOD - (bölmə nəticəsində qalığın hesablanması);
Məsələn:
Tutaq ki, A=25 və B=3 ədədləri verilmişdir. Onda,
A D IV B=8
A MOD V = 1
Tam tip dəyişənlərin qiymətlərini həqiqi tip dəyişənə
mənimsətmək olar. Lakin həqiqi tip dəyişənin qiymətini tam tip
dəyişənə mənimsətmək olmaz.
Bu əməliyyatlardan başqa tam tip dəyişənlər üzərində
aşağıdakı əməliyyatları da aparmaq olar.
1) Verilmiş tam ədəddən sonra gələn tam ədədi
almaq üçün SUCC funksiyasından istifadə etmək olar.
2) Verilmiş tam ədəddən əvvəl gələn tam ədədi
almaq üçün PRED funksiyasından istifadə etmək olar.
43
Misal:
SUCC (10)=11
PRED (10)=9
2.3.2. Həqiqi tip dəyişəniər
REAL tip dəyişənləri iki formada: tam və kəsr hissəsi
bir-birindən nöqtə ilə ayrılan və ya eksponensial formada
verilirlər.
Məsələn:
09, -11.29, 1255.75
1.2E-3, -.25E3
REAL tiplərin aşağıdakı cədvəlini nəzərdən keçirək.
Tipin adı Tutduğu sahə Dəyişmə oblastı
REAL 6 bayt 2,9∙10-39
∙∙∙1,7∙1038
SINGLE 4 bayt 1,5∙10-45
∙∙∙3,4∙1038
DOUBL 8 bayt 5∙10-324
∙∙∙1,7∙10304
EXTENDED 10 bayt 3,4∙10-4932
∙∙∙1,1∙104932
COMP 8 bayt -2-63
+1∙∙∙263
-1
Həqiqi tip dəyişənləri təsvir etmək üçün struktura ümumi
halda aşağıdakı kimi yazılır.
<dəyişənlərin siyahısı> : <tip>;
Məsələn:
VAR
A, B, : REAL ;
Aşağıdakı hallarda həqiqi ədədlərdən istifadə etmək
olmaz:
44
1) Məhdud tiplərin təsviri zamanı onların
sərhədlərinin göstərilməsində;
2) İndeks kimi;
3) PRED və SUCC funksiyalarının arqumenti kimi;
4) Çoxluqlann baza tipi kimi;
5) FOR operatorunda sayğac kimi və variant
operatorunda (CASE) spektor və nişan kimi;
Həqiqi tip dəyişənlər üzərində aşağıdakı əməliyyatları
aparmaq olar.
:= - (mənsubetmə);
+ - ( toplama);
- - (çıxma);
* - (vurma);
/ - (bölmə)
Əgər ifadədə həm həqiqi, həm də tam tip dəyişən iştirak
edərsə hesablama zamanı tam tip dəyişən həqiqi tip dəyişənə
çevrilir.
Məsələn:
VAR
A,B,C: REAL;
N: INTEGER; olarsa,
Onda C:=A+B*N ifadəsi qiyməti həqiqi tip olar. Çünki B*N
əmə l i y y a t ı yerinə yetirilən zaman N tam dəyişəni
həqiqi ədədə çevrilir və sonra hesablama prosesi gedir. Bir çox
standart funksiyaların arqumentləri həqiqi ədəd olduqda onların
qiymətləri həqiqi ədəd olur. Bunlara misal olaraq aşağıdakıları
göstərmək olar.
SQR(X), ABS(X), EXP(X), SIN(X) və s.
45
Aşağıdakı funksiyalara arqumentləri həqiqi ədəd
olduqda onların qiymətləri tam ədəd olurlar.
1) TRUNC (X) - bu funksiya x-in tam hissəsini
hesablayır.
Məsələn:
TRUNC (3.75)=3
TRUNC (-5.2)=-5
2) ROUND (X) - funksiyanın qiyməti x-ə yaxın olan
tam ədəddir.
Məsələn:
ROUND (3.75)=4
ROUND (-5.2)=-5
2.3.3. Bul və ya məntiqi tip verilən
Bu tipə malik olan dəyişənlər iki qiymət alır:
FALSE(yatan), TRUE(doğru) və yaddaşda bir bayt yer tutur.
Bu qiymətlər üçün aşağıdakı münasibət doğrudur.
TRUE>FALSE
Bul dəyişənləri üzərində aşağıdakı əməliyyatları
aparmaq olar.
OR - məntiqi toplama əməli
AND - məntiqi vurma əməli
NOT - inkar
Əgər ifadədə iştirak edən bütün dəyişənlər bul tipinə
malikdirsə onda ifadənin qiyməti də bul tipinə malik olacaq.
Bul tipli dəyişənlər üzərində aşağıdakı müqayisə
əməliyyatlarını aparmaq olar.
>(böyükdür), <(kiçikdir), =(bərabərdir), >=(böyük və
46
ya bərabərdir), <=(kiçik və ya bərabərdir), o(fərqlidir)
Məsələn:
VAR
A,B,C:BOOLEAN;
C:=A and B;
Bul tip dəyişənlər üzərində müəyyən funksiyaları
işlətmək olar.
1) ODD(X). X arqumenti tam tipə malik olmalıdır.
Əgər arqumentin qiyməti cüt olarsa funksiyanın
qiyməti TRUE(doğru), əks halda isə FALSE(yalan) qiymət
alacaq.
2) eoln ilkin verilənləri daxil edən zaman sətirin
sonu çatdıqda funksiya TRUE, əks halda FALSE qiymətini
alır.
3) EOF giriş verilənlərin oxunması sona çatdıqda
funksiya TRUE, əks halda FALSE qiymətini alır.
4)
2.3.4. Simvol tip verilən
Simvol tipli verilənlər yaddaşda bir bayt yer tutur. Bu
tip verilənlər tək dırnaq arasında yazılır və ASCII kodlarına
uyğun simvollar ilə təyin edilir. Simvol tipli verilənləri təsvir
etmə üçün CHAR açar sözündən istifadə olunur və aşağıdakı
kimi yazılır.
<dəyişənlərin siyahısı>:char;
Simvol tipli dəyişənlər üzərində mənsubetmə və
müqayisə əməliyyatları aparmaq olar.
Məsələn:
47
VAR
A, B: char;
A:= 'U'
B:='K'
Simvol tipli dəyişənlərin qiymətləri üzərində müəyyən
əməliyyatlar aparmaq üçün çoxlu sayda standart funksiyalar
vardır. Onlardan ən çox istifadə olunan ORD və CHR
funksiyalarıdır.
ORD funksiyasının arqumenti simvol tipli dəyişən
olmalıdır və funksiyanın qiyməti həmin simvolun sıra
nömrəsidir.
Məsələn:
ORD(':')=58
ORD('5')=53
CHR funksiyası ORD funksiyasının əksinə olan
əməliyyatı yerinə yetirir. Bu funksiyanın arqumenti tam ədəd
olmalıdır. Bu funksiya arqumentin qiymətindəki sıra nömrəyə
uyğun simvolu verir.
CHR(66)='B'
CHR(57)='9'
CHR(ORD(S))='S'
CHR (ORD(l))= 'I'
Bunlardan başqa Turbo-Paskalda simvol verilənlər ^(kore) və ya #(diez) simvolları ilə verilə bilər. ASCII-nin 0-31
kimi kodları (idarəedici) ^ilə başlayaraq verilərsə simvol
verilən adlanır.
Məsələn:^G
# simvollardan sonra gələn ədədlər ASCII kodlar
cədvəlindəki simvolları verir.
48
Məsələn:
#65→'A' #7→^G
2.3.5. Sətir tip verilənlər
Standart Paskaldan fərqli olaraq Turbo-Paskalda STRING
tip işarələr sətirindən istifadə etmək olar. İşarələr sətiri tək
dırnaq arasına alınmış ixtiyari simvollar ardıcıllığıdır (0-255-ə
qədər simvol) '9029A1 FAK MM'
2.3.6. Dəyişənlər
Dəyişən - proqramda müxtəlif qiymət alan obyektlərə
deyilir. Hər bir dəyişən əvvəlcədən müəyyən bir tip ilə
əlaqələndirilir və bu tipə uyğun qiymətlər alır. Proqramda
istifadə edilən dəyişənlər VAR bölməsində elan olunmalıdırlar.
Yazılışı ümumi şəkildə aşağıdakı kimidir.
VAR
<dəyişənin adı[,dəyişənin adı[,...]]>:<dəyişənin tipi>;
<dəyişənin adı[,dəyişənin adı[,...]]>:<dəyişənin tipi>;
Məsələn:
VAR
X:REAL;
Y:BYTE;
a,b:INTEGER;
S:CHAR;
St1:STRING;
St2:STRING[10];
ST2-nin təyinində [ ] arasındakı ədəd ST2-nin 10
49
simvoldan çox olmayacağına göstərişdir.
2.4. İfadələr. Sadə giriş-çıxış operatorları
2.4.1. İfadələr
Turbo-Paskalda ifadələr unar (bir operandlı) və binar
(iki operandlı) əməliyyatlardan təşkil oluna bilərlər.
Bütün tipə malik dəyişənlər və sabitlər ifadələrdə
istifadə oluna bilər. İfadələr dairəvi mötərizələrdən və hesab
əməl işarələrindən ibarət olub yeni qiymət almaq üçün
verilənlərin elementləri üzərində əməllərin yerinə yetirilməsi
qaydasını göstərir.
İfadələrin aşağıdakı növləri vardır:
- hesabi ifadələr;
- məntiqi ifadələr;
- müqayisə əməliyyatları ilə olan ifadələr;
- simvol və sətiri tip ifadələr;
İfadələrə aid misallar;
(a+b)*2
a>b
sin(t)
A A ND B
'B'+'A'+'K'+'U'
Mürəkkəb ifadələrdə əməliyyatların yerinə yetirilmə-
sinin üstünlük dərəcələri aşağıdakı kimidir.
1) @ (ADDR funksiyası), NOT, -, + unar əməliyyatlar
2) *, /, DIV, MOD, AND, SHL, SHR multiplikativ əməliyyatlar
50
3) +, -, or, xor additiv əməliyyatlar
4) =, <>, >, <, <=, >=, in münasibət əməliyyatlar
İfadələrdə əməliyyatların üstünlüyünü pozmaq üçün
(və) mötərizələrdən istifadə edə bilərik. Eyni üstünlüyə malik
olan əməliyyatlar ardıcıllığı soldan sağa yerinə yetirilir.
DIV - tam bölməni, yəni qalıq hissəni atmaqla bölməni
yerinə yetirir.
Məsələn:
7 div 2=3; (-7) div 2=-3; 3 div 5=0
MOD - bölmədən alınan qalıq hissəni təyin edir.
Məsələn:
7 mod 2=1; 3 mod 5=3
Hesabi ifadələrdə iştirak edən operandlar ədədi qiymət
nlmalıdır. İfadələrdə standart funksiyalardan istifadə etmək
olar. Standart funksiyaların bəzilərini nəzərdən keçirək.
|X| → ABS(X)
x2 → SQR(X)
X → SQRT(X)
Inx → LN(X)
xy → EXP(Y*LN(X))
ex → EXP(X)
TRUNC(X) - ədədin tam hissəsi
TRUNC(5.2)=5; TRUNC(-5.8)=-5
FRAC(X) - ədədin kəsr hissəsini verir
FRAC(6.25)= 0.25
ROUND(X) - tam hissəyə yuvarlaqlaşdırır
ROUND(5.25)=5 ROUND(5.8)=6
SINX → SIN(X)
COSX → COS(X)
51
ARCTGX → ARCTAN(X)
ODD(X) funksiyası X cüt isə FALSE əks halda
TRUE qiymətini alır.
Münasibət əməliyyatları məntiqi ifadələrdə və STRING
tip ifadələrin müqayisəsində istifadə olunur. Münasibətin
nəticəsi TRUE və ya FALSE qiymətlərini alır. Məntiqi
əməliyyatların bəziləri aşağıdakı cədvəl ilə verilir.
X Y N O T X X O RY X A ND Y X X OR Y
0 0 1 0 0 0
0 1 1 1 0 1
1 0 0 1 0 1
1 1 0 1 1 0
2.4.2. Mənimsətmə operatoru
Mənimsətmə := işarəsinin köməyi ilə yerinə yetirilir.
Mənimsətmə operatoru ifadələrin qiymətlərini gələcək
hesabatlarda istifadə etmək üçün istifadə edilir. Ümumi şəkildə
aşağıdakı kimi yerinə yetirilir.
<dəyişən>:=<ifadə>;
Mənimsətmə operatoru yerinə yetirilən zaman
mənimsətmə işarəsinin sağ tərəfindəki ifadənin qiyməti
hesablanır və nəticə mənimsətmə işarəsinin sol tərəfindəki
dəyişənə mənimsədilir, ona uyğun yaddaş sahəsində saxlanılır.
Dəyişən və ifadə eyni tipə malik olmalıdır. Xüsusi halda
mənimsətmə işarəsinin sol tərəfindəki dəyişən həqiqi tip, sağ
tərəfindəki ifadə isə tam tip ola bilər.
Məsələn:
X:=5;
52
Y:=-12.55;
Z:=X+Y;
D:= 'BAKU';
İki mənimsətmə operatoru bir-birindən ';' simvolu ilə
ayrılmalıdır.
Məsələn:
X:=2*PI*R; SUM:=A+B;
BOOL:=a>b; d:=TRUE; S:='ALT;
Bəzən müəyyən şərtdən asılı olaraq müəyyən qrup
operatorlar ardıcıl olaraq yerinə yetirilməlidirlər. Onda bu
qrupu blok kimi təşkil edə bilərik. Blok BEGIN ilə başlamalı
END ilə qurtarmalıdır. Blokda olan operatorlar da bir-birindən
';' simvolu ilə ayrılırlar. END-dən əvvəlki operatordan sonra ';'
simvolu yazılmaya bilər.
Məsələn:
BEGIN y:=x/2; x:=x+h END;
Bir-birinin daxilinə qoyulmuş bloklar təşkil etmək olar.
Xaricdən yalnız blokun əvvəlinə (BEGIN operatoruna),
daxildən isə xaricinə idarəni ötürmək olar.
2.4.3. Çıxış operatorları
Biz əvvəlki mövzuda dəyişənlərə qiymətləri mənimsətmə
operatoru ilə mənimsətdik. İnformasiyaları dəyişənlərə sistem
giriş faylından və ya əvvəlcədən yaradılmış fayllardan da
mənimsədə bilərik. Yaddaş sahəsindəki qiymətləri sistem çıxış
faylına və ya hər hansı bir fayla göndərə bilərik. Bu məqsədlə
Turbo-Paskalda dəyişənlərə qiymət mənimsətmək üçün READ
və READLN dəyişənlərin qiymətlərini çıxışa vermək üçün isə
53
WRITE və ya WRITELN proseduralarından istifadə olunur.
Əvvəlcə WRITE (WRITELN) proseduralarını (operatorlarını)
nəzərdən keçirək. Operatorun ümumi yazılışı aşağıdakı
kimidir.
WRITE([F,] S);
Qeyd: [ ] mötərizə daxilindəki parametrlər operatorun yazılışında iştirak
etməyə də bilər.
Burada:
F - faylın məntiqi adı;
S - isə elementlərin siyahısıdır.
Əgər F göstərilməyibsə onda elementlərin qiymətləri
sistem çıxış faylı olan (OUTPUT faylına) displeyin ekranına
ötürüləcək. Fayllar haqqında gələcək mövzularda geniş
məlumat verəcəyik. Operatorda S bir-birindən vergüllə ayrılan
ədəd, simvol, sabit, məntiqi sabit, dəyişən, funksiya və ifadə
göstərilə bilər. Bütün verilənlərin qiymətləri WRITE
operatorunun yazılışındakı ardıcıllıq ilə displeyin ekranında əks
olunur və kursor cari sətirdə qalır. WRITELN operatoru isə
WRITE operatorundan fərqli olaraq kursoru növbəti sətrin
başlanğıcına keçirir.
WRITE(WRITELN) yazma operatorunda tək dırnaq
arasında yazılan istənilən işarə və simvol olduğu kimi xarici
qurğuya ötürülür.
Məsələn:
WRITE('Laboratoriya işi №1');
Bu operator yerinə yetirilən zaman ekranda nəticə
aşağıdakı kimi olacaq
Laboratoriya işi №1
54
Qiymətlərin ekranda əks olunması zamanı qiymətlər
arasında ayırıcı kimi boşluq simvolu qoyulmur. (yəni
verilənlərin qiymətləri bir-birindən ayrılmır)
Məsələn:
A:=1; B:=15; C:=3; N:='ALI';
WRITELN(A,B,C); operatorunun icrasından sonra
ekranda
1153
qiymətləri əks olunacaq. Qiymətləri bir-birindən iki qayda ilə
ayıra bilərik.
1) Boşluq işarəsindən istifadə etməklə.
Məsələn:
WRITE('A=',A,' B='B,' C=',C);
WRITELNC SALAM \N); operatorlarından sonra bir
sətirdə
A=1 B=15 C=3 SALAM ALI alarıq.
2) Elementlərin yerləşəcəyi sahənin eni spesifikatorundan
istifadə edə bilərik. Spesifikator aşağıdakı kimi təyin edilir.
WRITE(D:S);
Burada D – dəyişən;
S – isə sahənin uzuniuğudur.
S dəyişən üçün ayrılan sahənin uzunluğunu göstərir.
Məsələn:
WRITE(I:5);
Misalda I=105 olarsa nəticə aşağıdakı kimi olacaq.
_ _105
Başqa misala baxaq
A:=10; B:=2; C:=100;
55
WRITELN(A:2, B:2, C:2); olarsa nəticə ekranda
aşağıdakı kimi olar.
10 _ 2100 olar.
WRITELN(A, B:2,C:4); olarsa nəticə ekranda aşağıdakı
kimi olar.
10_2_100 olar.
Göründüyü kimi sahə böyük olarsa boşluqlar soldan əlavə
olunur. Sahə kiçik olarsa sahə sağa düzlənir.
Həqiqi tip dəyişənlər üçün belə spesifikator tətbiq
edildikdə qiymət eksponensial formada əks olunur.
Məsələn:
X:=421.53;
WRITELN(X); olarsa nəticə ekranda aşağıdakı kimi olar.
4.2153000000E+02 olar.
WRITELN(X:8); olarsa nəticə ekranda aşağıdakı kimi olar.
_ 4.2E+02 olar.
Həqiqi tip dəyişənlərin qiymətlərini sabit nöqtəli
formada vermək üçün spesifikatorun formatı aşağıdakı kimi
olar.
WRITE(D:S:DD);
Burada
DD - dəqiqlik onluq nöqtədən sonra gələn rəqəmlərin
sayını göstərir.
Məsələn:
WRITE(X:7:3);
Əgər X= -3.8591 olarsa nəticə aşağıdakı kimi olacaq.
_-3.859
WRITELNC (':25,ST); bu o deməkdir ki, ST-nin
qiymətindən əvvəl 25 boşluq burax.
56
Lazım gəldikdə düzləndirməni sol kənara görə apara
bilərik. Bunun üçün dəyişənin uzunluğu mənfi göstərilir.
Məsələn:
WRITE(223.654:-6:1); olarsa nəticə 223.7 olacaq.
Əgər X=421.53 olarsa və operator
WRITELN(X:-8:1); kimi yazılarsa nəticə
421.5 olar.
Çıxışa boş sətri vermək üçün WRITE (WRITELN)
operatorunu parametrsiz vermək kifayətdir.
2.4.4. İnformasiyanın klaviaturadan daxil
edilməsi
READ və READLN operatorları informasiyalan
fayldan əməli yaddaşa daxil edir. Ümumi şəkildə
aşağıdakı kimidir.
READ([F,] D);
READLN([F,]D);
Burada
F - faylın məntiqi adı;
D - dəyişənlərin siyahısıdır.
Əgər operatorun yazılışında F parametri iştirak
etməzsə onda D -n in qiymətləri sistem giriş INPUT
faylından (yəni klaviaturadan) daxil edilir .
D tam, həqiqi, simvol və sətiri tipdən ola bilər.
READ və ya READLN operatorları icra
olunarkən kompüter gözləmə rejiminə keçir və
siyahıdakı elementlərin qiymətlərinin klaviatur adan
daxil edilməsini gözləyir. Ədədi dəyişənlərin
qiymətlərini daxil edərkən boşluq, tabulyasiya və ya
57
sətrin sonu ( , ENTER) simvollarından ayrıcı kimi
istifadə etmək olar;
Məsələn:
READ(X.Y); operatoruna klaviaturadan,
411 512.9
və ya
411 J
512.9 daxil edə bilərik.
Simvol t ipli verilənlərin daxil edilməsində
ayırıcılardan ist ifadə edilmir. Yəni
Sətri dəyişənlərə qiymət daxil edilməsi zamanı
sətrin elanındakı uzunluğu qədər simvol daxil
edilməlidir. Bu halda sətrin dəyişənə mənimsədilən
simvol kimi -dən istifadə etmək olmaz. Çünki
burada da simvolu ayırıcı rolunu oynayır.
Klaviaturadan qiymət daxil edilməsi zamanı READ
və READLN operatorları arasında fərq yoxdur. Bir
neçə sadə misalları nəzərdən keçirək.
Misal 1.
PROGRAM ABC;
USES CRT;
VAR
X,Y:INTEGER;
FIND:BOOLEAN;
BEGIN
WRITELN('iki ədəd daxil et: ');
READ(X,Y);
FIND:=X>Y;
WRITELN('X böyükdür Y'.FIND);
58
END.
Misal 2. Üçbucağın A, V, S tərəflər i
verilmişdir. Sahəsini tapmalı.
PROGRAM UCBUCAQ;
USES CRT;
VAR
P,A,B,C,S:REAL;
BEGIN
WRITELN('üç ədəd daxil et ');
READ(AB.C);
P:=(A+B+C)/2;
S:=SQRT(P*(P-A)*(P-B)*(P-C));
WRITELN('üçbucağın sahəsi=',S:10:4);
END.
2.5. Keçid operatorların
2.5.1. Şərti keçid operatoru
Hər bir dildə olduğu kimi Turbo -Paskalda da
həll prosesini budaqlandırmaq üçün keçid
operatorlarından istifadə olunur. Şərti keçid
operatoru nəticədən asılı olaraq bir neçə şərti
yoxlamağa imkan verir. Şərti keçid operatoru
verilmiş sərtdən asıl ı olaraq hansı operatorun və ya
operatorlar qrupunun yerinə yetirilməsini və ya
yerinə yetirilməməsini təmin edir. Şərti keçid
operatoru ümumi şəkildə aşağıdakı kimi yazılır .
IF SS THEN OP1 ELSE OP2;
Burada
59
IF, THEN, ELSE -açar sözləri;
SS - məntiqi sabit(TRUE və ya FALSE),
məntiqi dəyişən və ya məntiqi ifadə;
OP1,OP2 - Turbo- Paskalın istənilən operatoru
və ya operatorlar qrupudur.
Şərti keçid operatoru aşağıdakı kimi işləyir.
Əvvəlcə məntiqi ifadə hesablanır (SS yoxlanıl ır).
Əgər SS dorudursa(TRUE), onda OP1 yerinə
yetirilir. Bu zaman ELSE oratorundan sonra gələn
OP2 buraxılır, əks halda əgər SS yalandırsa
(FALSE), onda OP1 buraxılır, OP2 yerinə yetiril ir.
Əgər OP1 və OP2 blok olarsa, onda operatorlar
qrupu BEGIN və END açar sözünün arasında yazılır.
OP1 və OP2 istənilən tip operator ola bilər, o
cümlədən şərt i keçid operatoru da ola bllər. Onda
operator aşağıdakı kimi olar.
IF SS1 THEN
IF SS2 THEN OP2
ELSE OP1
ELSE OP3;
Bu halda hər bir ELSE özündən əvvəl gələn IF -
ə mənsub olur.
Xüsusi halda ELSE sözünü yazmamaq olar.
Onda operator aşağıdakı kimi olar.
IF SS THEN OP;
Bu halda SS yoxlanılır , əgər SS doğrudursa
onda operator yerinə yetirilir və IF operatorundan
sonra gələn operatora keçid alınır. Əgər şərt doğru
deyilsə onda OP buraxılır IF operatorund an sonra
60
gələn operatora keçid alınır.
Məsələn:
VAR
z,a,b,c,d:INTEGER;
a:=1; b:=2; c:=3;d:=4;
IF a>b THEN
IF c<d THEN z:=a
ELSE z:=b;
IF a>b THEN
IF c<d THEN z:=a
ELSE
ELSE z:=b;
Aşağıdakı proqrama baxaq, burada 0...15
intervalında tam ədədlər daxil edil ir və onu 16-lıq
say sisteminə çevirib ekrana çıxarır. 16 -l ıq say
sistemində 16 rəqəm istifadə olunur. Onlardan
birinci on rəqəm 0, 1,2, 3, 4, 5, 6, 7, 8, 9 qalan altısı
isə A, V, C, D, E, F latın hərfləridir.
USES CRT;
VAR
CC: CHAR;
N:INTEGER;
BEGIN
WRITE('N='); READLN(N);
IF (N>=0) AND (N<=15) THEN
BEGIN
IF N<10 THEN
CC:=CHR(ORD('0')+N)
ELSE
61
CC:=CHR(ORD('A)+N-10);
WRITELN('CC=',CC);
END;
ELSE
WRITELN('SƏHV')
END.
Başqa misala baxaq. Aşağıdakı funksiyanı x, a,
b- nin qiymətini daxil etməklə hesablayaq .
USES CRT;
VAR
Y,X,A,B:REAL;
BEGIN
WRITE('X,A,B-');
READLN(X,A,B);
IF A>0 THEN
Y:=A*X*X+B
ELSE
IF A=0 THEN
Y:=SQR(B)
ELSE
Y:=-A*SQR(X)+B;
WRITELN('Y=',Y);
END.
0
0
0
2
2
2
a
a
a
bax
b
bax
y
62
2.5.2. Şərtsiz keçid operatoru
Turbo-Paskalda şərt yoxlamadan idarəni
proqramın ixtiyari yerinə ötürmək üçün şərtsiz keçid
operatorundan istifadə edilir .
Ü m u m i yazılışı aşağıdakı kimidir.
GOTO N;
Burada
N - idarə ötürüləcək operatorun nişanıdır.
Nişan LABEL blokunda təsvir edilən
nişanlardan biri olmalıdır.
Nişan ilə operator arasında : simvolu
qoyulmalıdır.
Məsələn
Aşağıdakı funksiyanı X={ -2;0,5;.. .}
qiymətlərini klaviaturadan daxili etməklə hesablayıb
displeyin ekranına ötürməli.
1
13
X
X
LNXX
SINXXY
USES CRT;
LABEL AA;
VAR
X,Y:REAL;
BEGIN
CLRSCR;
AA:WRITE('X- i daxil et ') ;
READLN(X);
IF X<1 THEN Y:=X*SIN(X)
ELSE
63
Y:=EXP(3*LN(X))*LN(X);
WRITELN('X=',X: -8:2/ Y=',Y:-10:4);
GOTO AA;
END.
2.5.3. CASE seçmə operatoru
Bəzən IF operatoru yerinə CASE seçmə
operatorundan istifadə etmək məqsədə uyğun sayılır .
Seçmə operatoru bir neçə operatordan birini
seçməyə imkan verir. Bu s e ç m ə açarının
köməyilə yerinə yetirilir.
Seçmə operatorunun ümumi yazılışı aşagıdakı
kimidir.
CASE SA OF
SS
ELSE OP
END;
Burada, SA-seçmə açarı;SS-seçmə siyahısı; OP-
operatordur.
SA STRING və REAL tip ola bilməz.
SA tam, məntiqi və simvoi tipli ola bilər.
SS aşağıdakı kimi oiur.
S: OP;
Burada
OP Turbo-Paskalın operatoru;
S - seçmə nişanlarıdır.
Bu nişanlar unikal olmalıdır. Lakin bu nişanlar LABEL
blokunda təsvir edilmir. S-in tipi SA-da olan ifadə və sabitin
64
tipinə uyğun olmalıdır.
Seçmə operatoru aşagıdakı kimi işləyir. Əvvəlcə SA
hesablanır. Sonra isə seçmə siyahısında həmin qiymət ardıcıl
olaraq axtarılır. Əgər həmin qiymət tapılırsa, onda onun
qarşısındakı operator yerinə yetirilir. Bundan sonra seçmə
operatoru öz işini qurtarır. Əgər seçmə siyahısında seçmə
açarına uyğun qiymət tapılmazsa, onda idarə ELSE sözündən
sonrakı operatora verilir.
Məsələn:
Dəyişənin qiymətini klaviaturadan daxil etməklə
aşağıdakı funksiyanın qiymətini hesablamaq üçün proqram
yazaq.
1xяэяр 2x
1xяэяр x
-1xяэяр x
y
USES CRT;
LABEL AA;
VAR
X, Y: INTEGER;
BEGIN
READLN (X);
CASE X OF
-1: Y:=ABS(X);
0: Y:=X;
1: Y:=2*X;
ELSE
WRITELN ('qiymətlər uyğun gəlmir');
READLN;
65
GOTO AA;
END;
WRITELN ('Y=\ Y);
AA:END.
Başqa bir misala baxaq.
Sadə kalkulyatora oxşar proqram tərtib edək. Proqram
iki sətir daxil etməyi tələb edir. Birinci sətrdə arasında boşluq
buraxılmaqla iki ədəd, ikinci sətirdə isə +, -, *, / hesab
işarələrindən birini daxil etmək lazımdır.
Proqram aşağıdakı kimi olar.
USES CRT;
VAR
OP: CHAR; {əməliyyatın işarəsi}
X, Y, Z: REAL; {operand və nəticə}
STOP: BOOLEAN; {dayanma və səhv
əməliyyatın işarəsi}
BEGIN
STOP:=FALSE;
REPEAT
WRITELN; {boş sətir}
WRITE ('X, Y='); READLN (X, Y);
WRITE ('OP'); READLN (OP);
CASE OP OF
'+'; Z:=X+Y;
'-'; Z:=X-Y;
'*': Z:=X*Y;
'/': Z:=X/Y;
ELSE
66
STOP:=TRUE;
END;
IF NOT STOP THEN
WRITELN ('nəticə=', Z);
UNTIL STOP
END.
Növbəti misala baxaq.
Y və u latın hərflərindən birini daxil etdikdə ekranda
'BƏLİ', N və n hərflərinin birini daxil etdikdə ekranda 'XEYR'
yazılsın. Başqa işarə, simvol daxil etdikdə ekrana 'düz deyil'
sözü yazılsın.
USES CRT;
VAR
ZN: CHAR;
BEGIN
READLN (ZN);
CASE ZN OF
'n', 'N': WRITELN ('XEYR');
'y', 'Y': WRITELN ('BƏLİ');
ELSE
WRITELN ('düz deyil');
END;
END.
2.5.4. Dövr operatorları
Turbo-Paskalda dövrü prosesləri idarə etmək üçün bir
neçə dövr operatorundan istifadə edilir. Turbo-Paskalda üç növ
dövr operatoru vardır.
67
1. FOR operatoru
Əgər dövrün başlanğıcı və sonu məlumdursa və dəyişmə
addımı 1 və ya -1-dirsə onda FOR operatorundan istifadə
etmək məqsədəuyğundur. FOR operatorunun köməyi ilə iki cür
dövr qurmaq mümkündür. Həm 1 addımla həm də -1 addım ilə.
Birinci hal üçün FOR operatorunun ümumi yazılışı
aşağıdakı kimidir.
FOR K:=Q1 TO Q2 DO OP;
Burada
K - dövr parametri adlanan dəyişən;
Q1 - dövr parametrinin ilkin qiyməti;
Q2 - dövr parametrinin son qiymətdi;
OP - Turbo-Paskalın operatoru və ya blokdur.
K, Q1.Q2 tam tipdəndirlər.
FOR aşağıdakı ardıcıllıqla işləyir. Əvvəlcə Q1 hesablanır
və K- ya mənimsədilir sonra dövr təkrarlanır. Dövrdə şərt
aşağıdakı kimi yoxlanılır.
K<= Q2
Əgər şərt ödənilirsə dövr təkrarlanır, əks halda şərt
ödənməzsə FOR operatoru öz işini qurtarır və idarəni özündən
sonra gələn operatora verir. Dövr parametrinin dəyişmə addımı
+1-dir.
Misal..Aşağıdakı proqramda FOR operatorunun köməyi
ilə 1-dən N-ə qədər olan tam ədədlərin cəmini tapaq.
USES CRT;
VAR
l,N,S:INTEGER;
BEGIN
WRITE('N-);READLN(N);
68
{N-in daxil edilməsi}
S:=0; {cəmin ilkin qiyməti}
FOR I:=1 TO N DO
S:=S+I;
WRITELN('cəm=',S);
END.
Misal: A massivinin 1, 3, 5, 10-cu elementlərinin
hasilini 2, 4, 6, 8, 9-cu elementlərinirı cəmini tapmalı.
USES CRT;
VAR
S,P:REAL;
I,N:INTEGER;
A:ARRAY[1..10] of REAL;
BEGIN
CLRSCR;
P:=1;S:=0;
FOR I:=1 TO 10 DO
BEGIN
N=I;
WRITE('A(',I,'));
READLN(A[I]);
CASE N of
1,3,5,10:P:=P*A[I];
2,4,6,7,9:S:=S+A[I];
END;
END;
WRITELN(S:10:2,'P=',P:10:4)
END.
69
İkinci halda yəni -1 addımla FOR operatorunun ümumi
yazılışı aşagıdakı kimidir.
FOR K:=Q1 DOWNTO Q2 DO OP;
Burada TO sözü DOWNTO sözü ilə əvəz edilib və onu
bildirir ki, dəyişmə addımı -1-dir. Burada idarəedici şərt
aşağıdakı kimidir.
K>= Q2
Əgər şərt ödənilirsə dövr təkrarlanır, əks halda FOR
operatoru öz işini qurtarır.
Yuxarıdakı proqramda dəyşiklik edərək aşağıdakı kimi
yazmaq olar ki, müsbət ədədləri topladığı kimi mənfi ədədləri
də toplasın.
S:=0;
IF n>=1 THEN
FOR I:=1 TO N DO S:=S+I;
ELSE
FOR I:=-1 DOWNTO N DO
S:=S+I;
- - - - - - - - - - - - - - -
2. REPEAT və UNTIL operatoru ilə təşkil olunan dövr
operatoru.
Dövrü proseslərin dövrlərinin sayı əvvəlcədən məlum
deyilsə və ya dövrü dəyişən vahid addım ilə deyil istənilən
addım ilə dəyişirsə və dövrün qurtarması şərti əvvəlcədən
məlum isə REPEAT və UNTIL operatorundan istifadə etmək
məqsədə uyğundur. Operatorun ümumi yazılışı aşağıdakı
kimidir.
REPEAT
DG
70
UNTIL SS;
Burada
DG - dövrün gövdəsi Turbo-Paskalın operatoru və ya
operatorlar qrupu;
SS - məntiqi ifadədir.
Bu operatorların icrası zamanı dövrün gövdəsi heç
olmasa bir dəfə yerinə yetirilir və ondan sonra dövr təkrarlanır.
Dövr operatoru aşağıdakı kimi işləyir.
Əgər SS ödənilməzsə (FALSE) onda dövr təkrarlanır.
Əks halda əgər SS ödənərsə (TRUE) onda REPEAT və UNTIL
operatorları öz işlərini qurtarır.
Misala baxaq. REPEAT və UNTIL operatorunun köməyi
ilə 1-dən N-ə qədər olan intervalda tək ədədlərin cəmini tapaq.
USES CRT;
VAR
I,S,N:INTEGER;
BEGIN
READLN(N);
S:=0;
I:=1;
REPEAT
S:=S+I;
I:=I+2
UNTIL(I>N);
WRITELN('S=',S);
END.
Yuxarıdakı misala baxın UNTIL operatorundan əvvəl
nöqtəli vergül qoymaq vacib deyil.
3. WHILE operatoru
71
Bu dövr operatorunun ümumi yazılışı aşağıdakı kimidir.
WHILE SS DO
OP;
Burada
SS - məntiqi ifadə;
OP - Turbo-Paskalın operatoru və ya blokdur.
WHILE operatoru yerinə yetirilən zaman dövrün
gövdəsi yerinə yetirilməyə də bilər. WHILE operatoru
aşağıdakı kimi işləyir.
Əgər məntiqi ifadə doğrudursa (TRUE) onda operator
yerinə yetirilir sonra şərtin yoxlanması təkrar olunur. Əks halda
şərt ödənilməzsə (FALSE) onda WHILE operatoru öz işini
qurtarır.
Bu operatorun köməyi ilə dövrlərin sayı məlum olmayan
dövrü prosesləri proqramlaşdırmaq daha məqsədə uyğundur.
Aşağıdakı proqramda
.....4
1
3
1
2
11
XXXXS
cəmini EPS=0.001
dəqiqliklə hesablayaq (burada, X ≠ 0).
USES CRT;
VAR
X,S,EPS:REAL;
I:INTEGER;
BEGIN
READLN(X.EPS);
l:=1;
S:=0;
WHILE ABS(1/(I*X))>EPS DO
72
BEGIN
S:=S+1/(I*X);
I:=I+1;
END;
WRITELN('S=',S);
END.
Başqa misala baxaq. WHILE dövr operatorunun köməyi
ilə 1-dən N-ə qədər olan intervalda tək ədədlərin cəmini tapaq.
USES CRT;
VAR
I,N,S:INTEGER;
BEGIN
READLN(N);
S:=0;
I=1;
WHILE I<=N DO
BEGIN
S:=S+I;
I:=l+2;
END;
WRITELN('S=',S)
END.
Göründüyü kimi WHILE operatorunun köməyi ilə
istənilən tip dövrü prosesi proqramlaşdırmaq olar.
73
2.6. Mürəkkəb tip dəyişənlər
2.6.1. Düzəltmə tiplər
Paskal dilində düzəltmə tip kimi iki: sadalanan və
məhdud tipdən istifadə edilir. Bu tiplər tam, simvol, məntiqi
sabitlərin sadalanması və ya sabitlərin müəyyən parçada
məhdudlaşdırılması ilə düzəldilir.
Sadalanan tipin standart forması kimi BOOLEAN tipi
göstərə bilərik. Bu tipin elementləri aşkar sadalanır.
Proqramçının təşkil etdiyi sadalanan tip isə TYPE bölməsində
təyin edilir. Yəni
TYPE
N=(elementlər ardıcıllığı);
N sadalanan tipə verilən adı göstərir. Elementlər
ardıcıllığı bir-birindən vergüllə ayrılan yuxarıda saydığımız
tiplərdən olan dəyişənlər və ya sabitlər ola bilər. Sadalanan tipə
daxil olan elementlərin sayı 256-dan çox ola bilməz.
Məsələn:
TYPE
RGB=(Red, Green, Blue);
DAY=(MON,TUE, WED, THU, FRI,
SAT, SAN);
Eyni elementləri bir neçə sadalanan tipdə göstərmək
olmaz.
Məsələn:
TYPE
DAY=(MON, SAT, SAN);
WEEK DAY=(SAT, SAN);
Hər bir sadalanan tipin elementləri daxili nömrələnmə ilə
74
təşkil edilir. Nömrələnmə sıfırdan başlayır.
Məsələn RGB tipində RED - 0-cı, GREEN - 1-ci və
BLUE - 2-ci nömrəyə malikdir. Bu tipə məxsus dəyişənlər
üçün ORD(X), SUCC(X), PRED(X) funksiyalarından istifadə
etmək olar (dəyişənin nömrəsini, növbəti dəyişənin nömrəsini,
bu dəyişəndən əvvəlki nömrəsini təyin edir). Bu funksiyaları
BYTE, WORD, INTEGER, LONGINT, CHAR, BOOLEAN
tiplərə tətbiq etmək olar.
Məsələn:
ORD(RED)=0; SUCC(RED)=1; PRED(BLUE)=1;
kimi təyin edilir.
ORD('A')=65; ORD('1')=49
Yəni CHAR tipinə ORD-ni tətbiq etdikdə A simvolunun
ASCII kodunu təyin edə bilərik. Sadalanan tipin elementləri ilə
massivi indeksləşdirə bilərik.
Məsələn
TYPE
MONTH=(JAN, FEV, MAR);
VAR
MAT: ARRAY[MONTH] of BYTE;
yazılışından sonra əsas blokda
MAT[MAR]:=12;
yaza bilərik.
Çox böyük etibarlılıq tələb edilən məsələləri
proqramlaşdırılmasında hər hansı bir dəyişənin müəyyən bir
interval daxilində qiymət alması tələb edilə bilər. Dəyişənin
verilən sərhəd daxilində qiymət almasının nəzarəti üçün
Paskalda məhdud tipdən istifadə edilir. Məhdud tip aşağıdakı
kimi təyin edilir:
75
TYPE
N=K1.. K2;
VAR
X: N; və ya
VAR
X: K1..K2;
Burada
X - məhdud tip dəyişən;
N - məhdud tipin adı;
K1- aşağı sərhəd;
K2- yuxarı sərhəd;
Məhdud tip elementlər tam, simvol sabitlərdən və
proqramçıların təyin etdiyi sadalanan tipdən ola bilər.
Məsələn:
TYPE
X=1..10;
HEX='A' .. 'F';
WORKDAY = MON..FRI;
Baza tipdən olan məhdud tipləri displeyin ekranı əks
etdirmək olar.
Məhdud tiplərin təyinində ifadələrdən istifadə etmək olar.
Lakin ifadə mötərizə ilə başlamamalıdır. Məsələn:
TYPE
RIGHT = 2*(1+3) ...25+4;
WRONG=(1+3)*2..25+4;
76
2.6.2. Mürəkkəb tiplər
Sadə və düzəltmə tiplər real məsələlərin
proqramlaşdırmasında bəzən kifayət etmir və ya səmərəsiz
olur. Buna görə də bir çox hallarda mürəkkəb tiplər massiv,
yazı və çoxluq tiplərdən istifadə edilir.
Əgər əməliyyatları eyni tipli verilənlər üzərində aparmaq
lazımdırsa, onlara ayrı-ayrı adlar vermək yerinən bir ad altında
birləşdirmək məqsədə uyğundur. Velə verilənlər çoxluğuna
massiv, massivin komponentlərinə isə massivin elementləri
deyilir. Massivin hər bir elementinə aşağıdakı kimi müraciət
edə bilərik.
<massivin adı> [<indekslər>]
Burada istifadə edilən [ , və ] simvolları məcburi
simvollardır.
<massivin adı> - identifıkatorun təyini qaydası ilə təşkil
edilir.
<indekslər> - bir-birindən vergül ilə ayrılır və elementin
çoxluqda tutduğu mövqeyini təyin edir. İndekslər mənfi və ya
müsbət tam ədədlər, simvol, məntiqi, sadalanan və sairə
tiplərdən ola bilər.
Məsələn:
X[10] Y[-13] K[10-L] Z[FALSE]
Hər bir massiv əvvəlcədən elan olunmalıdır. 1 ölçülü
massivlər aşağıdakı kimi elan olunur.
MAS:ARRAY[D] of T;
Burada
MAS- masssivin adı;
D-indeksin dəyişmə diapazonudur və X..Y şəklində təyin
edilir. Burada X-indeksin aşağı qiyməti, Y isə indeksin yuxarı
77
qiymətini təyin edir;
T-Elementin tipini təyin edir və ixtiyari standart tip və ya
TYPE ilə təyin edilən yeni tip ola bilər. İndeksin diapazonu
kimi sadalanan tipdən də istifadə etmək olar.
Məsələn:
a) A: ARRAY [1..10] of string;
V) B: ARRAY [-50..50] of BYTE;
c) TYPE FAM= (ALI, VELI, AZER);
VAR
BA: ARRAY [FAM] of real;
Bu massivlərin elementlərinə
A[5]:= 'SALEH'; B[-3]:=18; BA[ALI]:=4.25;
kimi müraciət edə və qiymətləndirə bilərik.
Eyni tipli massivin elementlərini bir-birinə mənsub edə
bilərik.
Məsələn:
VAR
X,Y: ARRAY [1..10] of INTEGER; kimi elan edilibsə
onda
a) X[1]:=y[3]; b)Y[9]:=X[7]; c) X:=Y;
yazılışları düzgün yazılışlardır. c) bəndindən sonra X massivi
Y-in surəti kimi istifadə edilə bilər. Müxtəlif tipli elementləri
isə bir-birinə mənsub etmək olmaz.
Turbo-Paskalda massivin elementlərinin hansı tipdən
olmasına məhdudiyyət yoxdur. Hətta massivin elementi başqa
bir massiv də ola bilər. Beləliklə çox ölçülü massivləri elan
etmək olar. Məsələn 2- ölçülü massivi aşağıdakı kimi elan edə
bilərik.
MAS: ARRAY [D1] of ARRAY [D2] of T;
78
və ya
MAS: ARRAY [D1.D2] of T;
Məsələn:
VAR
A:ARRAY[1 ..3] of ARRAY [1 ..3] of REAL;
B:ARRAY[1..3, 1..3] of STRING;
Nəzərə almaq lazımıdır ki, massivin bütün elementləri
üçün ayrılan sahə 64 kB-dan kiçik olmamalıdır. Massivin
indeksləri müxtəlif tipdən də ola bilər.
Məsələn:
VAR
CUB: ARRAY[1..5, 'A'..'D', BOOLEAN] of BYTE;
Belə massivin elementinə CUB[3, 'C', TRUE] kimi
müraciət edə bilərik.
İki ölçülü massivlərə aid aşağıdakı misalı nəzərdən
keçirək.
A və V matrislərinin hasilini verən S matrisini tapmalı.
Bilirik ki, S matrisinin hər bir elementi
m
k
kjikji bac1
,
hesablanır. Turbo-Paskalda proqram
aşağıdakı kimi olar. (Aydındır ki, A matrisinin sütunları sayı V
matrisinin sətirləri sayına bərabər olmalıdır). Yəni
ni
l
jij
m
i
l
jij
n
i
m
jij cCbBaA111111
Proqramda matrisin elementləri sətir-sətir daxil
edilmişdir.
USES CRT;
{A ve V matrisinin hasili}
79
VAR
A, V, C: ARRAY [1..3, 1..3] OF REAL;
I, J, K: INTEGER;
BEGIN
WRITELN ('A-NI DAX. ET');
FOR I:=1 TO 3 DO
FOR J:=1 TOZ DO
READ (A[l, J]);
READLN;
WRITELN ('B-NI DAX. ET');
FOR l:=1 TO 3 DO
FOR J:=1 TO 3 DO
READ (B[l, J]);
READLN;
{C=A*B hesablanmasi}
FOR l:=1 TO 3 DO
FOR J:=1 TOZ DO
BEGIN
C[l, J]:=0;
FOR K:=1 TO 3 DO
C[I, J]:=C[I, J]+A[I, K]*B[K,J];
END;
FOR l:=1 TO 3 DO
BEGIN
FOR J:=1 T0 3 DO
WRITE ('C(', I,‘,’, J, ')=', C[I, J]:-10:4);
WRITELN;
END;
END.
80
2.7. Funksiyalar və proseduralar
Bəzi məsələləri proqramlaşdırarkən proqramın müəyyən
hissələri ara sıra təkrarlanır. Aydındır ki, proqram mətninin
yığcamlığı və yaddaşa qənaət üçün təkrarlanan hissələri əsas
mətndən ayıraraq onu ayrı bir proqram obyekti olan alt
proqram kimi vermək məqsədə uyğundur.
Turbo-Paskalda alt proqramlar proseduralara və
funksiyalara bölünür. Turbo-Paskalda alt proqramlar onlara
müraciət olunana qədər təsvir edilirlər. Yəni onların mətni əsas
blokdan əvvəl gəlir.
Hər bir alt proqram başlıq və daxili hissədən təşkil edilir.
Proseduranın başlığı aşağıdakı kimi təsvir edilir.
PROCEDURE N[(T)];
Burada
N - proseduranın adı;
T - parametrlərin təsvirini göstərir.
Göründüyü kimi parametrlərin təsviri verilməyə də bilər.
Parametrlər formal parametrlər olub qiymətli və dəyişən
parametrlərə bölünürlər. Qiymətli parametrlərin təsviri
X[,Y[,...]:<parametrin tipi>;
kimi verilir.
Burada
X,Y...- lər parametrlərin identifikatorunu,
<parametrin tipi> - standart və ya TYPE ilə təyin edilən
tipdən ola bilər.
Dəyişən parametrlər aşağıdakı kimi təsvir edilirlər.
VAR X[,Y[,...]: <parametrin tipi> [;VAR...
Burada
81
X,Y... - lər dəyişən parametrlərin identifikatorlarını
göstərir.
<parametrin tipi> - standart və ya TYPE ilə təyin edilən
tipdən ola bilər. VAR atributu ilə elan edilən parametrə uyğun
real parametr dəyişən olmalıdır.
Qiymətli parametrlərə uyğun real parametr isə sabit və ya
dəyşən ola bilər. Ümumiyyətlə əsas blokda proseduraya
müraciət
<proseduranın adı>(<faktiki parametrlər>);
kimi təşkil edilir.
Faktiki parametr real verilənlər olub uyğun qiymətli və
ya dəyişən parametrlərə mənimsədilir.
Prosedura baş proqrama nəticəni dəyişən parametrlərlə və
ya qlobal dəyişənlərlə ötürə bilər.
Ümumiyyətlə Turbo-Paskal proqramında bloklardan
(modullardan) istifadə edilir. Bloklar daxili (lokal) və xarici
(qlobal) bloklara bölünür. Buna uyğun olaraq da proqramda
lokal və qlobal dəyişənlərdən istifadə olunur. Əgər hər hansı
dəyişənin adı həm daxili, həm də xarici blokda təsvir edilibsə
aydındır ki, bu dəyişənlər üçün yaddaşda müxtəlif yerlər
ayrılacaq. Beləliklə qlobal dəyişənlər vasitəsi ilə proseduradakı
nəticələri əsas bloka ötürə bilərik. Lokal dəyişənlərin qiyməti
isə xarici blokda təyin edilmir.
Proseduranın başlığının təsvirinə aid misallara baxaq.
a) PROCEDURE MAX;
b) PROCEDURE SQ(a,b,c:REAL;VAR x,y:REAL);
c) PROCEDURE NAM(a,b:CHAR;VAR c:CHAR;
d:BYTE);
82
d) PROCEDURE AA(a,b,c:MAS_A;K:INTEGER;
VAR D:MAS_B);
Əgər hər hansı P prosedurasında Q prosedurasından
IStifadə edilirsə və Q-nün mətni P-nin mətnindən sonra (gəlirsə
onda prosedura
PROCEDURE ( ): FORWARD;
kimi təsvir edilir. Yəni
PROCEDURE Q(X:T2): FORWARD;
PROCEDURE P(X:Y);
BEGIN
- - - - -
Q(A);
- - - - -
END;
PROCEDURE Q;
BEGIN
- - - - -
END;
Proseduranın təşkilinə aid aşağıdakı misalı nəzərdən
keçirək.
ax2+bx+c=0 tənliyinin həqiqi köklərini tapmalı.
USES CRT;
VAR
X1,X2AB,C:REAL;
PROCEDURE SQ (A1,B1,C1:REAL; VAR
Y1,Y2:REAL);
VAR
83
D:REAL;
BEGIN
D:=B1*B1-4*A1*C1; Y1:=0; Y2:=0;
IF D>=0 THEN
BEGIN
Y1:=(-B1-SQRT(D))/(2*A1);
Y2:=(-B1+SQRT(D))/(2*A1);
END
ELSE
BEGIN
WRITELN('HEQIQI KOKLER YOXDUR');
HALT;
END;
END;
BEGIN {BASH PROGRAM}
READLN(A,B,C); SQ(A,B,C,X1,X2);
WRITELN('X1 =',X1:-8:2,' X2=',X2:-8:2); READLN;
END.
Alt proqram funksiyanın başlığı aşağıdakı kimi təsvir
edilir.
FUNCTION NAME[(P)]:T;
Burada
NAME - funksiyanın adını;
P - parametrlərin təsviri;
T - funksiyanın tipini göstərir.
Funksiyanın tipi təsvir edilən funksiyanın tipini göstərir.
Funksiyanın tipi skalyar və ya əvvəlcədən təyin edilən tipdən
ola bilər.
Funksiyanın tipi fayl, massiv, yazı, çoxluq və obyekt ola
84
bilməz.
Məsələn:
FUNCTION A(A:REAL;VAR C:CHAR):STRING;
FUNCTION GAM:REAL;
FUNCTION INT(a,b:REAL;FUNCTION
F(x,y:REAL):REAL):REAL;
Funksiya ilə proseduranın strukturu yalnız aşağıdakılar
ilə fərqlənir.
1) Başlıq FUNCTION ilə təsvir edilir.
2) Başlıqda funksiyanın tipi elan edilir.
3) Funksiyanın əsas blokunda nəticə funksiyanın adına
mütləq mənimsədilir.
Əsas blokdan funksiyaya müraciət aşağıdakı kimi təşkil
edilir.
Y:=NAME[(A)];
Burada, A - parametrlər siyahısıdır.
Məsələn:
T:=MAX(a,b,c,d);
C:=SORGU(M);
Funksiyanın təşkilinə aid bir neçə misalı nəzərdən
keçirək.
USES CRT;
TYPE
ST80=STRING [80];
VAR
{B,N}I:INTEGER;
T:BOOLEAN;
{FUNCTIONUN BASHLIGI}
FUNCTION SORGU(MESAG:ST80):BOOLEAN;
85
VAR
TUSH:CHAR;
BEGIN
GOTOXY(20,24);WRITELN(MESAG);
REPEAT
TUSH:=UPCASE(READKEY);
UNTIL TUSH IN['Y','N']
IF TUSH='Y' THEN
SORGU:=TRUE
ELSE
SORGU:=FALSE;
END; {FUNCTIONUN SONU}
BEGIN {ESAS BLOK}
REPEAT
CLRSCR;
FOR I:=1 TO 5 DO
WRITE('AzTU ');
T:=SORGU(' TEKRAR YAZISINMI? [Y/N]');
UNTIL NOT T
END.
USES CRT;
TYPE;
M_A=ARRAY [1 ..10] OF ARRAY [1 ..10] OF REAL;
M_B=ARRAY [1..10] OF REAL;
VAR
I,J,K,N,M:INTEGER;
A:M_A;
X:M_B;
86
PROCEDURE MAS(T:M_A;N:INTEGER: VAR
F:M_B);
VAR
I,J:INTEGER;
S:REAL;
BEGIN
FOR I:=1 TO N DO
BEGIN
S:=0;
FOR J:=1 TO N DO
IF T[I,J]>0 THEN S:=S+T[I,J];
F[I]:=S;
END;
END; {PROCEDURE }
BEGIN {BASH PROGRAM}
WRITE('MASIVINSAYI=');READLN(M);
FOR K:=1 TO M DO
BEGIN
WRITE(K,'-CI MASSIVIN OLCHUSU='); READLN
(N);
WRITELN (K/-CI MASSIVI DAXIL ET');
FOR I:=1 TO N DO
FOR J:=1 TO N DO
READ(A[I,J]);
MAS(A,N,X);
WRITELN(K,'-CI MASSIVDE HER
SETIRDEKI MUSBET ELEMENTLERIN CEMI');
FOR l:=1 TO N DO
WRITELN ('X(',I,')=',X[I]:-10:3);
87
END;
END.
Misal: Xn-in rekurent düsturla funksiya kimi
hesablayaq.
USES CRT;
VAR
M: BYTE;
FUNCTION ST(X:REAL;N:BYTE):REAL;
BEGIN
IF N=0 THEN ST:=1
ELSE
IF N=1 THEN ST:=X
ELSE
ST:=ST(X,N-1)*X;
END;
BEGIN
WRITELN ('YSTY DAXIL ET');
READLN (M);
WRITELN (ST(-2,M))
END.
Misal: N!- ı rekurent formula ilə funksiya kimi
hesablamalı
USES CRT;
TYPE
DIAP=1..30;
FUNCTION FACT(N:DIAP):REAL;
88
BEGIN
IF N<=0 THEN FACT:=1
ELSE
FACT:=FACT(N-1)*N;
END;
BEGIN
WRITELN (FACT(15))
END.
2.8. Sətri tip veriiənlər və onların emalı funksiyalan
STRING (sətri) tip verilənlər mürəkkəb tipə aiddir. Hər
bir STRING tip verilənin təsvirində həmin verilən üçün ayrılan
maksimal sahə təyin edilir. Maksimal sahənin qiyməti tarrı
qiymət və ya tam sabitin adı ilə təyin edilə bilər. Hər bir
STRING tip müəyyən simvollar ardıcıllığından təşkil edilir. Bu
ardıcılhq boş və ya uzunluğu simvolların maksimai sayından
çox olmayan ardıcıllıq da ola biiər. STRING tip dinamiki tipə
aiddir. Çünki eyni bir təsvir ilə verilən dəyşənin uzunluğu
müxtəlif ola bilər.
Məsələn:
VAR
S1: STRING [15];
Bu dəyişən üçün ayrılan sahədə 15- ə qədər simvollar
saxlamaq olar. Simvoliann sayı təsvirdə göstərilməzsə həmən
dəyşən üçün ayrılan sahədə 255-ə qədər simvol yerləşdirə
bilərik. Mənimsətmə və ya daxiletmə zamanı elan edilmiş
uzunluqdan artıq simvollar nəzərə alınmır.
Turbo-Paskal sətri tipə simvollar massivi kimi baxır.
89
Məsələn:
VAR
SYM:CHAR;
SETIR: STRING;
BEGIN
SETIR:='PASCAL-5.0";
SETIR[8]:= '7'; {PASCAL-7.0}
SYM:=SETIR[4]; {SYM='C'}
Ümumiyyətlə STRING tip verilən yaddaşda verilənin
uzunluğundan bir bayt artıq yer tutur. Yəni əlavə olan (0- cı)
baytda dəyşənin simvollarının sayına uyğun kod saxlanılır.
Məsələn:
VAR
NAME: STRING;
BEGIN
NAME:='ALI';
WRITE('VERİENIN UZUNLUGU=',ORD(NAME[0]));
END.
Nəticədə ekranda
VERIENIN UZUNLUGU=3
əks olunacaq.
STRING tip verilənlər üzərində '+' və müqayisə
əməliyyatlarını aparmaq olar.
'+'- əməliyyatı zamanı STRING tip verilənlərin
birləşməsi alınır.
Məsələn:
VAR
A,B,C:STRING;
90
elan edilərsə
A:='SON ';
B:=' ZENG';
olarsa
C:=A+B;
əməliyyatından sonra
C:='SON ZENG' olar.
Müqayisə simvolları ASCII kodlarının müqayisəsi ilə
aparılır. (yəni soldan sağa doğru simvol-simvol). Ümumiyyətlə
uzunluğu böyük olan sətir böyük sayılır. (əgər əvvəlki
simvollar üst- üstə düşərsə).
Məsələn:
a) 'aab'>'aaB' {'b'- nin kodu 'B'- nin kodundan
böyükdür}
b) 'kk'<'kkk' {'k'>'' olduğuna görə}
c) '01 >' 01' {'0'>' 'olduğuna görə}
STRING tipli verilənlər üzərində əməliyyatlar əsasən
proseduralar və funksiyalar vastəsi ilə aparılır. Bunlar
aşağıdakılardır.
1) LENGTH(X)- funksiyası STRING tipdən olan X
dəyşəninin uzunluğunu təyin edir. Nəticə BYTE tipindədir.
2) CHR(X)- funksiyası BYTE tipindən olan X ədədinə
(koduna) və ya dəyşəninə uyğun ASCII simvolunu qaytarır.
Nəticə CHAR tipindədir.
91
3) UPCASE(X)- funksiyası CHAR tipindən olan X
simvolu aşağı registirdə isə yuxarı registrdə verir. Nəticə
CHAR tipindədir.
4) COPY(X,N,M)- funksiyası STRING tipli X
dəyşəninin N-ci mövqeyindəki simvoldan başlayaraq M
simvollu yeni sətir alır.
Burada N və M INTEGER tipindəndirlər. Nəticə
STRING tipindədir.
Məsələn:
USES CRT;
VAR
C,B,A: STRING;
LBYTE;
X:CHAR;
BEGIN
X:=UPCASE(READKEY);
B:='ADNA_SUS_AZTU’;
L:=LENGTH(B);
A:=COPY(B,1,4); {ADNA}
C:=COPY(B,5,5); {SUS_A}
WRITE(X,' \L,' 'A' ',C);
END.
Proqramın icrası nəticəsində X dəyşəni üçün
klaviaturadan daxil edilən simvol yuxan registrdə, B-nin
uzunluğu, B-dən alınan A və S dəyşənlərin qiymətləri ekranda
əks olunacaq.
5) DELETE(X,N,M)-PROCEDURE-sı STRING tipli X
dəyişəninin N- ci simvoiundan M dənə simvol
92
silərək yeni X sətri alır. Burada N, M INTEGER
tipindəndir, nəticə isə STRING tipindəndir.
Burada İVe [1,255]
Məsələn:
B:='ADNA_SUS_AZTU’; isə
DELETE(B,1,4);
{B:='_SUS_AZTU’!'}
6) INSERT(X,Y,N)- prosedurası STRING tipli X
alt sətrini STRING tipli Y sətrinin N-ci mövqeyindən
başlayaraq araya yerləşdirir. Əgər N- in qiyməti Y-in
uzunluğundan böyük olarsa Y ilə X-in birləşməsi
alınır. Əgər əlavə olunma zamanı alınan yeni sətrin
uzunluğu Y-in maksimal uzunluğundan böyük olarsa,
onda əlavə olunan artıq simvolar soldan sağa doğru
atılır.
Burada İVe [1,255]
Məsələn:
S:STRING[5]; elan edilibsə
S:='AB' olarsa, onda
a) INSERT('CDE',S,2); {S=ACDEB}
b) INSERT('CDE',S,5); {S=ABCDE}
c) INSERT('CDEF',S,6); {S=ABCDE}
d) INSERT('CDEF\S, {S=CDEFA}
7) FILLCHAR(X,N,M)-prosedurası STRING tip X sətri
dəyşənirtf N dənə M-ə uyğun simvol ilə doldurur.
Burada N-WORD tipdən, M-CHAR tipdəndir. Nəticə
sətri tipdəndir. Burada N [1,255]
93
Məsələn:
VAR
S:STRING;
BEGIN
FILLSHAR(S[1],80,'*');
S[0]:=#80;
WRITE(S)
END.
Nəticədə ekran sətrində 80 dənə * əks olunur. S
dəyişəninin 0-cı baytına onun uzunluğu 80 yazılır.
8) CONCAT(X,X1[,X2...) funksiyası "+"
əməliyyatı kimi
X, X1, X2,... sətrlərini birləşdirəcək
Məsələn:
WRITE(CONCAT(x1 ,x2,x3));
9) POS(Y.X) funksiyası STRING tipli X
dəyşənində Y-ə uyğun simvolların başladığı mövqenin
nömrəsini təyin edir. Əgər belə simvollar ardıcıllığı
tapılmazsa nəticə sıfır olur.
Məsələn:
POSCabc'.'ababc') -> 3
POS('12','1421224')->4
POSCa'.'bck') -> 0
10) STR(N[:K[:L]],S]-prosedurası N hesabi ifadəsini
sətri tipə çevirərək S dəyşəninə mənimsədir. N hesabi
ifadəsi tam və ya həqiqi tipdən ola bilər. Burada K tam
ifadə olub çeviriləcək ümumi uzunluğu tə'yin edir.
Kəmiyyətin uzunluğu K- nın qiymətindən kiçikdirsə o
sağa düzləndiriləcək və boş yerlər probel ilə
94
doldurulacaq. Əgər K- nı mənfi ədəd kimi versək
düzləndirmə sola aparılacaq və sağ tərəfə probel
doldurmaq lazım gəlmir. Əgər çeviriləcək ədəd
göstərilən sahəyə yerləşmirsə onda sahənin eni qeyri
aşkar olaraq lazımi qədər artırılacaq. Məsələn:
a) STR(122:5,s); {s=' 122'}
b)STR(122:-5,s); {s='122'}
Həqiqi verilənlər sabit nöqtəli formada (sahənin eni və
onluq nöqtədən sonrakı rəqəmlər sayı) və ya ekponensial
formada (təkcə sahənin eni) göstərilə bilər. Məsələn:
a) STR(27.362:5:2,S)
b) STR(27.662:3:0,S)
c) STR(27.662:0:3,S)
d) STR(27.362:6,S)
11) VAL(S,N,ERROR) prosedurası S sətri ifadəsini
ədədə çevirir və N dəyşəninə mənimsədir. N- in tipi S-
dəki ədədə uyğun tipdən olmalıdır. Əgər S sətirində nöqtə
və ya E simvollan olarsa N həqiqi tipdən əks halda tam
tip ola bilər. Əgər çevirilmə mümkün isə ERROR=0 olur.
Əks halda ERROR-a çevirilə bilməyən 1- ci simvolun
sıradakı nömrəsi yazılır.
Məsəiən:
VAR
P,COD:INTEGER;
PR:REAL;
BEGIN
VAL('123',P,COD); {P=123 COD=0}
VAL('123',PR,COD);{PR=1.2300000000E+02;COD=0}
VAL('12.3E02,,PR,COD);{PR=1.2300000000E+03;COD
95
=0}
VAL('12.3P',PR,COD);
{PR=0.0000000000E+00;COD=5}
END.
96
III. BORLAND DELPHİ
3.1.Giriş. Kompüterə qoyulan tələblər
“Borland Delphi” “CodeGear Delphi“ kompaniyasının
təqdim etdiyi proqram məhsulu olub, obyekt təyinatı
proqramıarın yazılması üçün istifadə edilir.
Delphi proqram paketinin layihələndiricləri onun
normal işləməsi üçün istiyadə olunan kompüterlərə aşağıdakı
tələbləri qoyurlar:
Əməliyyat sistemi- Windows 2000, Windows
XP,Windows Tablet Pc Edition;
Posessor- Intel Pentium II 200 Mhs və yüksək;
Bərk disk daşıyıcısı (HDD- Hard Disk Driver)-
proqram üçün 250 MB və əlavə olaraq 500 MB
boş yaddaş sahəsi;
Orerpativ yaddaş (RAM)-64 MB və yüksək;
CD-ROM;
SVGA rejimini dəstəkləyən moni-
tor(1024X768);
Siçan(«mouse») və ya qrafiki planşet;
Bu konfiqurasiya minmal iş rejimi üçün kifayət edir. Əlbəttə
real halda bu göstəricilər kifayət qədər yüksək olmalıdırlar.
Proqram instalyasiya olunduqdan sonra Borland
Delphi 7 qrupunu qurulur.(şək.1)
97
Şək.3.1. Borland Delphi 7 qrupu
Bu qruada Delphi proqramı ilə yanaşı müəyyən
köməkçi proqramlar da cəmləşmişdir.
Delphi proqramını işə salmaq üçün aşağıdakı
əməliyyatlar ardıcıllığını yerinə yetirmək lazımdır:
StartPrograms Borland Delphi 7 Delphi 7
(PuskProqrammı Borland Delphi 7 Delphi 7)(şək.3.2)
Şək.3.2 Delphi 7 proqramının əsas menyu vasitəsilə işə
buraxılması
Delphi 7proqramı instalyasiya olunarkən «shortcut»-ni işçi
stola yerləşdirilməsinə imkan verir. Əgər bu və ya digər
98
səbəbdən «shortcut» işçi stoldan silinmişdirsə onu bərpa etmək
mümkündür.
Gələcəkdə proqramla rahat iş rejimini təmin etmək üçün
proqramın «shortcut»-ni işçi stola yerləşdirmək məsləhətdir.
Bunun üçün StartPrograms Borland Delphi 7
əməliyyatlarını yerinə yetridikdən sonra Delphi 7proqramının
üzürində «mouse»-un sağ düyməsini sıxıb
SendToDeskTop(create shortcut) əmrilrin yerinə yetrimək
lazımdır(şək.3.3).
Şək.3.3. Delphi 7 proqramının işçi stola yerləşdirilməsi
3.2.Proqramın interfeysi
Lazım olan fayl açıldıqdan və ya yeni fayl yaradıldıqdan
sonra Delphi 7 proqramının interfeysinin aşağıdakı forması
görünür(şək.3.4.).
99
Şək.3.4. Delphi 7proqramının standart interfeysi
Proqramın standart interfeysi aşağıdakı hissələrdən təşkil
olunub:
Baş meny- faylın yaradılması, emal olunması və s.
əməliyyatları özündə birləşdirən menyulpr toplusudur;
Standart alətlər paneli-Özündə ən vacib, tez-tez istifadə olunan
əməlmyyatları birləşdirən alətlər toplusudur;
Komponentlər paneli-proqramlaşdırma zamanı istifadə olunan
kımponentləri seçməyə imkan verən paneldir;
100
Forma-Qurulacaq proqramın interfeysini əks edir.
Unit paneli- kodların daxil edilməsi üçün nəzərdə tutulan
paneldir;
Object Tree View-proqramda istifadə olunan komponentlərin
siyahısını göstərir.
101
Object İnspector- Seçilmiş obyektin xüsusiyyətlərini və
hadisələrini əks etdirir.
102
3.3.FORM və onun əsas xüsusiyyətləri
Proqramım əsas hissələrindən biri formadır(Form). O,
aşağıdakı xüsusiyyətlərə malikdir:
1. ActiveControl .
ActiveControl - da hansı komponentin adı seçilirsə forma
aktivləşəndə kursor həmən komponentin üzərində olur.
2. Align .
Forma - nın ekranda necə yerləşdiyini daxil etmək olar (alLeft,
al Client və s.).
3. Anchors .
Forma – nı eninə və ya uzununa dartdıqda kampanentin eni və
ya uzunu və s. dəyişməsi .
4. utoScrol .
( true ) olduqda elimentlər forma - ya yerləşmədikdə abloşka
yaranır .
5. AutoSize .
( true ) olduqda forma - nı elə ölçüyə salır ki , bütün
elementlər formaya yerləşir .
6. BorderIcons .
Borderlcons - da ekranın başlığındakı ( pəncərələrin ) ekranda
olub - olmaması .
7. BorderStyle .
Burada forma - nın razmerlərini ( dəyişib - dəyişilməməsini ) ,
pəncərələrini , başlığın ( olub – olmamasını ) təyin etmək olar .
8. BorderWidth .
Forma - nın kənarındakı haşiyənin qalınlığını göstərir.
9. Caption .
103
Forma - nın başlığında çıxan adı göstərir .
10. Color .
Forma - nın rəngini göstərir .
11. Constraints .
Forma – nın max. və min. Hündürlüyü və eni .
12. Cursor .
Forma - nın üzərində mışkanı hərəkət etdirdikdə mışkanın
formasını göstərir .
13. Enabled .
Forma - nın və onun üzərindəki elimentlərin işləyib ( true )
işləmədiyini ( false ) göstərir.
14. Font .
Forma - da kı , yazıların şiriflərini seçməyə imkan verir.
15. FormStyle .
Forma - nın daxilinin stilin dəyişmək olur .
16. Height .
Forma - nın hündürlüyünü bildirir .
17. Hint .
Forma - nın üzərinə mışkanı gətirdikdə onun izahatını çıxarır
.Bunu işlətmək üçün ShowHint ( true ) olmalıdır .
18. HorzScrollBar .
Forma - nın aşağısında çıxan abloşkaya aid manu .
19. Icon .
Forma - nın üstündəki işarəni dəyişmək üçün düyməni bas
sonra load - dan lazım olan şəkili seçib , atkrit . ok düyməsi
basılır .
20. Left .
Forma – nın soldan olan məsafəsini göstərir .
21. Menu .
104
Forma – da hansı MainMenu – dan istifadə olacağı göstərilir .
22. Name .
Forma - nın praqramlaşdırmada istifadə olunan adıdır .
23. Top .
Forma – nın yuxarıdan olan məsafəsini göstərir .
24. VertScrollBar .
Forma - nın sağında çıxan abloşkaya aid manu .
25. Visible .
( true ) olsa formanın görünəcək , ( false ) olsa görünməyəcək .
26. Width .
Forma - nın enini göstərir .
27. WindowState .
Praqram işləyərkən funksiyanın necə olduğunu (adi bütün
ekrana böyüdülmüş şəkildə və ya əks ) .
3.4 Hadisələr(Events)
1. OnActivate . Hadisə forma aktivləşərkən baş verir .
2. OnClick . Hadisə forma - nın üzərinə mışka ilə
vurduqda baş verəcək .
3. OnClose . Forma bağlanarkən baş verəcək .
4. OnCreate .Təxminən OnActivate – nən eynidir .
5. OnDBClick . Hadisə forma - nın üzərinə 2- dəfə
vurulduqda baş verir.
6. OnMouseDown . Hadisə mışka - nı sıxıb saxlayarkən
baş verir .
7. OnMouseMove . Hadisə hərəkət etdikdə baş verəjəek .
8. OnMouseUp .Hadisə mışka - nı buraxdıqda baş
verəcək .
105
3.5.”STANDARD“ alətlər paneli
Bu panel proqramın qurulması zamanı istifadə olunan standart
komponentləri (düymə, menyu və s.) özündə birləşdirir.
Bu panelə aşağıdakı komponentlər daxildirlər:
1. MainMenu
Forma - ya menyu qoymaq üçün istifadə olunur.
Bunun üçün onun üzərinə “siçan”i ilə iki dəfə sıxmaq lazımdır.
Sonra Caption bölümünə vurub menyunun adını daxil etmək,
ardınca Enter düyməsinə sıxıb menyunun hissələrini daxil
etmək lazımdır. Hər menyu bölümünün üzərinə vurub onun
üçün kod yazılır. Məsələn,
form 1.color:=clred ;
Menyunun içərisində əlavə menyu yartmaq üçün menyuya iki
dəfə vurub , lazımı bölümün üzərinə bir dəfə vurub sonra sağ
düyməni sıxaraq Create Submenu əmri yerinə yetirilməlidir .
Menyuya “isti klavişlər” əlavə etmək üçün yenə onun üzərinə
iki dəfə vurub , lazım düymənin üzərinə bir dəfə vurub
Properties bölümündə ShortCut – dan lazımı adı seçirik .
Qeyd.Əgər menyuda ayric daxil etmək lazımdırsa, onda
Caption bölümünə vurub bir “- “ isarəsi yazılır.
Nümunə. Formaya bir baş menu yerləşdirək Onu aşağıdakı
şəkildə gösərildiyi kimi quraq.
106
Uyğun bölməlri seçməklə onlara aşağıdakı kodları yazaq:
1. Form1.Width:=200;
2. Form1.Width:=300;
3. Form1.color:=clyellow;
4. Form1.color:= cltred;
5. Form1.Close;
2. Popup Menu .
Kontekst menyunu göstərir.
Bunun üçün onun üzərinə “siçan”i ilə iki dəfə sıxmaq lazımdır.
Sonra Caption bölümünə sıxıb menyunun adını daxil etmək,
ardınca Enter düyməsinə sıxıb menyunun hissələrini daxil
etmək lazımdır. Hər menyu bölümünün üzərinə vurub onun
üçün kod yazılır.Digər xüsusiyyətlər MainMenu-daoldugu
kimidir.
Sonda Forma - nın üzərinə bir dəfə vurub Properties – dən
Popup Menu adı seçilir.
Nümunə. Formaya bir kontekst menu yerləşdirək Onu
aşağıdakı şəkildə gösərildiyi kimi quraq.
Nümunə. Formaya bir kontekst menu yerləşdirək Onu
aşağıdakı şəkildə gösərildiyi kimi quraq.
107
Uyğun bölməlri seçməklə onlara aşağıdakı kodları yazaq:
1. Form1.color:=clyellow;
2. Form1.color:= clgreen;
3. Form1.Height:=500;
4. Form1.Height:=600;
5. Form1.Caption:=’ADNA’
6. Form1.Enabled:= true;
3. Label
Mətin göstərmək üçün nəzərdə tutulub. Onun əsas xüsusiyyəti
Caption – dur .
Məsələn, Label1. caption: =’ADNA‘;
Bunlarla yanaşı Label Color , Autosize , Cursor , Enablet ,
Font , Height , Hint , Showhint , Visible və s xüsusiyyətlərə də
malikdir.
Nümunə. Formaya bir Label və bir Main Menu yeriəşdirək.
Onu aşağıdakı kimi dizayn edək:
108
Uyğun bölməlri seçməklə onlara aşağıdakı kodları yazaq:
Label1.Caption:=’IPAF’;
Label1.Color:=clblue;
Label1.Font.Name:=’Arial’;
Label1.Font.Size:=14;
Label1.Font.Color:=clred;
4. Edit
Mətinlərin daxil ediməsi və redaktə olunması üçün istifadə
edilir. Bəszi xüsusiyyətləri(Color , Autosize , Cursor , Enablet ,
Font , Height , Hint və s.) Label – ə oxşardır. Əsas xüsusiyyəti
Text -dir .
Məsələn, Edit1. text : = ‘ ADNA ‘;
MaxLength – Edit-ə daxil edilən simvolların sayını göstərir.
PasswordChar- Edit-ə daxil edilən simvolları parol
formasında göstərir. İnformasiyanı Edit-ə və Edit-dən oxumaq
olar.
Nümunə. Edit-ə Formanın xüsusiyyətlrinin (adını,
uzunluğunu)oxumaq üçün formaya bir Main Menu və 2 Edit
yerləşdirək. Onu aşağıdakı kimi dizayn edək:
Formanın adını edit 1-ə oxumaq üçün aşağıdakı kod yazılır:
Edit1.Text:=Form1.Caption;
109
Formanın uzunluğunun qiymətini edit 2-ə oxumaq üçün
aşağıdakı kod yazılır:
Edit2.Text:=IntToStr(Form1.Height);
Qeyd. Formanın uzunluğu İnteger tipli, Edit2 mətn tipli
olduğuna ğörə IntToStr çevrilməsindən istifadə edilir.
Nümunə. Edit-in vasitəsilə Formanın xüsusiyyətlrinin (adını,
uzunluğunu)dəyişmək üçün formaya bir Main Menu və 2 Edit
yerləşdirək. Onu aşağıdakı kimi dizayn edək:
Formanın adını edit 1-ə oxumaq üçün aşağıdakı kod yazılır:
Form1.Caption :=;Edit1.Text;
qiymətini edit 2-ə oxumaq üçün aşağıdakı kod Formanın
uzunluğunun yazılır:
Form1.Height:= StrToInt (Edit2.Text);
Edit komponentinin ən vacib hadisilərindən biri OnChange
hadisəsidir. Bu hadisə yerinə yetirilən zaman Edit-ə daxil
edilən məlumat o andaca yerinə yetirilir. Məsələn, OnChange
hadisəsinə Form1.Caption:=Edit1Text əmrini daxil etdikdə,
Edit-ə daxil edilən məlumat daxil edildikcə, formanın adı
şəklində əks olunur.
Digər vacib hadisə OnKeyDown və OnKeyUp hadisəlsəridir.
Bu hadisələr funksional(F1,F2 və s.) və idarəetmə(Enter,Esc və
s.) düymlərindən istifadə edərək, əməliyyatları yerinə
yetirməyə imkan verir:
110
If Key=vk_F1 then Form1.Caption:=’ADNA’;
və ya
If Key=vk_Return then Form1.Caption:=’İPAF’;
5. Memo
Çoxsətirli mətnlərin daxil ediməsi və redaktə olunması üçün
istifadə edilir. Əsas xüsusiyyəti Lines-dır. Formaya bir Button
və Memo komponenti yerləşdirib, Button komponentinin
OnClick hadisəsinə aşağıdakı
proqram kodu yazırıq:
Memo1. lines . add ( ‘ ADNA ‘ ) ;
Memo1. lines . add ( ‘ İPAF ‘ ) ;
Memo1. lines . add ( ‘ATE‘ ) ;
Memo komponentinə istənilən mətni daxil etmək üçün
yuxarıdakı formaya əlavə bir Edit komponenti yerləşdirmək və
Button komponentinin OnClick hadisəsinə yazılmış proqram
kodunu aşağıdakı koda dəyişirik:
Memo1.Lines.Add(Edit1.Text);
Çox tez-tez istifadə olunan xüsusiyyətlərə misal olaraq
aşağidakıları göstərmək olar:
2. Memoda yerləşən mətni silmək üçün bir düymənin
OnClick hadisəsinə aşağıdakı proqram kodunu yazırıq:
Memo1.Clear ;
Memoda yerləşən seçilmiş mətni silmək üçün bir
düymənin OnClick hadisəsinə aşağıdakı kodu yazırıq:
Memo1.ClearSelection ; Memoda seçilmiş mətni silmək
üçün istifadə edilir
111
Memo1.CopyToClipboard ; Seçilmiş mətnin nüsxəsini
bufer yaddaşina köçürür.
Memo1.CutToClipboard ; Seçilmiş mətni kəsərək bufer
yaddaşina köçürür.
Memo1.PasteFromClipboard ;Bufer yaddaşında olan
məlumatı lazımi yerı yerləşdiri
Memo1.Lines.SaveToFile(‘faylin ünvanı’);Memoda
yerləşən txt uzantılı mətni faylda yadda saxlayır
Memo1.Lines.LoadFromFile();Yadda saxlanılmış txt
uzantılı mətni memoya yükləyir
Memo1.Undo ;Sonunucu əməliyyatı ləğv edir.
Memo1.SelectAll;Memodakı bütün mətni seçməyə
imkan verir.
6. Button Müxtəlif əməliyyatları yerinə yetirən düymədir.
Button komponenti aşağıdakı xüsusiyyətlərə(Properties)
malikdir:
Cursor-Button komponentinin üzərində kursorun işarəsini
göstərir. Lazımi işarə siyahıdan seçilir.
Enabled (Boolean)- Button komponentinin aktiv (true) və ya
passiv(false) olduğunu ğöstərir.
Font- Button komponentində istifadə olunan şriftin
adını(Name), ölçüsünü(Size), stilini(Style) təyin etməyə imkan
verir.
Height(Integer)- Button komponentinin uzunluğunu təyin
etmək üçün istifadə edilir.
Hint(String)- Button komponentinin üzərinə “siçan”ı
yerləşdirdikdə, əks olunan məlumatı göstərir. Məlumatin
görünməsi üçün Show Hint xüsusiyyəti üçün true variantı
seçilməlidir.
112
Left(Integer)- Button komponentinin formanın sol tərəfindən
piksellə olan məsafəsinin qiymətini göstərir.
Name- Button komponentinin proqramlaşdırma zamanı istifadə
olunan adını göstərir.
Popup Menu- Button komponentinin üzərində əks olunacaq
kontekst menyunu göstərir. Kontekst menyunun adı siyahıdan
seçilməlidir.
Tab Order- Button komponentinin fokus alma(Tab düyməsinə
sıxdıqda) nömrəsini göstərir.
Top(Integer)- Button komponentinin formanın üst tərəfindən
piksellə olan məsafəsinin qiymətini göstərir.
Visible(Boolean)- Button komponentinin görünməsini (true)
və gizlədilməsini(false) ğöstərir.
Width(Integer)- Button komponentinin enini təyin etmək üçün
istifadə edilir.
Button komponentini əsas xüsusiyyəti Caption, əsas hadisəsi
isə On Click-dir..
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Color :=clRed;
end;
Buttonun Caption bölümündə hansı hərfdən əvvəl &
yazılarsa, həmən hərfin altından xətt çıxır və Alt + xəttin
üstündəki hərfi vurduqda OnClick hadisəsi yerinə yetirilir.
1. Nümunə.Formanın xüsusiyyətlrinin (adını,
uzunluğunu)oxumaq üçün formaya 3 Button və 2 Edit
yerləşdirək. Onu aşağıdakı kimi dizayn edək:
113
Birinci düymənin köməyilə formanını adını Edit 1-ə oxumaq
üçün aşağıdakı kod tərtib edilir:
Edit1.Text:=Form1.Caption;
İkinci düymənin köməyilə formanını uzunluğunu Edit 2-nin
köməyilə dəyişmək üçün aşağıdakı kod tərtib edilir:
Form1.Height:= StrToInt (Edit2.Text);
Ücüncü düymənin köməyilə forma deaktivləşdirilir:
Form1.Enabled:=false;
Button komponentinin vacib hadisəslsərindən OnMosuDown,
OnMouseUp hadisələridir.Bu hadisələr “siçan”ı Button
komponentinin üzərində sıxıb saxladıqda və sərbəst buraxdıqda
yerinə yetirilən hadisəlri ğöstərir.Məsələn, Button
komponentinin üzərində “siçan”ı sıxdıqda formanın rəngi
qırmızı, “siçan”ı sərbəst buraxdıqda isə yaşıl olması üçün
uyğun olaraq OnMosuDown, OnMouseUp hadisələrinə
aşağıdakı kodları yazmaq lazımdır:
Form1.Color:=clRed;
Form1.Color:=clGreen;
7. CheckBox
Secimlərlə mxötəlif əməliyyatları yerinə yetirməyə imkan
verir.Əsas xüsusiyyəti Checked-dir, Bu x xösusiyyət onun
114
qoşulub-qoşulmadığını (true/false) göstərir. Şərti yazmaq üçün
İf operatorundan istifadə edilir.
If CheckBox1.Checked = True then Form1.Color:=clred ;
If CheckBox1.Checked = False then Form1.Color:=clblue ;
Və ya
If CheckBox1.Checked = True then
begin
Form1.Color:=clred ;
end
else
begin
Form1.Color:=clblue ;
end;
If CheckBox1.Checked = True then Form1.Color:=clred
else
begin
Form1.Color:=clblue ;
Form1.Color:=clblue ;
end;
115
ƏDƏBİYYAT
1. Floyd, T. L.:Digital Fundamentals. Pearson Educa-
tion International 2008
2. Hayes, J. P.: Computer Architecture and Organisa-
tion. McGraw-Hill, New York 2003
3. Roth, C. H.; Kinney, L.L.: Fundamentals of Logic
Design. Cengage Learning Services 2009
4. Schiffmann, W.; Schmitz, R.: Technische Informat-
ik 1 - Grundlagen der digitalen Elektrotechnik.
5. www.borland.com