MühaziRƏ 2: MÜASİr ehm- ləRİn təSNİfati


Həll alqoritminin yaradılması



Yüklə 0,76 Mb.
səhifə5/8
tarix26.09.2017
ölçüsü0,76 Mb.
#1814
növüMühazirə
1   2   3   4   5   6   7   8
Həll alqoritminin yaradılması. Bu mərhələdə seçilən həll metoduna uyğun məsələnin həll alqoritmi tərtib olunur. Məsələnin həlli ayrı-ayrı müstəqil bloklara bölünür və həmin blokların yerinə yetirilmə ardıcıllığı təyin edilir. Nəticədə alqoritmin blok sxemi qurulur.

Verilənlərin strukturunun təyini. Bu mərhələdə alqoritmdə iştirak edən verilənlərin tipinə, formasına, mümkün qiymətlərinə və aparılan əməliyyatlara görə onların strukturları seçilir. Yəni verilənlərin tam, həqiqi, simvol və s. tipli olması, massiv, yazı, stek, növbə, siyahı, fayl və s. strukturlarla təşkili müəyyənləşdirilir.

Proqramlaşdırma dilinin seçilməsi və ilkin proqramın tərtibi. Hazırda proqramlaşdırma üçün müxtəlif dillər mövcuddur. Həll olunan məsələnin xarakterinə, tətbiq olunan kompüter üçün mövcud olan translyatorlara, proqramçının hazırlıq səviyyəsinə görə proqramlaşdırma dili seçilir. Sonra isə məsələnin həll alqoritmi əsasında seçilən dildə proqram tərtib edilir. Ona ilkin proqram deyilir.

İlkin proqramın kompüter dilinə çevrilməsi və sazlanması. Bu mərhələdə proqramlaşdırma dilində yazılmış ilkin proqram kompüter dilinə çevrilir. Bu iş translyator adlanan proqram vasitəsilə yerinə yetirilir. Bu zaman ilkin proqramda buraxılmış morfoloji və sintaksis səhvlər aşkar edilib, proqramçıya çatdırılır, səhvlər aradan qaldırıldıqdan sonra tərcümə prosesi davam etdirilir və kompüter dilində proqram alınır. Bu proqrama mütləq və ya işçi proqram deyilir. Bu proqramın düzgün işləməsini yoxlamaq məqsədilə yoxlama misalında o, sınaqdan çıxarılır. Proqramdakı məntiqi səhvlərin aşkarlanıb, aradan qaldırılması prosesinə proqramın sazlanması deyilir.

İşçi proqramın icrası, nəticələrin alınması və təhlili. Proqram sazlandıqdan sonra o, müxtəlif ilkin verilənlər dəsti üçün bir neçə dəfə icra olunur, alınmış nəticə mütəxəssis və məsələni qoyan istifadəçi tərəfindən təhlil olunur. əgər təhlil prosesində nəticələr istifadəçini tan təmin etmirsə, o, yeni tələblər qoya bilər və ya əvvəlki, tələblərdə dəyişiklik edə bilər. Bu halda yeni tələblərin xarakterindən asılı olaraq məsələnin qoyuluşunda, alqoritmdə və ya proqramda müəyyən dəyişiklik edilir. Uzun müddət istifadə olunan proqram kompüterin xarici yaddaşında ( diskdə) hazır proqram kimi saxlanılır. Proqrama istifadəçi üçün təlimat da əlavə olunur.

Alqoritm riyaziyyatın mühüm anlayışlarından biri olub, hələ kompüter yaranmamışdan əvvəl mövcud idi. Çoxrəqəmli onluq ədədlər üzərində hesab əməllərinin aparılması qaydaları ( alqoritmləri) ilk dəfə IX əsrdə özbək riyaziyyatçısı Əl-Xarəzmin tərəfindən verilmişdir. Alqoritm termini də məhz bu riyaziyyatçının adı ilə bağlıdır.

Ümumi şəkildə desək, alqoritm məsələnin həll yoludur, yəni məsələnin həllini təmin edən formal qaydalar sistemidir. Məsələnin kompüterdə həlli baxımından alqoritm axtarılan cavabların alınması üçün məsələnin verilənləri üzərində icra olunan hesabi və məntiqi əməllər ( mərhələlər) ardıcıllığıdır. Bu mərhələlərdə uyğun olaraq hesab və müqayisə əməlləri yerinə yetirilir. Müqayisənin nəticəsindən asılı olaraq bu və ya digər mərhələnin icrasına keçilir.

Alqoritm həll olunan məsələnin xarakteri ilə bağlı olduğu üçün onun yaradılmasında ümumi qaydalar yoxdur. Lakin hər bir alqoritm tərtib edilərkən onun müəyyən tələblərə cavab verməsi nəzərə alınmalıdır. Bu tələblərə alqoritmin xassələri deyilir. Alqoritmin aşağıdakı xassələri vardır:

  1. Müəyyənlik. Alqoritmin tərtibi məsələnin həllini ardıcıl yerinə yetirilən mərhələlərə bölmək deməkdir. Bu zaman əvvəlki mərhələlərin nəticələri sonrakı mərhələdə istifadə oluna bilər. Əsas tələb ondan ibarətdir ki, hər bir mərhələnin məzmunu və mərhələlərin yerinə yetirilmə ardıcıllığı müəyyən olmalıdır. Bu alqoritmin müəyyənlik xassəsini təşkil edir.

  2. Kütləvilik. Bu xassədə iki tələb nəzərdə tutulur:

a). müəyyən məsələnin həlli üçün qurulmuş alqoritm həmin tipdən olan bütün məsələlərin həlli üçün yararlı olmalıdır;

b). alqoritm elə təsvir olunmalıdır ki, ondan hamı istifadə edə bilsin.

3. Alqoritm diskret olmalıdır, yəni hesablama prosesi əməllər ardıcıllığına bölünməlidir.

4. Nəticəvilik. Alqoritmdəki mərhələlərin və onları təşkil edən əməliyyatların sayı sonlu olmalıdır ki, onların yerinə yetirilməsi axtarılan nəticəyə gətirib çıxara bilsin.

Alqoritmdəki hesab əməlləri arasındakı məntiqi əlaqələr kompüterin qəbul edə biləcəyi şəkildə verilməlidir. Həmin əlaqələr çox vaxt bu və ya digər hesablama addımlarının seçilməsini təyin edən müəyyən şərtlərin yoxlanması şəklində ifadə olunur. Məntiqi şərtlər içərisində aşağıdakılar xüsusi yer tutur, çünki onların yaranması hesablama prosesinin normal gedişinə imkan vermir:

  • hesablamada mütləq qiymətcə kompüterdə təsvir oluna biləcək maksimal ədəddən böyük ədədin alınması;

  • sıfırın və ya mənfi ədədin loqarifmalarının hesablanması;

  • mənasız hesablamaların aparılmasına cəhd göstərilməsi ( məsələn, olduqda, arcsin(x) və ya arccos(x) –in hesablanması).

  1. Alqoritmin təsvir üsulları Alqoritmin əyani, yığcam və standart vasitələrlə təsviri onun kütləviliyini təmin edən əsas amildir. Alqoritmin təsviri üçün istifadə olunan əsas üsullar aşağıdakılardır:

- sözlə (nəqli) təsvir;

  • sxemlə təsvir;

  • alqoritmik dillə təsvir.

Sözlə təsvir alqoritmin kütləvilik xassəsini təmin etmədiyindən, o, icrası insan tərəfindən aparılan və nisbətən sadə alqoritmlərin təsvirində istifadə oluna bilər.

Alqoritmin ən yığcam təsvir vasitəsi alqoritmik dildir. Bu üsul alqoritmin icrasının kompüter vasitəsilə yerinə yetirildiyi halda daha əlverişlidir. Çünki alqoritmik dildə təsvir olunan alqoritm həm də məsələnin ilkin proqramıdır. Lakin bu üsul mürəkkəb alqoritmlərin oxunub başa düşülməsini xeyli çətinləşdirir. Alqoritmin təsvirində ən geniş tətbiq edilən sxem üsuludur. Bu üsulda alqoritm, hər biri müəyyən funksiyanı yerinə yetirən bloklar ardıcıllığı şəklində təsvir olunur. Adətən bir blok alqoritmin bir mərhələsinə uyğun olur. Lakin bir blokda bir neçə eyni tipli mərhələ və ya əksinə, bir mərhələ bir neçə blokda təsvir oluna bilər. Bloklar həndəsi fiqur şəklində ifadə olunur və bir-biri ilə şaquli, yaxud üfüqi xətlərlə birləşdirilir. Əgər xətlərin uclarında istiqaməti göstərən ox işarəsi yoxdursa, onda keçidin şaquli istiqamətdə yuxarıdan aşağıya, üfüqi istiqamətdə isə soldan sağa verildiyi qəbul olunmuşdur. lazım gəldikdə bloklar nömrələnir. Blokların qrafiki şəkildə ifadə olunması üçün Proqram Sənədlərinin Vahid Sistemi (PSVS) çərçivəsində standart qəbul olunmuşdur və bu aşağıdakı kimidir:


və s. Alqoritmin blok sxemini bütöv şəkildə qurmaq məsləhətdir, lakin lazım gəldikdə, blokları birləşdirən xətləri qırmaq mümkündür. Alqoritmin blok sxemlə təsvirində hər bir mərhələnin məzmunu, mərhələlərin icra ardıcıllığı, təkrarlanan hissələr ( dövrlər) aydın görünür. Mürəkkəb və böyük həcmli məsələlərin həlli zamanı blok sxemin tərtibi çox zəhmət və vaxt tələb edir. Belə hallarda alqoritmin hər bir bloku özündə bir neçə mərhələni əks etdirən ümumiləşdirilmiş blok şəklində təsvir olunur. Alqoritmin sonrakı dəqiqləşdirilməsi isə proqramlaşdırma mərhələsində yerinə yetirilir.

Tipik alqoritmik strukturlar

İstənilən hesablama prosesi aşağıdakı tipik ( elementar) alqoritmik strukturların kombinasiyasından təşkil olunur: xətti, budaqlanan, dövrü ( təkrarlanan)

Xətti alqoritmik struktur.

Xətti alqoritmik struktur iki və daha çox prosesin ardıcıllığından ibarətdir. Onun tərkibində seçmə bloku olmur.

Misal: Tərəfləri a, b, c olan üçbucağın sahəsinin hesablanması üçün alqoritm tərtib edək:


Budaqlanan alqoritmik struktur. Tərkibində məntiqi blok olan hesablama prosesini təsvir edir. Hər bir budaqlanma nöqtəsi uyğun məntiqi blokla təyin olunur. Bu blokda müəyyən kəmiyyətlərin ( ilkin verilənlərin, aralıq nəticələrin və s.) bu və ya digər şərti ödəyib-ödəməməsi yoxlanılır və nəticədən asılı olaraq, bu və ya digər hesablama istiqaməti seçilir. İki blokdan ibarət olan prosesə sadə, ikidən çox budaqdan ibarət olan prosesə isə mürəkkəb budaqlanan struktur deyilir. Mürəkkəb budaqlanan struktur sadə strukturlarla ifadə oluna bilər.

Blok sxemdə hər hansı şərtdən asılı olaraq bütün hesablama istiqamətləri göstərilməlidir. Lakin proqramın icrası zamanı bu istiqamətlərdən yalnız birinə görə hesablama aparılır. Seçilən bir budağa görə hesablama prosesi sonlu nəticəyə gətirilib çıxarılmalıdır.

Alqoritmik dillərdə budaqlanan struktur iki cür olur:

  • tam formatlı budaqlanma;





  • natamam formatlı budaqlanma




Budaqlanan hesablama proseslərinin alqoritm və proqramlarını tərtib edərkən, əgər ayrı-ayrı budaqlarda təkrarlanan hesablama əməliyyatları varsa, onlar budaqlanmadan əvvəl yerinə yetirilməlidir.

Dövrü alqoritmik strukturlar.

Təcrübədə çox rast gəlinən hesablama proseslərində məsələnin ( və ya onun bir hissəsinin həlli eyni hesablama düsturları ilə dəyişənlərin müxtəlif qiymətləri üçün bir neçə dəfə təkrarən hesablamaların aparılmasını tələb edir. hesablama prosesinin təkrarən yerinə yetirilə hissəsinə dövr deyilir.

Dövrü strukturlar sadə və mürəkkəb ola bilər. Sadə struktur bir, mürəkkəb struktur isə biri digərinin içərisinə daxil olan iki və daha çox dövrdən ibarət olur.

Dövrü alqoritmik strukturların tərtibi zamanı dövrün girişində hesablama prosesinin tələb etdiyi hazırlıq əməliyyatlarının aparılması nəzərə alınmalıdır ( məs., bir neçə ədədin cəminin və ya hasilinin hesablanmasında başlanğıc qiymətlərin mənsub edilməsi). Mürəkkəb dövrü strukturlarda xarici və daxili dövrlər və onlar arasındakı münasibətlər müəyyənləşdirilməlidir. Proqramlaşdırma dillərində dövrü strukturların reallaşdırılması üçün ön şərtli və son şərtli dövrü operatorlardan istifadə olunur. Aşağıda ön şərtli strukturun sxemi verilmişdir.


Sonşərtli dövrü alqoritmik struktur isə



kimidir.
Kompüterdə məsələnin həlli mərhələlərindən biri də, məsələnin həlli üçün yaradılmış alqoritmə uyğun, hər hansı proqramlaşdırma dilində ilkin proqramın tərtibidir. Proqram - hər hansı alqoritmin kompüterdə icrası üçün maşın əmrlərinin ardıcıllığıdır. Başqa sözlə, proqram-alqoritmin kompüterdə icrası üçün onun təsvir formasıdır.

Birinci nəsil maşınlarda proqramlar maşın dilində yazılırdı. Məsələn, iki ədədin toplanması təxmini olaraq, aşağıdakı kimi yazılırdı:

15 0223 1677 3431

Əmrin başlanğıcındakı 15 ədədi əməliyyatın kodudur ki, bu da “iki ədədin toplanması və alınan cəmin yaddaşa yazılmasını” göstərir. 0223, 1677 və 3431 yaddaş xanalarının ünvanlarıdır. bu xanalarda toplananlar və cəm yadda saxlanılır. Bu əmr belə ifadə olunur: 0233 nömrəli xanaya yazılmış ədədlə, 1677 nömrəli xanaya ədəd toplanılaraq, nəticə 3431 nömrəli xanada yerləşdirilir.

Proqramın bu üsulla tərtibi olduqca çox zəhmət tələb edir. Bundan başqa proqram sonradan oxunma üçün aydın alınmır. Maşın dilində proqramlaşdırmanın daha bir çatışmayan cəhəti ondan ibarətdir ki, eyni bir alqoritmin müxtəlif kompüterlərdə yerinə yetirilməsi üçün müxtəlif proqramlar yazmaq lazım gəlirdi. Belə ki, hər bir kompüterin özünün əmrlər sistemi mövcud idi. Ona görə də kompüteri yaradanlar əsas diqqəti proqramlaşdırma prosesini yüngülləşdirməyə yönəltdilər. Mütəxəssislər tezliklə başa düşdülər ki, əmrlərin yazılması və proqramın tərtibi üçün şərti işarələr sistemi yaratmaqla, maşın kodunun tərtib olunma prosesini avtomatlaşdırmaq mümkündür. Məs., 15 kodu ilə göstərilən əmri aşağıdakı kimi yazmaq olar:

c=a+b

Bu düsturda, yuxarıda sadə sözlə təsvir edilmiş bütün informasiya öz əksini tapmışdır: Yəni “+” işarəsi toplamanı, “=” işarəsi mənsub etməni, latın hərfləri isə, xanalarda yadda saxlanılan ədədlərə uyğun dəyişənləri göstərir.

Kompüterdə yerinə yetirilən daha mürəkkəb əməliyyatları buna oxşar şəkildə yazmaq olar. Məs., x> y şərtini yoxlayan əmri ingilis dilində aşağıdakı kimi ifadə etmək olar:

İf x>y then y=x+5

və ya azərbaycan dilində əgər x>y then y=x+5

Bu halda aşağıdakıları nəzərə almaq lazımdır:

- əmrlərin yazılmasında insan üçün daha aydın şərti işarələr sistemi yaratmaq;

bu əmrləri maşının başa düşəcəyi dilə çevirmək üçün proqram yaratmaq .

Bununla da, yeganə proqram çeviricidən istifadə etməklə, proqramlaşdırma dilində istənilən proqramı yazmaq olar.

Proqramlaşdırma dilinin “qrammatika” qaydası dəqiq təyin olunmuş sintaksisə (yazılış qaydasına) malikdir. Məsələn, “əgər” şərtini ingilis dilində (if) və şərtdən (x>y) sonra “vergül qoymaq olmaz” təyin edilibsə, onda əmrin başqa cür yazılışı çevirici proqram tərəfindən səhv kimi başa düşülür.

Proqramlaşdırma dillərində əmrlər çox vaxt operator və ya təlimat adlanır. Hər hansı alqoritm üçün tərtib olunan bu cür əmrlər ardıcıllığı ilkin proqram və ya sadəcə ilkin mətn adlanır. İlkin mətn çevirici proqram (translyator) vasitəsilə çevriləndən sonra icra olunur.

Hal – hazırda maşın kodundan istifadə olunmur və kompüter üçün proqram hər hansı proqramlaşdırma dillərinin birində tərtib olunur. Proqramlaşdırma dilləri olduqca çoxdur, amma hamısı bir qayda olaraq, verilənlərin təsviri, hesabi operatorlar, dövrün təşkili və idarəedici vasitələr, informasiyanın daxil və xaric olunma vasitələri ilə təmin olunub. Dillərin çoxu proqramın tərtibində oxşar prinsiplərdən istifadə etməsinə baxmayaraq, onların sintaksisi müxtəlifdir.



Proqramlaşdırma dillərinin təsnifatının əsas əlamətlərindən biri dilin hansı proqramlaşdırma üslubuna mənsub olmasıdır. Proqramlaşdırma texnologiyasında əsasən aşağıdakı üslublardan istifadə olunur:

- prosedur proqramlaşdırma;

- funksional proqramlaşdırma;

- məntiqi proqramlaşdırma;

- obyektyönlü proqramlaşdırma.

Prosedur proqramlaşdırma- 40-cı ildə Con Fon Neyman tərəfindən təklif olunan kompüterin arxitekturasına əsaslanır və onun nəzəri modeli kimi “Tyurinq maşını” adlanan alqoritmik sistem götürülmüşdür.

Prosedur proqramlaşdırma dilində proqramlar operatorlar ( təlimatlar) ardıcıllı­ğın­dan ibarətdir. Burada əsas operator, yaddaş sahəsinin məzmununu dəyişən mənsub etmə operatorudur.

Prosedur dil aşağıdakı xüsusiyyətlərə görə xarakterizə olunur:

- yaddaşın idarə olunmasının vacibliyi, xüsusi dəyişənlərin təsviri;

- simvolların emalı üçün imkanların məhdudluğu:

- ciddi riyazi əsasın olmaması:

- müasir kompüterdə yüksək səmərəliliklə reallaşdırılma.

Prosedur dilin əsas təsnifat əlamətlərindən biri onun səviyyəsidir. Proqram­laşdırma dilinin səviyyəsi onun konstruksiyasının semantik ölçüsü və onun proq­ramçıya yönümü dərəcəsi ilə təyin olunur. Dilin proqramçıya yönümü nə qədər çox olsa, onda bu dilin səviyyəsi bir o qədər yüksək olur. Fərdi kompüterlərdə istifadə olunan proqramlaşdırma dillərini səviyyələri artma ardıcıllığı ilə aşağıdakı kimi xarakterizə olunur.

İkilik dil bilavasitə maşın dilidir. Hazırda istifadə olunmur.

Assembler dili – maşın dilinə yaxın olub, maşın əmrlərinin simvolik formada təsvirini təmin edir. Bu dil proqramçıya əməliyyatların mnemonik kodlarından istifadə etməyə, yaddaşın xanalarına və sahələrinə ad verməyə imkan verir.

Makroassembler dili – Assembler dilinə makro vasitələr daxil edilməsi ilə alınan dildir. Dilin köməyi ilə proqramdakı operatorları parametrlərlə təsvir etmək mümkündür. Bu əməliyyatdan sonra proqramçı arqumentlə təmin olunmuş makroəmrlərdən istifadə edə bilər.

Peşəkar sistem proqramçılar kompüterin bütün qurğularından istifadə etmək üçün Assembler və Makroassembler dillərini tətbiq edirlər. Bu dillərdən adətən sistem proqram təminatının tərkibinə daxil olan – drayver, utilit və s. proqramlarının yaradılmasında istifadə olunur.

C proqramlaşdırma dili ilk dəfə 70 –ci ilin əvvəlində UNİX əməliyyat sistemini reallaşdırmaq üçün yaradılmışdır. C dili müasir yüksək səviyyəli dillərin idarəedici konstruksiyalarını və Assembler tipli aşağı səviyyəli dilin köməyi ilə verilənlərin kompüterin aparat vasitələrinə müraciət imkanlarını özündə birləşdirir. Bu dil funksional proqramlaşdırmaya yaxınlaşır. Burada prosedur anlayışından istifadə olunmur.

Basic ( Beginners All- purpose Sumbolic İnstruction Code – başlayanlar üçün çoxməqsədli dil) -1964-cü ildə proqramlaşdırmanı yeni öyrənənlər üçün yaradılmışdır. Bu dil hesablama maşını ilə insanın bilavasitə informasiya mübadiləsi üçün sadə dildir. İlk vaxtlar bu dildə interpretatordan, hal-hazırda isə kompilyatordan istifadə olunur.

Pascal dili prosedur proqramlaşdırma dilləri içərisində ən çox istifadə olunan dildir. Pascal dili hal-hazırda çox geniş yayılıb və onun fərdi kompüterlərdə Borland Pascal və Turbo Pascal kimi müxtəlif versiyaları mövcuddur.

Funksional proqramlaşdırma – dilin mahiyyəti A. P. Yerşov tərəfindən təyin olunmuşdur.

Funksional dillərin konstruksiyasında ifadə əsas rol oynayır. İfadələrə skalyar sabitlər, strukturlaşmış obyektlər, funksiyalar, funksiyanın gövdəsi və funksiyaların çağırılması aiddir.

Funksional proqramlaşdırma dilinə aşağıdakı elementlər daxildir:

- funksiyanın manipulyasiya edə bildiyi sabitlər sinfi;

- proqramçının əvvəldən təsvir etmədən istifadə etdiyi baza funksiyalar yığını;

- baza funksiyalardan yeni funksiyaların tərtibi qaydası;

- çağırılan funksiyalar əsasında ifadələrin yaradılma qaydası.

Funksional proqramlaşdırmada dəyişənlərin qiymətlərinin yaddaşda saxlanıl­ması konsepsiyasından istifadə olunmur. Mənsub etmə operatoru yoxdur, belə ki, nəticədə dəyişənlər yaddaş sahəsi kimi yox, riyaziyyatda dəyişən anlayışına tamamilə uyğun olan proqram obyektləri ilə ifadə olunur.

Funksional proqramlaşdırmanın ilk dili LİSP ( LİST – siyahıların emalı) dilidir.

Məntiqi proqramlaşdırma –Bu proqramlaşdırmanın ən çox inkişaf etmiş və yayılmış dili PROLOG –dur. Məntiqi proqramlaşdırma dilləri, xüsusən PROLOG, süni intellekt sistemlərində geniş tətbiq olunur. Məntiqi proqramlaşdırmanın əsas anlayışı nisbətdir. Proqram obyekt və məqsəd arasındakı nisbətin təyinindən təşkil olunur. Proqramın yerinə yetirilməsi istifadə olunan dilin semantikasına uyğun quraşdırılmış qaydalar əsasında məntiqi düsturların ümumi qiymətləndirilməsi kimi şərh olunur. Məntiqi proqramlaşdırmada yalnız alqoritmə əsaslana faktların spesifik xüsusiyyətlərini göstərmək lazımdır. Burada yerinə yetirilməsi tələb olunan addımlar ardıcıllığını təyin etmək lazım deyil.

Məntiqi proqramlaşdırma aşağıdakılara görə xarakterizə olunur:

  • yüksək səviyyə;

  • simvol hesabatına istiqamətlənmə;

  • tərsinə ( inversiv) hesablama imkanı,

  • məntiqi natamamlığın mümkünlüyü, çünki proqramda müəyyən məntiqi münasibətləri əks etdirmək, həmçinin bütün nəticələrin düzgün alınması mümkün deyil.

Məntiqi proqram prinsipcə çox da böyük olmayan sürətə malikdir. Belə ki, hesablama əvvəlki addıma qayıtmaq şərti ilə axtarış, sınaq və səhvlər üsulu ilə həyata keçirilir.

Obyektyönlü proqramlaşdırma – Proqramlaşdırmanın obyektyönlü üslubu obyekt anlayışına əsaslanır, mənası isə “obyekt=verilənlər+prosedurlar” düsturu ilə ifadə olunur. Hər bir obyekt özündə verilənlərin strukturunu birləşdirir və onlara müraciət bu verilənlərin emalı proseduru ilə mümkündür ki, bu da metod adlanır. Verilənlər və prosedurun bir obyektdə birləşməsi inkapsulyasiya adlanır.

Obyektlərin təsvirinə sinif xidmət edir. Sinif bu sinfə aid olan obyektlərin xassə və metodlarını təyin edir. Uyğun olaraq, istənilən obyekt sinfin nüxsəsini təyin edə bilir.

Obyektyönlü proqramlaşdırma dillərinə Smalltalk, C++, Object Pascal, Java və s. aiddir.

Turbo Pascal dilində proqramlaşdırma

Pascal dili proqramlaşdırmanın əsas konsepsiyasını öyrətmə vasitəsi kimi yaransa da, sonralar tətbiqi məsələlərin həllində əlverişli bir vasitəyə çevrildi. Dilin sadəliyi, bütün struktur quruluşların əlverişli təsviri, proqramlaşdırma prosesinin sadələşdirilməsi və səmərəli obyekt modullarının olması bu dilin çox geniş yayılmasına səbəb olmuşdur. Pascal dili həm riyazi, həm də qeyri-riyazi məsələlərin həllində verilənlərin strukturu üçün çox güclü vasitələrə malikdir.

Pascal dilinin geniş yayılması və ona tələbat, bu dil əsasında müasir proqramlaşdırma sistemlərinin yaradılmasına səbəb oldu. Bu vəzifəni Borland İnternational firması yerinə yetirdi. Yaradılan instrumental proqramlaşdırma sistemi dialoq rejimində proqram tərtib etməyə imkan verirdi. Bu sistemlər təkmilləşdirilərək, Turbo Pascal 7.0 və Borland Pascal Objects7.0 proqramlaşdırma sistemləri yaradıldı.

Turbo Pascal sistemi İBM fərdi kompüterlərin Pascal dilinin genişlənmiş proqramlaşdırma dilindən, proqramların yazılması, sazlanması və işə salınması üçün mühitdən ibarətdir.

Proqramlaşdırma dili əməliyyat sisteminin imkanlarından istifadə etməyə, overley struktur yaratmağa, daxiletmə - xaricetmənin təşkilinə, qrafiki təsvirlərin tərtibinə və s. imkan verən geniş modullar kitabxanasına malikdir.

Proqramlaşdırma mühiti proqram mətnlərinin yaradılmasına, onların kompilyasiyasına, səhvlərin tapılmasına və onların operativ düzəldilməsinə, ayrı-ayrı proqram hissələrindən proqramın yığılmasına, sazlanmasına və sazlanmış proqramı yerinə yetirməyə imkan verir. Paket həmçinin istifadəçiyə kömək üçün böyük həcmli arayış təqdim edir.

Qeyd edək ki, Turbo Pascal7.0 ilə eyni zamanda WINDOWS mühitində istifadə etmək üçün nəzərdə tutulun Borland Pascal 7.0 sistemi yaradılmışdır. Amma WINDOWS mühitində bilavasitə Pascal dilinin istifadəsində çətinliklər olduğundan bu sistem az yayılıb. Bu səbəbdən Borland İnternational firması Borland Pascal-ın sonrakı təkmilləşdirilməsindən imtina edərək, Pascal dilinin bütün üstün cəhətlərini nəzərə almağa imkan verən DELPHİ sisteminin hazırlanmasına keçdi. Sistem WINDOWS mühiti üçün yaradılan tətbiqi proqramlarla əlaqədar yaranan bir çox çətinlikləri aradan qaldırmağa imkan verən vizual proqramlaşdırmaya əsaslanıb. Bu sistemdən effektiv istifadə etmək üçün Pascal dilinin xüsusiyyətləri dərindən öyrənilməlidir.
İstənilən dil (azərbaycan, rus, ingilis və s.) simvollar, söz, söz birləşmələri və cümlələrdən ibarətdir. Proqramlaşdırma dillərində də buna analoji elementlər var. Bunlar simvollar, sözlər, ifadələr (söz birləşmələri) və operatorlardır ( cümlələr).

Dilin simvollarından ixtiyari mətnin tərkibində istifadə olunur. Hər hansı dilin əlifbası sonlu sayda simvollar çoxluğudur. Dilin əlifbası aşağıdakı qruplara bölünür:

  • A=dan Z-ə kimi böyük və kiçik latın hərfləri və “_” aşağıdan xətt simvolu;

  • 0-dan 9-a kimi onluq rəqəmlər;

  • xüsusi simvollar:

# ) - ; @ { $ * / < [ ] ‘ + / = ] ( , : > ^

  • xüsusi simvollar cütü (mürəkkəb simvollar):

:= // <= >= (* *) (. .)

  • böşluq simvolu “ “

  • idarəedici simvollar (ASCII kodu 0-dan 31-ə kimi)

İdentifikator. Hərf , rəqəm və “_” işarələrindən ibarət olmaqla, hərf və ya “_” işarəsi ilə başlayan sözlərdir. İdentifikatorda boşluq işarəsi ola bilməz. Sabitə, tipə, dəyişənə, prosedura, funksiyaya, modula, proqrama və yazılar sahəsinə ad verərəkən identifikatorlardan istifadə olunur. İdentifikatorin uzunluğu ixtiyari ola bilər, amma kompilyator onun birinci 63 simvolunu qəbul edir. Məs., Prog_1, _Stop, və s.

Xüsusi hallarda müxtəlif modullarda eyni adlar təsvir olunur ki, bunlar dəqiqləşdirilmiş identifikatorlar adlanır. Bu halda dəyişənin adının qarşısında, bu dəyişəni özündə saxlayan modulun identifikatoru yazılır. Bu identifikatorlar nöqtə ilə ayrılır. Məs., Unit1. Myvar, Unit2.Myvar

Dəqiqləşdirilmiş identifikatorlardan yazı və obyektlərlə işləyərkən istifadə olunur. Dəqiqləşdirilmiş identifikatorlara nişan, sabit, tip, dəyişən, prosedur və funksiya idenmtifikatorları aiddir.

Turbo Pascal-da identifikatorların iki növü var: standart və istifadəçi

Əvvəlcədən təyin edilmiş standart identifikatorlara, dilə daxil edilmiş standart prosedur və funksiyaların (read, write, sin, və s.) tiplərin (integer, real, char , və s.), direktivlərin(absolute, forward, private, public və s.) adları aiddir.

Xidməti (acar) sözlər. Turbo Pascal dilində xidməti sözlər öz vəzifəsinə görə dəqiq təyin olunaraq, dəyişdirilə bilməz. Buna görə də identifikatorun yazılışında xidməti sözlərdən istifadə etmək olmaz.

Turbo Pascal – da böyük və kiçik hərflərlə ( yuxarı və aşağı registrlərlə) yazılmış sözlər fərqlənmir. Belə ki,

program Program PROGRAM sözləri eyni xidməti sözü göstərir. Göstərilən bu xassə nəinki xidməti sözlərə, həmçinin proqramda istifadə olunan identifikatorlara da aiddir. Turbo Pascal dilində xidməti sözlər aşağıdakılardır:

and goto program if record array repeat begin set in case const label do for of uses var və s.

Nişanlar. Nişan operatora verilən aiddir. Turbo Pascal-da nişanların ədəd və simvol növü mövcuddur. Ədədi nişanlar 0÷9999 arasındakı tam onluq ədədlərlə ifadə olunur. Nişan kimi identifikatorlardan da istifadə olunur ki, bu da identifikatorun yazılış qaydalarına tabe olmalıdır. Nişan operatordan iki “:” ilə ayrılır.

Ədədlər. Turbo Pascal-da tam onluq ədəd, tam onaltılıq ədəd və həqiqi onluq ədəddən istifadə olunur. Həqiqi ədədlər iki müxtəlif yazılış formasında təsvir olunur: adi (sabit nöqtəli) və tərtibli (sürüşən nöqtəli).

Tam onluq ədədlər standart şəkildə yazılaraq, -2147483648÷2147483647 –yə kimi diapazonda təsvir olunur.

Tam onaltılıq ədədlərin yazılışında, ədədin qarşısına $ simvolu qoyulur. Məs., $0, $3E, $FCB437

Onaltılıq ədədlər üçün mümkün diapazon $00000000÷$FFFFFFFF –dir

Həqiqi ədədlər, ya adi onluq kəsr şəklində ( sabit nöqtəli forma), ya da əsası 10 olan qüvvət formasında ( sürüşən nöqtəli forma) yazılır. 10 əsasının yerinə E işarəsindən istifadə olunur. Məs., 7.81, -193.5782, 17.9E11, -51,91E5, 0.29E-10

Sətirlər. Sətirlər, birqat dırnağa alınmış ASCII kodunun simvollar ardıcıllığından təşkil olunur və proqramın bir sətrində yerləşməlidir. Əgər simvollar daxilində birqat dırnaq varsa, onda bu simvol iki dəfə ardıcıl çap olunmalıdır. Məs.,

‘Turbo Pascal 7.0’

Sətirdə idarəedici simvollar qarşısında # simvolu olan tam onluq ədəd şəklində təsvir olunur. Məsələn: #7 –“zəng” simvolu

#10 – “sətrə keçid” simvolu

Əgər sətirdə bir neçə idarəedici simvollar olarsa, bunlar arasında ayırıcı olmamalıdır.

Şərhlər. Şərh { , } və ya (* , *) simvolları arasında olan proqramın mətninin fraqmentidir ki, kompilyator tərəfinfən nəzərə alınmır. Qeyd etmək lazımdır ki, əgər şərhdə birinci simvol dollar olarsa, onda bu kompilyatorun direktivi adlanır.

{$N+}, (*$R-*), {$: MyFile.pas}

Ayrıcılar. Turbo Pascal- da ayırıcı kimi aşağıdakı simvollardan istifadə olunur:

  • boşluq, tabulyasiya, növbəti sətrin başlanğıcına keçməyi göstərən mürəkkəb simvol (“karetkanın qayıtması” və “sətrə keçid”)

Turbo Pascalda bunlardan başqa ASCII –nin 0 ilə 31 kodu arasındakı idarəedici simvollardan da ayırıcı kimi istifadə olunur.

Verilənlərin tipləri dedikdə verilənlərin mümkün qiymətlər çoxluğu və bunlar üzərində əməllər nəzərdə tutulur.

Tiplərin təsnifatı. Pascal dilində tiplər çoxluğunu iki qrupa bölmək olar:

  • standart tiplər;

  • istifadəçi tərəfindən təyin olunmuş tiplər(istifadəçi tipləri)

Standart tiplərin adları əvvəldən təyin olunmuş identifikatorlardır və proqramın ixti­ya­ri yerində iştirak edə bilər. Bu tiplər standart system modulunda təsvir olunur.

İstifadəçi tipləri- əlavə abstrakt (sadə və strukturlaşmış) tiplərdir ki, xarakteristika­larını istifadəçi – proqramçı sərbəst təyin edir.

Standart tiplər

Turbo Pascalda standart tiplərə aşağıdakılar aiddir:

  • tam tiplər

Tam dəyişən və sabitləri təsvir etmək üçün beş tip mövcuddur ki, onların xarakteris­tikaları cədvəldə verilmişdir:

Tipin adı

identifikator

ədədin təsvir diapazonu

Yaddaş ölçüsü

İşarəli qısa tam

Shortint

-128.. 127

1 bayt

İşarəli tam

integer

-32768..32767

2 bayt

İşarəli uzun tam

longint

-2147483648.. 2147483647

4 bayt

İşarəsiz qısa tam

Byte

0..255

1 bayt

İşarəsiz tam

Word

0..65535

2 bayt


-həqiqi tiplər. Bu qrupa beş tip daxildir ki, bunlar cədvəldə göstərilmişdir:

Tipin adı

identifikator

ədədin təsvir diapazonu

Mantissadakı rəqəmlərin sayı

Yaddaş ölçüsü

Birqat dəqiqlikli həqiqi

Single

1.5∙10-45÷3.4∙1038

7..4

4 bayt

Həqiqi

real

2.9∙10-39÷1.7∙1038

11.. 12

6 bayt

ikiqat dəqiqlikli həqiqi

Double

5.0∙10-324÷1.7∙10308

15.. 16

8 bayt

Yüksək dəqiqlikli həqiqi

Extended

3.4∙10-4932÷1.1∙104932

19..20

10 bayt

Tam həqiqi formatda

comp

-263+1.. 263-1 və ya təqribi -9.2∙10-18÷9.2∙1018

19.. 20

8 bayt

Bu qrupda tam və həqiqi tiplərin qarışığı Comp tipini xüsusi qeyd etmək lazımdır.

Turbo Pascalda həqiqi tip ədədlər üzərində əməliyyatların yerinə yetirilməsi üçün kodun generasiyasının iki üsulu vardır:

-80x87 soprosesoru olduqda (aparat üsulu);

- 80x87 soprosesoru olmadıqda (proqram üsulu);

Bu üsulların seçilməsi kompilyatorun $N və $E direktivləri ilə həyata keçirilir.

  • Məntiqi (bul) tip. Turbo Pascal-ın 6.0 versiyasına kimi yalnız bir Boolean bul tipi var idi ki, bul a iki məntiqi qiymət – True (doğru) və False (yalan) –ala bilərdi. Turbo Pascal-ın 7.0 versiyasına daha üç Byte bool, Word Bool, Long Bool Bul tipləri daxil edilib. Bul tiplərinin xarakteristikaları cədvəldə verilmişdir:

Tipin identifikatoru

False-nin qiyməti

True –nun qiyməti

Yaddaş ölçüsü

boolean

0 ədədi

Sıfırdan fərqli ixtiyari ədəd


1 bayt

Byte Bool

0 ədədi

1 bayt

Word Bool

Hər 2 baytda 0 ədədi

2 bayt

Long Bool

Bütün baytlarda 0 ədədi


4 bayt

Qeyd etmək lazımdır ki, buradakı yeni bul tipləri, Windows mühitində proqramların yaradılmasını təmin etmək üçün daxil edilmişdir. False qiymətində 0 True qiymətin­də isə sıfırdan fərqli ixtiyari ədəd uyğundur.

-Simvol tipi. Simvol tipli dəyişən və sabitlər ASCII kodunun simvollar çoxluğunun qiymətlərini ala bilər. Hər hansı simvolun kodunun qiymətini ORD funksiyasının köməyilə almaq mümkündür. Əks əməliyyat isə CHR funksiyası ilə yerinə yetirilir.

-Sətir tipləri. Sətirlərdən proqramlaşdırmada çox geniş istifadə olunur. Turbo Pascal-a Strig və PChar standart tipləri daxil edilmişdir. String tipli sətirlər Turbo Pascal dilinin bütün versiyalarında reallaşdırılıb.

-Göstərici tipi. Standart göstərici tipinin identifikatoru Pointer-dir. Pointer tipinin elementləri, istifadəçi tərəfindən təyin edilən göstərici tiplərindən fərqli olaraq, ixtiyari tipli dəyişənin ünvanını özündə saxlayır.

-Mətn tipi. Mətn fayllarını təsvir etmək üçün Text standart mətn tipindən istifadə edilir.

Mühazirə 5

Pascal alqoritmik dilinin standart funksiyaları. Pascal dilində proqramın quruluşu və alqoritmik dilin operatorları: sadə operatorlar. Giriş - çıxış operatorları

Plan:

  1. Standart funksiyalar

  2. Pascal dilində proqramın quruluşu

  3. Turbo Pascal dilinin sadə operatorları

  4. Giriş- çıxış operatorları

Turbo Pascalda ifadələrdə hazır element kimi istifadə olunan əvvəlcədən hazırlanmış alt proqramlar- funksiyalar mövcuddur. Bunların sayı artırılmış və standart bir modulda yerləşdirilmişdir. Turbo Pascal proqramlarında sabit, tip, dəyişən, prosedur və funksiyalardan istifadə edərkən, onlarən təyin olunduğu modullar təsvir olunmalıdır. İstifadəçi tərəfindən yaradılan modulların və System modulıunun təsviri vacib deyil. Digər modullar hökmən təsvir olunmalıdır

Hesabi funksiyalar Aşağıdakı cədvəldə System modulunun tərkibinə daxil olan və sadə riyazi hesablamaları yerinə yetirən funksiyalar göstərilmişdir:

Funksiya

Vəzifəsi

Nəticənin tipi

Abs(x)

Arqumentin mütləq qiyməti

x-in tipi ilə üst-üstə düşür

Sqr(x)

Arqumentin kvadratı

x-in tipi ilə üst-üstə düşür

Sqrt(x)

Arqumentin kvadrat kökü

Həqiqi

Arctan(x)

Arqumentin arktangensi

Həqiqi

Cos(x)

Arqumentin kosinusu

Həqiqi

Sin(x)

Arqumentin sinusu

Həqiqi

Exp(x)

Ex

Həqiqi

Ln(x)

Natural loqarifma

Həqiqi

Frac(x)

Ədədin kəsr hissəsi

Həqiqi

İnt(x)

Ədədin tam hissəsi

Həqiqi

Pi

kəmiyyətinin qiyməti

Həqiqi

Tipin çevrilmə funksiyaları. Bu funksiyalar tipin çevrilməsi üçün nəzərdə tutulub. Məs., simvolun ədədə, həqiqi ədədin tama və s. Bunlar aşağıdakı funksiyalardır:

-Chr(x) –ASCII kodunun simvola çevrilməsi

Funksiyanın arqumenti 0..255 intervalında olmaqla tam olmalıdır. Nətic bu koda uyğun simvoldur. Məs., chr(97)-ni nəticəsi ‘a’-dır.

-High(x)-kəmiyyətin maksimal qiymətinin tapılması.

Funksiyanın arqumenti sıra, sətir və massiv tipli parametr və ya identifikator ola bilər. Nəticə sıra tipi üçün bu kəmiyyətin maksimal qiyməti, massiv tipi üçün indeksin maksimal qiyməti və sətir tipi üçün sətrin təsvir olunmuş ölçüsü.

-Low(x) – kəmiyyətin minimal qiymətinin tapılması.

Funksiyanın arqumenti sıra, sətir və massiv tipli parametr və ya identifikator ola bilər. Nəticə sıra tipi üçün bu kəmiyyətin minimal qiyməti, massiv tipi üçün indeksin minimal qiyməti və sətir tipi üçün isə 0-dır.

-Ord(x) –istənilən sıra tipinin tam tipə çevrilməsi.

Funksiyanın arqumenti ixtiyari nizamlı ( məntiqi, simvol və sadalanan ) tip ola bilər. Nəticə Longint tipinin kəmiyyətidir. Məs., ord(‘a’) nəticəsi 97-dir.

-Round(x)- həqiqi ədədin qiymətinin, bu ədədə yaxın olan tamadək yuvarlaqlaşdırılması.

Funksiyanın arqumenti həqiqi, nəticə isə Longint tipində olur.

-Trunc(x) – həqiqi ədədin tam hissəsinin tapılması.

Funksiyanın arqumenti həqiqi, nəticə isə Longint tipində olur.

Sıra tipinin kəmiyyətləri üçün funksiyalar. Bu funksiyalar əvvəlki və ya sonrakı elementlərin tapılması, ədədin təkliyinin yoxlanması üçündür. Bu tipə aşağıdakı funksiyalar aiddir:

-Odd(x) –x-in təkliyinin yoxlanması

Funksiyanın arqumenti Longint tipində, nəticə isə arqument tək olduqda True, cüt olduqda False olur.

-Pred(x) – X-in əvvəlki qiymətinin təyini.

Funksiyanın arqumenti sıra tipin ixtiyari kəmiyyəti, nəticə isə həmin tipin əvvlki qiymətidir. Məs., Pred(2)-nin nəticəsi 1-dir.

-Succ(x)-X-in sonrakı qiymətinin təyini.

Funksiyanın arqumenti sıra tipin ixtiyari kəmiyyəti, nəticə isə həmin tipin sonrakı qiymətidir. Məs., Succ(2)-nin nəticəsi 3-dir.

Pascal dilində proqramın strukturunu aşağıdakı şəkildə göstərmək olar:

{Proqram başlığı}

Program proqramın adı;

{İstifadə olunan proqram modullarının təsviri bölməsi}

Uses Istifadə olunan proqram modullarının siyahısı;

{Təsvirlər bölməsi}

Label Nişanların təsviri;

const Sabitlərin təsviri ;

Type tiplərin təsviri;

var dəyişənlərin təsviri;


Prosedur və funksiyaların təsviri;




{operatorlar bölməsi}

begin

operator 1;

operator 2;

. . . . . . . . . . . .

. . . . . . . . . ..

operator n;

end.

İstifadə edilən istənilən bölmə ya konkret élan olunmuş proqram elementlərindən, ya da təyin olunmuş əməliyyatı yerinə yetirən operatorlardan təşkil olunmuş bir və ya bir neçə cümlələrdən ibarət olur. Cümlələr bir-biri ilə nöqtəli vergüllə ayrılır. Turbo Pascalda proqram başlığı məcburi deyil, əgər istifadə olunarsa, onda o aşağıdagı sintaksis formada yazılır:

PROGRAM ad ( proqramın parametrləri);

Pascal dilinin standartında bölmələr yuxarıdakı ardıcıllıqla yerləşməlidir. Turbo Pascalın bəzi xüsusiyyətləri mövcuddur. Belə ki, proqram başlığı və istifadə olunan modulların təsviri bölməsi istisna olmaqla bölmələrin yerləşmə ardıcıllığı sərbəstdir. Bundan başqa bir neçə eyni bölmə yaratmaq olar. Proqramda istifadə olunan elementlər ya proqram mətninin əvvəlində təyin olunmalı, ya da dilin qabaqcadan təyin olunmuş elementləri olmalıdır. Turbo Pascalın bu xüsusiyyətləri olmasına baxmayaraq dilin standartında nəzərdə tutulan ardıcıllığa riayət etmək lazımdır. Yalnız principcə vacib olduqda ardıcıllığın dəyişdirilməsi məqsədə­uyğundur. Proqram gövdəsi begin sözü ilə başlayır və proqramın sonunu göstərən END sözü ilə qurtarır, sonda isə nöqtə qoyulur.

Operatorlar. Alqoritmin reallaşdırılmasında əməllərin təsviri üçün operatorlardan istifadə olunur. Operatorların sintaksisinə görə ixtiyari operatorda nişan ola bilər. Operatorları bir-birlərindən “;” simvolu ayırır. End sözündən sonra “;”simvolu qoymaq zəruri deyil. Turbo Pascalda sintaksisinə uyğun olaraq, operatorlar iki qrupa bölünür: sadə və strukturlu.

Sadə operatorlar. Öz daxilində digər operatorları saxlamayan operatorlar sadə operatorlar adlanır. Sadə operatorlara aşağıdakılar aiddir:

mənsubetmə operatoru;

prosedura müracıət;

şərtsiz keçid operatoru;

boş operator.

Mənsubetmə operatoru. Bu operatorun köməyilə dəyişən və ya funksiyaya ifadənin qiyməti mənsub edilir. Bu məqsədlə := işarəsindən istifadə edilir. Operatorun ümumi yazılış forması aşağıdakı kimidir: D:=A; Burada D – funksiya və ya dəyişənin adı, A isə ifadədir. Operator A ifadəsinin qiymətini hesablayaraq, D-yə mənimsədir.

Prosedura müraciət. Prosedura müraciət operatorunun ümumi yazılış forması aşağıdakı kimidir: prosedurun adı(faktiki parametrlərin siyahısı);

Qeyd etmək lazımdır ki, parametrsiz prosedur operatoru yalnız prosedurun adından ibarət olur. Operatorun yerinə yetirilməsi prosedur gövdəsində təsvir edilmiş əməllərin aktivləşdirilməsinə səbəb olur. Operatorda göstərilən faktiki parametrlər, prosedur başlığında təsvir olunan formal parametrlərin tipinə, sayıma və yerləşmə ardıcıllığına uyğun olmalıdır. Prosedur gövdəsinin aktivləşməsindən əvvəl isə faktiki parametrlər formal parametrlərə ötürülür.

Şərtsiz keçid operatoru Proqramlaşdırmada bəzi hallarda operatorun yerinə yetirilməsi ardıcıllığının dəyişdirilməsi lazım gəlir. Bunun üçün goto şərtsiz keçid operatoru mövcuddur ki, onun yazılışı aşağıdakı kimidir: goto nişan; Bu operatorun köməyilə idarəni prosedur və funksiyanın daxilinə və ya xaricinə ötürmək olmaz. Turbo Pascalda istifadə olunan nişanın 0÷9999 intervalında tam ədəd və adi identifikator tipi var. Bütün nişanlar Label xidməti sözü ilə başlayan nişanın təsvir bölməsində göstərilməlidir. Məs., Label 5, 6, a;

Qeyd etmək lazımdır ki, goto operatoru struktur proqramlaşdırmanın əksinədir və ondan proqramlaşdırmada istifadə edilməsi məsləhət görülmür. Bunu nəzərə alaraq, goto operatorunun tez-tez istifadə edildiyi hallar üçün Turbo Pascala Breakcontinue prosedurları daxil edilib.

Boş operator. Bu operator heç bir əməliyyatı yerinə yetirmir və şərtsiz keçid operatorundan müraciət lazım olduqda istifadə olunur.

Daxiletmə və xaricetmə operatorları

Turbo Pascalda standart daxiletmə READ, READLN və standart xaric etmə WRITE, WRITELN prosedurları vasitəsilə həyata keçirilir.

Bu prosedurların ümumi formatı aşağıdakı kimidir:

READ( fayl dəyişənin adı, dəyişənlərin siyahısı);

READLn( fayl dəyişənin adı, dəyişənlərin siyahısı);

WRITE( fayl dəyişənin adı, xaric edilən elementlərin siyahısı);

WRITELN( fayl dəyişənin adı, xaric edilən elementlərin siyahısı);

Standart daxiletmə əvvəldən təyin olunmuş, klaviatura ilə əlaqəli İnput adlı mətn faylında yerinə yetirilir. Standart xaric etmə isə əvvəldən təyin olunmuş, displey ilə əlaqəli Output adlı mətn faylında yerinə yetirilir. susmaya görə daxiletmə üçün İnput, xaricetmə üçün isə Output götürülür. Bunları nəzərə alsaq aşağıdakı proqram fraqmentləri ekvivalentdir.

READLn( input, A, B);

WRITELN(Output,’A=’,A,’B=’,B);



READLn(A, B);

WRITELN(’A=’,A,’B=’,B);

Turbo Pascalda standart daxiletmə və standart xaric etmə prosedurlarından istifadə edərkən aşağıdakıları nəzərə almaq lazımdır:

-READ, READLN prosedurları ilə yalnız tam, həqiqi, simvol, sətir tipli verilənlər oxunur;

-WRITE, WRITELN prosedurları ilə yalnız tam, həqiqi, simvol, sətir və bul tipli verilənlər yazılır.

Daxiletmədə Read prosedurundan fərqli olaraq Readln proseduru verilənlərin növbəti sətrin başlanğıcından oxunmasını təmin edir. Parametrsiz Readln –dən istifadə edildikdə verilənlərin oxunması başlanğıcından başlayır.

WRITELN prosedurunun hər bir elementi aşağıdakı kimi təsvir olunur:

Expr[:M[:D]]

burada: Expr – tam, həqiqi, simvol, sətir və bul tipindən olan xaric edilən ifadə;

M – xaricetmə sahəsinin uzunluğunu göstərən sıfırdan böyük tam tipli ədəd;

D- xaric edilənin onluq işarədəki rəqəmlərinin sayını göstərən sıfırdan böyük tam tipli ədəddir. Burada D

WRITELN proseduru mətn faylları üçün WRITE prosedurunun geniş­lənmiş variantıdır. Parametrsiz WRITELN proseduru faylın sonuna yalnız sətrin sonu işarəsinin yazır.

Mühazirə 6

Strukturlu operatorlar. Massivlər

Plan:

  1. Strukturlu operatorlar. Mürəkkəb operatorlar.

  2. Şərt operatorları

  3. Dövr operatorları

4. Massivlər
Daxilində başqa operatorlar olmaqla, onların ardıcıl yerinə yetirilməsini idarə edən operatorlar strukturlu operatorlar adlanır.

Turbo Pascalda strukturlu operatorlar mövcuddur:



  • mürəkkəb operatorlar;

  • if şərt operatoru;

  • case şərt operatoru;

  • ön şərtli WHILE dövr operatoru;

  • son şərtli repeat dövr operatoru;

  • For dövr operatoru.

Mürəkkəb operatorlar. Begin və end xidməti sözləri arasında yerləşən operatorlar ardıcıllığı bir operatorlar sayılmaqla mürəkkəb operator adlanır. Operatorun yazılış forması aşağıdakı kimidir:

Begin


operator_1;

operator_2;

....

operator_n;



end.

Məsələn, begin

y:=3*x+a; z:=ln(a*x+15); s:=argtan(sqrt(1-z*z)/z);

end.


if şərt operatoru. İf ( əgər) operatoru bəzi şərtlərin doğru və ya yalan olmasından asılı olaraq operatorların yerinə yetirilməsi ardıcıllığını dəyişir.Şərt operatorunun ümumi formatı aşağıdakı kimidir:

I IF THEN <операторлар;

və ya

II IF THEN <операторлар_1> ELSE <операторлар_2>;



Burada İf (əgər), then (onda), else ( əks halda) mənasını daşıyır.

IF операторуnun birinci yazılış formasında məntiqi ifadənin qiyməti doğru olduqda then –dən sonrakı operatorlar yerinə yetirilir, yalan olarsa, idarə if operatorundan sonrakı operatora ötürülür.

IF операторуnun ikinci yazılış formasında operatorun yerinə yetirilməsi zamanı əvvəlcə nəticəsi yalnız Bul tipi olan məntiqi ifadə hesablanır. Nəticənin qiyməti doğrudursa (true) операторлар_1, yalandırsa (false) операторlar_2 yerinə yetilir.

Bu operatorda aşağıdakı sintaksis xüsusiyyətlərə əməl olunmalıdır:



  • else xidməti sözündən əvvəl “;” qoyulmur;

  • Then və else xidməti sözlərindən sonra yalnız bir operator olmalıdır. Əgər iki və daha çox operator yazmaq lazım gələrsə, onda mürəkkəb operatordan istifadə olunur.

IF операторунун iç- içə yazılışı aşağıdakı kimidir:

IF THEN IF < məntiqi ifadə > THEN ELSE ;

CASE şərt operatoru olmasına baxmayaraq tarixən seçim və ya variant operatoru adlandırılıb, bu operator if operatorunun ümumiləşdirilmiş formasıdır. Yəni operator çevirgəcin qiymətindən asılı olaraq, bir neçə əməliyyatdan birini yerinə yetirməyə imkan verir.

Çevirgəc kimi case və of xidməti sözləri arasında yerləşən ifadədən istifadə olunur. İfadənin nəticəsi sıra tipi olmaqla 65535- i aşmamlıdır. Operatorun ümumi strukturu aşağıdakı kimidir:



CASE < ifadə> OF

:;

< sabit_ 2>:< operator _2>;

. . . . . .

< sabit n>:< operator _n>

ELSE < operator _s>

END;

İfadənin qiyməti operatorlardan hansının yerinə yetiriləcəyini təmin edir. Belə ki, ifadə sabit_1 –in siyahısındakı qiymətlərdən birini alırsa, onda operator_1 icra olunur və o biri operatorlar yerinə yetirilmir, bu proses anoloji olaraq operator_n-ə qədər davam etdirilir. Əgər ifadənin qiyməti sabit_1 –dən sabit_n -ə kimi siyahılardakı qiymətlrin heç biri ilə üst-üstə düşməzsə, operator_s yerinə yetirilir. Case operatorunda else budağı olmaya da bilər. Bu halda ifadənin qiyməti sabitlərdən heç biri ilə üst-üstə düşmürsə, case-də təsvir olunan operatorlardan heç biri yerinə yetirilmir və idarə operatorun sonu olan end xidməti sözündən sonrakı operatora ötürülür.

Təkrarlanan hesablama proseslərini proqramlaşdırarkən təkrarlanma operatorundan istifadə olunur. Üç növ təkrarlama operatoru vardır:



  1. For (parametrli dövr operatoru);

  2. Repeat ( son şərtli dövr operatoru);

  3. While (ön şərtli dövr operatoru)

Dövrlərin sayı məlum olduqda FOR operatorundan, əks halda Repeat və WHILE operatorlarından istifadə olunur.

- Parametrli dövr operatoru aşağıdakı kimi iki formada işlədilə bilər:

1. For :=
ТО < parametrin son qiyməti > ДО <оператор>;


2. For :=< parametrin son qiyməti > DOWNТО < parametrin başlanğıc qiyməti > ДО <оператор>.

Бурада- FOR üçün, TO qədər, DO icra et mənasını daşıyır. Dövrün parametrinin qiyməti həqiqi tipə aid ola bilməz.

- - dövrün gövdəsidir. - sadə (tək bir operatordan) və ya mürəkkəb operatordan (BEGIN və END arasında yerləşən operatorlar qrupundan) ibarət ola bilir.

Dövr parametrinin dəyişmə qiyməti +1 olarsa, onda TO açar sözündən, -1 olarsa DOWNTO açar sözündən istifadə edilir. Bu proses dövrün parametri son qiymət alana qədər davam edir. Qeyd etmək lazımdır ki, dövrün gövdəsində dövrün parametrinin qiymətini dəyişmək olmaz. Dövr qurtardıqdan sonra dövrün parametrinin qiyməti son qiymətə bərabər olur. Dövr sona çatmamış dövrün daxilindən idarəni kənara GOTO operatoru vasitəsilə vermək olar. Misal:

FOR I:=1 TO 50 DO

K:=I;

Burada - К=1,2,…50 qiymətlərinin alır.

FOR I:=50 DOWNTO 1 DO

K:=I;

Burada - К=50, 49, … , 1 qiymətlərinin alır.

FOR L:='A’ TO ‘E’ DO

Burada - L ardıcıl olaraq A, B, C, D, E qiymətlərini alır.

Göründüyü kimi, dövrü parametri ancaq vahid qədər artıb-azala bilər. Bu da parametrli dövr operatorunun çatışmayan cəhətidir. Bu çatışmayan cəhəti REPEAT (təkrar et) və WHILE (hələki) operatorlarının köməyilə aradan qaldırmaq mümkündür.

-Son şərtli dövr operatorundan ( REPEAT) təkrarlanmaların sayı məlum olmayan halda istifadə olunur.



Bu operator başlıqdan (REPEAT), dövrün gövdəsindən və dövrün qurtarmasını müəyyən edən şərtdən ( UNTİL) ibarətdir. Operatorun ümumi formatı aşağıdakı kimidir:

REPEAT

;

;

UNTİL<şərt>;

Burada şərt məntiqi ifadədir. Əvvəlcə REPEAt və UNTİL arasında olan operatorlar yerinə yetirilir, sonra isə dövrün qurtarması şərti yoxlanılır. Əgər məntiqi ifadənin qiyməti False olarsa, onda dövrün gövdəsinin təşkil edən operatorlar yenidən yerinə yetirilir, əgər məntiqi ifadənin qiyməti TRUE olarsa, onda dövrdən çıxma baş verir. Belə dövrlərdə dövrün gövdəsini təşkil edən operatorlar heç olmasa bir dəfə yerinə yetirilir.

- Ön şərtli dövr operatoru WHILE operatoru da REPEAT operatoruna oxşardır. Fərqi odur ki, dövrün qurtarmasını maəyyən edən şərt dövrün gövdəsindən əvvəl gəlir. Operatorun ümumi formatı aşağıdakı kimidir:

WHILE <şərt> ДО ;

Burada - <şərt> məntiqi ifadə, isə sadə və ya mürəkkəb operatorlardır.

Dövrün gövdəsi yerinə yetirilməzdən əvvəl məntiqi ifadənin qiyməti hesablanır. Əgər şərt döğru (TRUE) olarsa, onda dövrün gövdəsini təşkil edən operatorlar yerinə yetirilir və yenidən məntiqi ifadənin qiyməti hesablanır. Əks halda şərt ödənilməzsə (False) dövrdən çıxma baş verir və proqramda , WHILE –dən sonra gələn operator yerinə yetirilir. Göründüyü kimi <şərt >-in qiyməti yalan (false) olarsa, onda dövrün gövdəsini təşkil edən operatorlar bir dəfə də olsun yerinə yetirilmir.

Repeat, While, For dövrlərində iki standart break və continue prosedurlarından istifadə etmək olar. Break proseduru çıxış şərtini yerinə yetirilməsini gözləmədən dövrdən çıxmağa imkan verir. Continue proseduru isə dövrün əvvəlki itertasiyası sona çatmadan yeni iterasiyanın başlanmasına imkan verir. Prosedurların icrasını aşağıdakı misalda əyani öyrənə bilərik.

Misal: tam ədədlərdən təşkil olunmuş massivin birinci mənfi elementinin axtarışı proqramı.

program mənfi;

uses crt;

const n=4;

a:array[1..n] of real=(12,-3,6,-7);

var i,k:integer;

begin


clrscr;

for i:=1 to n do write(a[i]:7:2,' ':2); writeln;

k:=0;

for i:=1 to n do begin



if a[i]>0 then continue;begin k:=k+1;

writeln(k:1,' menfi elementi',a[i]:4:2);

break; end;end;end.

12.00 -3.00 6.00 -7.00



1 menfi element -3.00

Massiv- bircins, sabit ölçülü, nömrələrinə görə nizamlanmış elementlərdən təşkil olunmuş verilənlərin strukturudur. Massiv adi ( identifikator) və ölçüsü ilə təyin olunur. massivin ayrı-ayrı elementlərinə müraciət massivin ölçüsündən asılı olaraq bir və ya bir neçə indeksin köməyilə mümkündür. İndeks kimi sabit və dəyişən sıra tipindən istifadə etmək olar. Massivin elementləri isə həmin sadə dəyişənin ixtiyari tipi, həm də dəyişənin mürəkkəb tipi ( massiv, sətir, yazı və s.) ola bilər.

Məsələlərin həllində adətən birölçülü, ikiölçülü, üçölçülü massivlərdən istifadə olunur. Praktikada nadir hallarda daha böyük ölçülü massivlərə rast gəlinir.

Massivlər iştirak edən məsələləri proqramlaşdırmaq üçün Pascal alqoritmik dilində düzümlərdən istifadə olumur. Düzümlər bir və iki ölçülü olurlar.

Мəs: A [ I ], S[ I,J ].

Hər bir düzüm öz indeksi ilə müəyyən olunur. Düzümün konkret elementinə müraciət indeksi göstərməklə həyatakeçirilir. Massiv Array xidməti sözü vasitəsilə təsvir olunur. Massiv tipini vermək üçün aşağıdakı strukturdan istifadə olunur:

Type

=array [] of [< tipi>

Birölçülü massivin ( düzümün) ümumi yazılışı aşağıdakı kimidir:

D: ARRAY [ N..М ] of T;

-бурада D düzümün adı, N və M isə uyğun olaraq düzümün aşağıvə yuxarı indeksləridir. T isə massivin elementlərinin tipidir. Məsələn,

Yüklə 0,76 Mb.

Dostları ilə paylaş:
1   2   3   4   5   6   7   8




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©genderi.org 2024
rəhbərliyinə müraciət

    Ana səhifə