3
1. KOMPÜTERDƏ MƏSƏLƏLƏRİN HƏLL
MƏRHƏLƏLƏRİ
Məsələlərin kompüterdə həll olunmaq üçün hazırlanması
hələ də çox mürəkkəb olaraq qalmaqla bərabər həm də çoxlu
zəhmət tələb edir. Bu məsələnin həlli bir neçə mərhələdən
ibarətdir və onların əksəriyyəti kompüterin istifadə olunması
ilə birbaşa əlaqədar deyildir. Bununla bərabər, məhz bu
mərhələnin yerinə yetirilməsinə sərf olunan vaxt və zəhmət
ümumiyyətlə bütövlükdə məsələnin kompüterdə həll
olunmasına sərf olunan vaxt və zəhmətdən daha çox tələb
olunur. Bu da onunla əlaqədardır ki, hər hansı məsələnin
kompüterdə həll edilməsi üçün o gərək tərtib olunmuş olsun,
yəni ilkin məlumatdan son nəticə almaq üçün göstərişlər
ardıcıllığından ibarət sistem şəklində yazılsın. Əməliyyatların
belə ardıcıllığı alqoritm, məsələnin maşında həll edilməsi
üçün hazırlanması prosesi isə alqoritmləşdirmə adlandırılır.
Alqoritm anlayışı ilk dəfə IX əsrdə onluq say sistemində
hesab əməllərinin yerinə yetirilməsi qaydalarını tərtib etmiş
görkəmli özbək riyaziyyatçısı Əl-Xarəzminin adından
götürülmüşdür. XII əsrdə bu qaydalar tərcümə olunaraq
əvvəllər rum say sisteminin hökm sürdüyü Avropa
ölkələrində tətbiq olunmağa başlamışdır.
Ümumiyyətlə, alqoritm eyni tipli müəyyən məsələləri həll
etmək üçün bir neçə əməliyyatlar sisteminin yerinə yetirilməsi
ardıcıllığının təsviridir. Alqoritmin bu tərifi o qədər də dəqiq
olmasa da, praktik məqsədlər üçün bu tərifi qəbul etmək olar.
Əgər ilkin məlumatdan son nəticə almaq üçün qayda
mövcuddursa, onda bu tərif istənilən məsələnin həll
edilməsinin mümkünlüyünü təsdiq edir. Alqoritmin üç əsas
xassəsi vardır:
1. Alqoritm kütləvi olmalıdır, yəni tərtib olunmuş
alqoritm ilkin verilənlərin qiymətlərinin geniş intervallarda
4
dəyişdikləri hallar üçün yararlı olmalıdır. Alqoritmin
kütləviliyi müəyyən çərçivə daxilində başa düşülməlidir, yəni
mütləq universal alqoritm yoxdur. Müəyyən bir məsələnin
həlli üçün tərtib olunmuş alqoritm yalnız bu qəbildən olan
müəyyən sinif məsələlərin həlli üçün yararlı ola bilər.
Məsələn, xətti cəbri tənliklər sisteminin həlli üçün tərtib
olunmuş alqoritm istənilən sayda tənlikdən ibarət xətti
tənliklər sistemi üçün yararlı ola bilər, lakin bu o demək
deyildir ki, həmin alqoritm, məsələn, xətti diferensial
tənliklər sisteminin həlli üçün də yararlı olmalıdır.
2. Alqoritm müəyyən (determinik) olmalıdır, yəni
verilənlərin emal olunması üçün ciddi əməliyyatlar ardıcıllığı
mövcud olmalıdır. Bundan başqa alqoritmlərdə sıfra bölmə,
mənfi ədədlərdən kvadrat kökalma, mənfi ədədlərin
loqarifmlərinin hesablanması və s. kimi əməliyyatlara yol
verilməməlidir.
3. Alqoritm nəticəli olmalıdır, yəni hər bir alqoritm üzrə
hesablama nəticəsində cavab alınmalıdır, başqa sözlə,
axtarılan nəticə alınmaqla alqoritmik proses öz axını ilə
dayanmalıdır.
Alqoritmin bu üç əsas xassələrinin yerinə yetirilməsini
istənilən misalda müşahidə etmək olar.
Məlumdur ki, verilmiş üç a, b və c ədədlərindən ən
böyüyünün tapılması aşağıdakı ardıcıllıqla müəyyən edilir.
1. a və b ədədlərinin müqayisə et. Əgər a
x=b, əks halda isə x=a qəbul et və ikinci bəndi yerinə yetir.
2. x və c ədədlərini müqayisə et. Əgər x>=c olarsa, onda
üçüncü bəndi yerinə yetir, əks halda x=c qəbul et və üçüncü
bəndi yerinə yetir.
3. x ədədini nəticə kimi qəbul et və dayan.
Asanlıqla görünür ki, bu sadə alqoritmdə hər üç xassəyə
əməl olunur. Belə ki, bu alqoritm a, b və c dəyişənlərinin
5
istənilən qiymətlərində doğrudur, bundan başqa ədədlərin
müqayisəsi və ən böyük ədədin seçilmə ardıcıllığı o qədər
müəyyəndir ki, səhv nəticə alınması ehtimalını tamamilə
aradan qaldırır.
İki natural x və y ədədlərinin ən böyük ortaq bölənlərinin
tapılmasından ibarət daha bir misala baxaq. Bu ardıcıllıqlar
sistemi Evklid alqoritmi adlanır və o aşağıdakı bəndlərdən
ibarətdir.
1. x və y ədədlərini müqayisə et. Əgər x>y olarsa, onda
dördüncü bəndi yerinə yetir, əks halda ikinci bəndi yerinə
yetir.
2. y və x ədələrini müqayisə et. Əgər y>x olarsa, onda
beşinci bəndi yerinə yetir, əks halda üçüncü bəndi yerinə
yetir.
3. Ən böyük ortaq böləni nəticə kimi qəbul et (z=x) və
hesablamanı dayandır.
4. x=x-y qəbul et və birinci bəndi yerinə yetir.
5. y=y-x qəbul et və birinci bəndi yerinə yetir.
Baxılan misalda, əgər ən böyük ortaq bölən mövcuddursa,
onda göstərilən alqoritm hökmən axtarılan nəticəni
verəcəkdir. Ümumi halda məsələnin kompüterdə həll
edilməsi bir neçə mərhələdən ibarətdir
ki,
onların ən əsasları
aşağıdakılardır.
1. Məsələnin riyazi qoyuluşunun tərtib olunması. Bu
mərhələdə fiziki, kimyəvi, iqtisadi və s. mahiyyət kəsb edən
istənilən məsələ riyazi şəkildə tərtib olunur və ya məsələnin
riyazi qoyuluşu hazır şəkildə proqramçıya verilir. Məsələnin
riyazi təsvirində məsələnin məqsədi, ilkin verilənlər, onların
dəyişmə hədləri, axtarılan kəmiyyətlərin xarakteristikaları,
dəqiqliyi və məsələnin həllinin nəticəsinin təsvir olunma
formaları göstərilməlidir.
2. Alqoritmin işlənməsi. Bu mərhələdə məsələnin həll
6
alqoritmi işlənir və ya mövcud alqoritmlər içərisindən
münasib olanları seçilir. Bundan başqa alqoritmin müəyyən
hissələrinin yerinə yetirilməsi üçün ədədi həll üsullarının
seçilməsi və qiymətləndirilməsi vacibdir. Üsulun seçilməsi
məsələnin həlli üçün tələb olunan dəqiqliyə və kompüterin
imkanlarına uyğun olmalıdır.
3. Məsələnin alqoritminin blok-sxeminin tərtib olunması.
Bu mərhələ əvvəlki mərhələnin məntiqi davamıdır, lakin bu
mərhələdə əməliyyatlar daha dərindən araşdırılır. Bu
mərhələnin yerinə yetirilməsi nəticəsində alqoritmin bütün
məntiqi-riyazi aparatını özündə əks etdirən və əməliyyatlar
ardıcıllığını göstərən müfəssəl blok-sxem tərtib edilir.
4. Proqramlaşdırma. Bu mərhələdə tərtib olunmuş
alqoritm hər hansı bir alqorıtmik dildə proqram şəklində
yazılır. Proqramlaşdırma mərhələsini yerinə yetirmək üçün
ilkin sənəd kimi blok-sxem qəbul olunur. Bu mərhələyə daha
müfəssəl dördüncü bölmədə baxılacaqdır. Proqramlaşdırma
mərhələsi məsələnin kompüterdə həll olunmaq üçün hazırlıq
mərhələsinin sonuncu - yekunlaşdırıcı mərhələsidir.
Baxılan bütün mərhələlər bir-biri ilə sıx əlaqədədir və
vahid bir zəncir təşkil edir. Lakin bunların içərisində nisbətən
böyük həcmli və məsul mərhələ blok-sxemin tərtibi və
proqramlaşdırma mərhələləridir. Ona görə də növbəti
bölmələrdə bir sıra misalların nümunəsində blok-sxemlərin
və onların əsasında proqramların tərtib olunma texnikasını
öyrənəcəyik.
2. MƏSƏLƏNİN HƏLL
ALQORİTMLƏRİNİN İŞLƏNMƏSİ
Məsələnin kompüterdə həll olunmaq üçün hazırlanma
mərhələləri içərisində alqoritmin blok-sxeminin işlənməsi ən
vacib məsələlərdən biridir
.
7
Alqoritmlərin təsvir olunması üçün əsasən iki formadan:
mətn və qrafik formalardan istifadə olunur. Alqoritmlərin
mətnlə yazılışında izahedici mətnlərlə müşaiyət olunan
müxtəlif riyazi işarə və ifadələrdən istifadə olunur. Əslində
alqoritmin bu təsvir forması məsələnin həlli qaydasının
müfəssəl yazılışıdır. Alqoritmin belə təsvir formasına
yuxarıda göstərdiyimiz ən böyük ədədin və ən böyük ortaq
bölənin tapılması misallarının alqoritmlərini misal göstərə
bilərik. Alqoritmlərin mətn forması ilə təsvir üsuluna
operator sxemi üsulu və alqoritmik dillər də aiddir.
Alqoritmlərin qrafik təsvir üsulunda isə hər biri müəyyən
funksiyanı yerinə yetirən və blok adlanan müxtəlif həndəsi
fiqurlardan istifadə olunur. Bloklar nömrələnir və bir-biri ilə
istiqamətlənmiş üfqi və şaquli xətlərlə birləşdirilir. Lazım
gələrsə, blokların daxilində qısa izahatlar yazmaq olar.
Blokların həndəsi ölçüləri və sxemlərin qurulma qaydaları
mövcud standartlar əsasında yerinə yetirilir.
Ən çox istifadə olunan bloklar cədvəl 1-də göstərilmişdir.
Alqoritmin qrafik üsulla təsvir forması ən geniş yayılmış
üsuldur. Alqoritmin mətnlə yazılış formasından fərqli olaraq
bu üsul daha əyanidir və adətən hər bir bloka alqoritmik
dillərdə hansı isə bir operator uyğun gəlir.
Riyazi mahiyyətindən asılı olaraq hesablama prosesləri
xətti, budaqlanan və dövrü struktura malik olur. Bu
hesablama proseslərinin blok-sxemlərinin özünəməxsus
xüsusiyyətləri vardır və onların öyrənilməsi ilə məşğul olaq.
2.1. XƏTTI STRUKTURLU ALQORITMLƏR
Xətti hesablama proseslərində hər bir addımda
əməliyyatlar bir-birinin ardınca yerinə yetirilir. Bu zaman
aralıq nəticələr növbəti hesabatlar üçün ilkin verilənlər kimi
istifadə olunur.Bu hesablama proseslərində adətən daxiletmə,
8
Ъядвял 1
Ян чох истифадя олунан блоклар
Блокун ады
Блокун щяндяси
тясвири
Блокун функсийасы
Башланьыъ вя
сон
Алгоритмин вя йа програмын
башланьыъы вя йа сону;
Дахилетмя
Монитордан илкин
верилянлярин дахил едилмяси
Просес
(Щесаблама
блоку)
Блокун дахилиндя эюстярилян
дцстур цзря щесабламанын
йериня йетирилмяси
Будагланма
(Мцгайися-
етмя) блоку
Блокун дахилиндя эюстярилян
мцгайисянин йериня
йетирилмяси
Модификасийа
(Дювр блоку)
Алгоритмдя дюврлярин тяшкил
едилмяси
Сяняд
(Чапетмя
блоку)
Нятиъялярин чап гурьусунда
чап едилмяси
Алт програма
мцраъият
Алт програм цзря
ямялиййатын йериня
йетирилмяси
Бирляшдириъи
Бир сящифя дахилиндя
блокларын бирляшдирилмяси
Бирляшдириъи
Мцхтялиф сящифялярдя
йерляшян блокларын
бирляшдирилмяси
9
çapetmə və hesablama bloklarından istifadə olunur. Xətti
hesablama proseslərinin blok-sxemlərinin ümumi görünüşü
şəkil 1-də göstərildiyi kimidir.
Xətti hesablama proseslərini və onların blok-sxemlərinin
tərtib olunma qaydasını öyrənmək üçün misala baxaq.
Misal 2.1. Tərəfləri a, b və c olan üçbucağın
hündürlüklərini aşağıdakı düsturlar ilə hesablamaq üçün
blok-sxem tərtib etməli:
c)
b)(p
a)(p
p(p
(2/c)
h
c)
b)(p
a)(p
p(p
(2/b)
h
c)
b)(p
a)(p
p(p
(2/a)
h
c
b
a
Aydındır ki, məsələni kompüterdə həll etmək üçün a, b, c
ilkin verilənlərini daxil etmək və sonra isə p-ni hesablamaq
lazımdır. Bundan sonra isə h
a
, h
b
və h
c
hündürlüklərini
hesablamaq olar. Lakin burada fikir vermək lazımdır ki,
c)
b)(p
a)(p
p(p
2
ifadəsi üç dəfə təkrar olunur. Ona
görə də bu əməliyyatı üç dəfə təkrar etməmək üçün həmin
ifadəni hesablayıb hər hansı bir dəyişənə mənimsətmək
lazımdır. Onda məsələnin blok-sxemi şəkil 2-də göstərildiyi
kimi olacaqdır.
2.2. BUDAQLANAN STRUKTURLU
ALQORİTMLƏR
Əgər hesablama proseslərində bu və ya digər mümkün
həllərdən birini seçmək lazım gələrsə, onda belə hesablama
prosesləri budaqlanan hesablama prosesləri adlanır. Sadə
halda bu və ya digər şərtin yerinə yetirilib-yetirilməməsindən
asılı olaraq hesablama istiqaməti seçilir. Bu şərt əvvəlcədən
verilə bilər və ya hesablama prosesinin gedişində məsələnin
özündə yarana bilər. İstənilən halda bu şərt müqayisə
blokunda göstərilir. Müqayisə blokunun “böyükdür”, “kiçik-
10
Хятти структурлу алгоритмлярин тясвири
Шякил 1
Шякил 2
Башланьыъ
2
c
b
a
p
c
b
a
h
h
h
,
,
Сон
c
b
a ,
,
b
t
h
b
a
t
h
a
c
t
h
c
)
)(
)(
(
2
c
p
b
p
a
p
p
t
Сон
Башланьыъ
11
dir” və “ bərabərdir” münasibət əməliyyatlarına uyğun üç
çıxışı vardır. Xüsusi halda blokun iki çıxışı da ola bilər ki,
bunlar müqayisə əməliyyatının yerinə yetirilməsinə (“hə”) və
yerinə yetirilməməsinə (“yox”) uyğun gəlir. Budaqlanan
hesablama proseslərinin blok-sxemlərinin ümumi görünüşü
şəkil 3-də göstərildiyi kimidir.
Misal 2.2. Aşağıdakı funksiyanı hesablamaq üçün həll
alqoritminin blok-sxemini tərtib etməli:
olarsa,
0
x
c
|,
x
c
|
ln
x
c
olarsa;
0
x
c
,
e
olarsa;
0
x
c
,
2,5e
2
2
3
2
2
a/b
2
x
c
2
y
burada
b)
-
ln(a
a
3
4
,
3
a
c
.
Göründüyü kimi verilən funksiyanı hesablamaq üçün c
2
-x
ifadəsinin bir neçə dəfə hesablanması tələb olunur. Əvvəlki
misalda olduğu kimi burada da həmin ifadəni bir dəfə
hesablayıb hər hansı bir dəyişənə mənimsətmək lazımdır. Bu
məsələnin blok-sxemi şəkil 4-də göstərilmişdir.
Daha mürəkkəb məsələlərdə bir neçə budaqlanma
istiqamətləri ola bilər.
Misal 2.3. Aşağıdakı funksiyanı hesablamaq üçün həll
alqoritminin blok-sxemini tərtib etməli:
olarsa.
x
x
,
y
olarsa;
x
x
x
),
y
(y
x
x
x
x
y
olarsa;
x
x
x
),
y
(y
x
x
x
x
y
3
3
3
2
1
3
2
3
2
2
2
1
1
2
1
2
1
1
z
Bu məsələnin həlli üçün üç müqayisə bloku lazımdır:
əgər x
1
x olarsa, onda x
x
2
şərtini yoxlamaq lazımdır. Əgər
bu şərt ödənərsə,onda funksiya birinci düstür üzrə hesablanır,
12
Будагланан структурлу алгоритмлярин тясвири
Шякил 3
Шякил 4
Башланьыъ
Сон
Z>0
Z=0
Z<0
z
)
ln(
4
.
3
3
b
a
a
a
c
x
c
z
2
c
b
a ,
,
y
Сон
b
a
e
y
z
z
y
ln
3
z
e
y
5
.
2
Башланьыъ
13
əgər x
1
x şərti ödənməzsə və ya x
1
x şərti ödənərsə, lakin
x
x
2
şərti ödənməzsə, onda x=x
3
şərtini yoxlamaq lazımdır.
Əgər x=x
3
şərti ödənərsə, funksiya üçüncü düsturla (z=y
3
)
hesablanır, əks halda yəni x=x
3
olmazsa, bu x
2
x
3
şərtinə uyğun gəlir və funksiya ikinci düsturla
hesablanacaqdır (şəkil 5).
0>
Dostları ilə paylaş: |