Alqoritm, xassələri və təsvir üsulları



Yüklə 2,19 Mb.
səhifə45/125
tarix07.01.2024
ölçüsü2,19 Mb.
#205155
növüYazı
1   ...   41   42   43   44   45   46   47   48   ...   125
aminlazım

Massivlər
Object Pascal dilində statik və dinamik massivlər mövcuddur.
Statik massivlərin ölçüləri elanetmə bölməsində əvvəlcədən müəyyənləşdirilir. Proqramm yerinə yetirildiyi müddətdə onların ölçüləri dəyişmir. Belə massivlərin ümumi təsvir forması aşağıdakı kimidir:
Array [indekslər] of elementlərin tipi;
Burada, indekslər interval tip ilə göstərilir.
Misal.
Const max= 1000;
Type a= array[1..5,1..8] of integer; Var x, y: a; b: array[1. . 50] of real; c: array [l..40] of char; d: array['a'..'z'] of integer; z: array [l..max] of boolean;
x və y dəyişənləri 40 elementdən - 5 sətir və 8 sütundan ibarət ikiölçü massiv olur; massivin elementləri integer - tam tiplidir. b dəyişəni 59 həqiqi tipli elementdən, c dəyişəni 40 simvol tipli elementdən, d dəyişəni 26 tam ədədlərdən, z dəyişəni isə 1000 məntiqi tipli elementlərdən ibarət massivlər kimi təyin olunur.
Dinamik massivlər isə elə massivlərdir ki, elanetmə zamanı yalnız onların elementlərinin tipi göstərilir, ölçüləri isə proqram yerinə yetirildikdə müəyyən edilir və bu ölçülər proqram boyu dəyişə bilər. Bu massivlərin ümumi təsvir forması belədir:
Array of elementlərin tipi;
Dinamik massivlərin elementlərinin nömrəsi həmişə sıfırdan başlayır. Proqramın icrası zamanı dinamik massivə ölçülərin verilməsi xüsusi prosedurla yerinə yetirilir. Bu prosedurun ümumi forması belədir:
SetLength (var s; NewLength : integer);
Burada, s - dinamik massivin adı, NewLength isə massivin indeksinə veriləcək qiymətdir.
Misal.
Var m: array of real; i: integer; begin
....
SetLength (m,100);
For i:=0 to 99 m [n]:= n;
SetLength (m, 200);
.... end.
m dinamik massivinin elementləri həqiqi tiplidir. Əvvəlcə onun elementlərinin sayının 100 olduğu müəyyənləşdirilir. Massivin hər bir elementinə onun sıra nömrəsinin qiyməti verilir. Massivin elementinin nömrəsi sıfırdan başladığı üçün onun sonuncu elementinin nömrəsi 99 olur. Dövrdən sonra massivin ölçüsünə 200 qiyməti verilir.
Çoxölçülü dinamik massivləri (məsələn, ikiölçülü massivi) təsvir etmək üçün aşağıdakı konstruksiyadan istifadə olunur:
Array of Array of elementlərin tipi,
Bu halda, çoxölçülü (xüsusi halda ikiölçülü) dinamik massivlərə yeni ölçülər təyin etmək üçün tətbiq olunan prosedur belə yazılır:
SetLength (var s; NewLengthl, NewLength2 : integer);
Burada, NewLengthlNewLength2 - massivin uyğun olaraq 1-ci və 2-ci indekslərinə veriləcək yeni qiymətlərdir.
Object Pascal dilində çoxluqlar və yazılar Turbo Pascal dilində olduğu kimidir. Fayllar da Turbo Pascal dilində olduğu kimidir, lakin yalnız mətn tipli ( faylların təsvirində Text sözü əvəzinə TextFile və ya System.Text yazmaq lazımdır.
Göstəricilər

Adi dəyişən proqramda təsvir olunduqdan dərhal sonra, əsas yaddaşda onun üçün yer ayrılır və proqramın icrası zamanı daimi olaraq orada saxlanır. Bu cür dəyişənlər statik dəyişənlər adlanır. Statik dəyişənlər kompüterin yaddaşından səmərəli istifadə etməyə imkan vermir. Göstəricilər proqramın icrası zamanı dəyişənləri yaratmağa imkan verir, başqa sözlə, belə dəyişənlər dinamik olur. Proqramın icrası zamanı, zərurət yaranarsa, həmin dəyişənin tutduğu yaddaşı boşaldıb, başqa dəyişən üçün istifadə etmək olar.
Göstəricilərin vacibliyi haqqında biliklərimizi bir qədər də artıraq.
Bu prosedur necə çağrılır? Bilirik ki, bu parametrlər stekə qəbul olunur, yəni əvvəlcə birinci ədəd, sonra isə ikinci ədəd stekə qəbul olunur. Prosedur icra olunmazdan öncə bu parametrlər əks istiqamətdə stekdən çıxarılır. Stekə qəbul olunmuş birinci ədəd 2 bayt yer tutacaq, ikinci parametr - sətir isə, məsələn, əgər 10 simvoldan ibarət olarsa, 10 bayt, üstəgəl sətrin sonunu və ya onun ölçüsünü göstərmək üçün 1 bayt yer tutacaq.
Bütövlükdə prosedur üçün stekdə ən azı 12 bayt yaddaş tələb olunacaq. İndi isə təsəvvür edək ki, prosedura ötürüləcək dəyişən 500 elementdən ibarət massivdir, sətir isə 1000 simvoldan ibarətdir. Bu zaman stekdə kilobaytlarla yaddaş tələb olunacaq. Kompüterlərin hazırkı yaddaş həcmi ilə müqayisədə bu çox kiçik yaddaşdır - və bu böyük faciə deyildir. Lakin, proqramçılar unudurlar ki, bu qədər həcmə malik informasiya əvvəlcə stekə köçürülür, sonra isə həmin həcmdə yaddaşdan çıxarılır. Belə köçürmə isə kifayət qədər vaxt tələb edir və proqram mənasız bir işə boş-boşuna nə qədər vaxt sərf edəcək. Bəs, əgər bizə prosedura, ölçüsü 3-4 meqabayt olan təsvir ötürmək lazım gələrsə, onda necə? Bu təsvirləri də stekə köçürək? Bir neçə yüksək keyfiyyətli təsvirlər olarsa, onda stek tam dolacaqdır. Bu vəziyyətdən çox asan çıxış yolu var: stekə verilənləri, təsvirləri göndərmək yox, onlann yerləşdiyi yaddaş oblastına göstərici vermək lazımdır. İstənilən göstərici isə cəmi 4 bayt yer tutur.
Beləliklə, göstəricilərdən istifadə etməklə, proqramçı kompüterin yaddaşından daha səmərəli istifadə etmək imkanı qazanır, lakin bu proqramm mürəkkəbləşməsi hesabına başa gəlir.
Object Pascal dilində tipləşdirilmiş və tipləşdirilməmiş göstəricilər mövcuddur.
Tipləşdirilmiş göstərici təsvir və ya elanetmə zamanı müəyyənləşdirilmiş tipli verilənlərə istinad edə bilər. Bu zaman ünvanlaşdırılan verilənlərin tipləri qarşısında A işarəsi qoyulur. Tipləşdirilmiş göstəricilərin ümumi təsvir forması belədir:
Type göstəricinin tipi = A ünvanlaşdırılan verilənin tipi;
Tipləşdirilməmiş göstərici Pointer tipli olur və istənilən tip verilənlərə istinad oluna bilər.
Misal.
Var p: ^ integer;
n, k : integer;

p: = @n;
n: = 100; k: = p^ +10;
Burada, n dəyişəninə p göstəricisi ilə istinad edilir və nəticədə k dəyişəninin qiyməti 110 olur.
Misal
Var
s: pointer; sl: string;
begin s:= @ sl;
sl:= 'Mən Delphi öyrənirəm';
editl. Text:= string(s^); end;
Bu misalın birinci sətrində s göstəricisinə sl sətrinin göstəricisi mənimsədilmiş, sonra isə həmin sətrin məzmunu dəyişdirilmişdir. Sonuncu sətirdə s ünvanında yerləşən mətn Edit mətn redaktoruna çıxarılmışdır (bu redaktorla növbəti fəsillərdə tanış olacağıq).
Bunun üçün aşkar şəkildə göstərilməlidir ki, s ünvanında məhz string (s ^) sətri yerləşir.
Variant tiplər

Verilənlərin variant tipləri o zaman istifadə olunur ki, onların tipləri ya əvvəlcədən məlum olmur və ya proqramın icrası zamanı dəyişir.
Variant tipi təsvir etmək üçün Variant operatorundan istifadə edilir. Dəyişən bu tip elan edildikdən sonra, ona tamədədli (Int64 tipindən başqa), həqiqi, simvol, sətir və məntiqi tiplər mənimsətmək olar.
Misal.
Var al,a2: Variant; m: integer; n: string; k: real;
begin
m:=15; a1:=m; n :=’BAKI’; a2:=n; k:=1.07; a1:=k; a2:=True;

end
Göründüyü kimi, al dəyişəninə əvvəlcə tamədədli (15), sonra isə həqiqi (1.07) və a2 dəyişəninə isə əvvəlcə sətir tipli ('BAKI'), sonra isə məntiqi (True) qiymətlər mənimsədilmişdir.
Misal.

Yüklə 2,19 Mb.

Dostları ilə paylaş:
1   ...   41   42   43   44   45   46   47   48   ...   125




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

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin