Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритмдеу жане багдарламалау негиздери 4 г.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
2.73 Mб
Скачать

6 Дәріс тақырыбы: Берілгендердің фундаментальді типі. Массив, жазба және жиынның қойылымы.

Паскаль тілінде типтер қарапайым және күрделі болып бөлінеді.

Қарапайым типке – стандартты, саналатын, шектейтін типтер жатады. Күрделі типке – массивтер, жиындар, жазулар жолдар және файлдар жатады. Күрделі типтің элементтері қарапайым немесе күрделі типтер болуы мүмкін. Күрделі типті еңгізу программаны күшейтеді және күрделі есептерді шешуге мүмкіндік береді.

Тұрмыста тізбектелген сандарды, кестелерді, фамилия тізімдерін көп пайдаланамыз, олар бір өлшемді(жатық немесе тік жол) екі өлшемді(матрица) массив болуы немесе жиын болуы мүмкін.

Паскаль тілінде жеке айнымалыларды ғана өңдеп қоймай, айнымалылардың жиынын(тобын) даөңдеуге болады.

Массив дегеніміз бір типтегі берілгендер жиыны. Басқаша айтқанда, массив – бір атауға біріктірілген айнымалылардың реттелген тізбегі. Айнымалылардың – массив элементерінің типтері бірдей болады.массив бір ғана атпен белгіленеді. Мысалы, нақты сандардан сандардан құралған тізбекті R атаулы массив деуге болады. Мысалы:

1.6, 14.9, -5.0, 8.5, 0.46 –ны бір өлшемді массив деп, оған а деп атау беруге болады. Массивтің әр элементі массивтің атымен белгіленеді де, оның индексі қойылады. Массив элементтері индексі бойынша реттеліпжазылады. Мысалы, А1, А2, ... , Аn немесе жалпы түрде Ai,i=1,2,…,n. Паскаль тілінде массив элементтерінің индексі алгоритімдік тілдегі тәрізді тік жақшаға алынып жазылады, мысалы, А[i]. Жоғарыдағы массивте А[1]=1.6, A[2]=14.9 және т.с.с мәндер қабылданады.

Сөйтіп паскаль тіліндегі массив ұйымы алгритімдік тілдегі кесте ұйымына сәйкес келеді. Алгоритімдік тілдегі ТИП АТАУ өлшем (мысалы, нақ таб A[1:N]) орнына Паскаль тілінде атау : массив [индекстердің алғашқы...соңғы мәні] OF элемент типі – түрінде жазылады.

Егер программада массив пайдаланылатын болса, онда ол айнымалы (VAR) бөлігінде немесе тип (TYPE) бөлігінде бейнеленуі қажет.

Массив айнымалы бөлігінде былай бейнеленеді:

VAR массив аты: ARRAY [t1] OF t2;

Мұндағы ARRAY (массив), OF (одан) – қызмет сөздері, t1-REAL, INTEGER базалық типінен өзге кез келген стандартты тип. Индекстің типі ретінде шектелген, саналатын, логикалық және литерлік типтер пайдаланылады.

Мысалы,

VAR lit=array[char] of real;

org=array[5..15] of char;

bol=array[boolean] of integer;

t2-құраушылар типі, Паскаль тілінде пайдалануға болатын массив элементтерінің типі. Мұны пайдалансақ, жоғарыдағы мысалдағы массивті айнымалы бөлігінде былай бейнелеуге болады:

VAR a:array[1..5] of real

Мұндағы A – элементтері REAL типтегі массив аты, ал индекс 1-ден 5-ке дейін өзгереді.

Индекс типі стандартты, бүтін немесе нақты бола алмайды. Сондықтан бейнелеуді былай жазуға болмайды:

VAR a:array[5] of real;

немесе

VAR a:array[integer] of real;

Массивтерді дұрыс жазуға мысалдар келтірейік:

VAR mas:array[1..n] of real;

жыл: array[қаңтар..желтоқсан] of integer;

L: array[жол] of boolean;

M1: array[char] of шеңбер;

Егер бірнеше массив бірдей базалық, және индекстік типте болса, онда оларды бейнелегенде бір массив ретінде үтір арқылы бөліп жазуға болады. Мысалы:

VAR a, b, c :array[1..10] of real;

Мұнда әрбір А, В, С – массивтері, элемент – типтері нақты болатын 10 элементтен тұрады.

Программада «индекс» және «индекстің типі» ұғымдарын шатастыруға болмайды.

Индекс типі массивті бейнелегенде пайдаланылса, индекс массив элементтерін белгілеу үшін пайдаланылады. Индексті бейнелегенде қандай тип берілсе, индекс сол типте ғана болуы қажет.

Индекс өрнек, айнымалы немесе тұрақты болып берілуі мүмкін.

Сондықтан да көп жағдайларда массивтерді индексті айнымалылар деп те атайды. Ал индекссіз айнымалыларды массивтерден ажырату үшін қарапайым айнымалылар дейді. Базалық типтегі айнымалыларға қандай амалдар қолданылса, массив элементтеріне де сондай амалдарды қолдануға болады. Мысалы, программаның операторлық бөлігінде массив элементтеріне мынадай амалдар:

A[3]:=C[4]+5;

S:=S+X[K];

P:=X[3*i+1];

және т.с.с. қолданылады.

Егер массив атауында бір ғана индекс болса, онда ол массивті бір өлшемді, ал екі индекс болса – екі өлшемді және т.с.с. n индекс болса, n өлшемді массив дейді. Бір өлшемді массив вектор элементтері, ал екі өлшемді массив матрица деп аталады.

Массив элементтерін енгізу немесе шығару бөліктерін программа үзінділері арқылы көрсетейік:

А) енгізу:

For i=1 to n do

read (A[i]);

………………….

Ә)шығару:

For i=1 to n do

write(A[i],’ ‘)

………………….

Массив элементтерін кездейсоқ сандармен де енгізуге болады. Мысалы, массив өлшемі алдын ала енгізіледі де, 100-ге дейінгі сандардан кездейсоқ түрде массив элементтері енгізіледі:

Randomize;

For I:=1 to n do

C[i]:=random(100);

Жиындар

Алгебрада жиынның мағынасы қандай болса , Паскаль тіліндегі жиының да мағынасы солай беріледі. Бұл ретелмеген бір-бірінен ерекшелігі бар бір типті элементтер жиынтығы. Жиын элементерінің саны 255-тен артпау қажет. Жиындағы әрбір объект жиын элементі деп аталады. Жиын элементері нақтыдан басқа скалярлық типтердің бірінде жатуы тиіс. Бұл тип жиынның базалық типі деп аталады. Базалық тип аралықпен беріледі.Жиын типтерінің мәндерінің облысы базалық тип элементтерінен құрылған барлық ішкі жиындар жиынтығы болып табылады. Паскаль тілінде жиын элементтерінің мәндері квадрат жақшамен көрсетеді: [1,2,3,4],[‘a’, ‘b’, ‘c’], [‘a’,..’z’]. Жиынның элементтері болмаса, ол бос жиын деп аталады да, квадрат жақшамен «[]» белгіленеді. Жиындық типтерді бейнелеу ушін Set және Of қызметші сөздерді пайдалынады. Жиындық типтер типтерді бейнелеу бөлігінде былай анықталады.

Туре <атау> = set of < элементтер типі>

Мысалы,

Туре К=set of byte;

Var a:K

Жиындық типтер мен сәйкес айнымалдарды біріктіруге болады.

Var Code: set of 0..7;

Digits :set of ‘0’..’9’;

Сондай –ақ жиындық типті айнымалы ретінде бейнелеп, оның алғашқы мәнін тұрақтылар жиыны ретінде бейнелеу бөлігінде беруге болады.

Type up=set of ‘A’..’Z’;

Low=set of ‘A’..’Z’

Const upcase: up=[‘A’..’Z’];

Vocals: Low=[‘a’, ‘e’, ‘i’, ‘o’, ‘y’, ‘и’]

Delimiter: set of char=[‘,’, ‘/’, ‘:’, ‘..’, ‘?’];

Жиынның бір элементінің жадыдан алатын көлемі 1 битті құрайды. Жиын типті айнымалының жадыдан алатын көлемі:

Жады көлемі =(Max div 8)+(Min div 8)+1

Формуласымен есептеледі. Мұндағы Мах және Min базалық типтің төменгі және жоғарғы шекаралары.

Жиындарға қолданылатын амалдар

Жиындық типтердің берілгендері үшін қиылыстыру, біріктіру, айырымдық және іп амалдары анықталған. Сондай-ақ, “<”, “>”. “<=”, “>=”, “=” және “<>” қатынас белгілері пайдаланылады.

“=” қатынас белгісі. Егер А және В жиындары бірдей элементтерден тұратын болса, онда бұл жиындар тең болып есептеледі. Салыстырылатын жиындардағы элементтердің орналасу ретінің теңдік шартына әсері болмайды.

А жиынының мәні В жиынының мәні Өрнек Нәтиже

[1, 2, 3, 4] [1, 2, 3, 4] A=B True

[‘a’, ‘b’, ‘c’] [‘c’, ‘a’] A=B False

[‘a’..’z’] [‘z’..’a’] A=B True

Тең емес қатынас (< >). А және В жиындарының кем дегенде бір элементі өзгеше болатын болса, онда олар тең емес болып есептеледі.

А жиынының мәні В жиынының мәні Өрнек Нәтиже

[1, 2, 3] [3, 1, 2, 4] A<>B True

[‘a’..’z’ ] [‘b’, ‘z’] A<>B True

[‘c’..’t’] [‘t’..’c’] A<>B False

Үлкен немесе тең қатынас белгісі (>=). Егер В жиынының барлық элементтері А жиынының құрамына кіретін болса, A>=B қатынасының нәтижесі ақиқат болады, ал кері жағдайда жалған болады.

А жиынының мәні В жиынының мәні Өрнек Нәтиже

[1, 2, 3, 4] [3, 2, 4] A>=B True

[‘a’..’z’ ] [‘b’, ‘t’] A>=B True

[‘c’, ‘x’, ’t’] [‘t’..’c’] A>=B True

Кіші немесе тең (<=) қатынас белгісі. Алдыңғы операцияда пайдаланылғанындай, егер А жиынының барлық элементтері В жиынының құрамына кіретін болса, онда A<=B өрнегінің нәтижесі ақиқат болады, кері жағдайда жалған болады.

А жиынының мәні В жиынының мәні Өрнек Нәтиже

[1, 2, 3] [2, 3, 4] A<=B True

[‘d’..’h’ ] [‘b’, ‘t’] A<=B True

[‘c’, ‘x’, ’t’] [‘t’..’c’] A<=B True

In операциясы. Бұл операция қайндай да бір мәннің көрсетілген жиында жататындығын тексеру үшін пайдаланылады. Әдетте шартты операторда пайдаланылады.

А жиынының мәні Өрнек Нәтиже

[1, 2, 3, 4] if A in [2, 3, 4] then True

[‘a’..’z’ ] if A in [‘a’..’n’] then False

[‘c’, ‘x’, ’t’] if A in [x0, x1, x2, x3] True

In операциясы бірқатар басқа да амалдарды алмастыра отырып, күрделі шартты тексерулерді тиімді, көрнекі сипаттауға мүмкіндік береді.

Мысалы, if (a=1) or (a=2) or (a=3) or (a=4) or (a=5) then … өрнегін өте қысқа, әрі көрнекі түрде былай сипаттауға болады: if A in [1..6] then…

Жиындардың бірігуі (+). Екі жиынның бірігуі осы екі жиынның элементтерінен тұратын үшінші жиын болып табылады.

А жиынның мәні В жиынның мәні Өрнек Нәтиже

[1,2,3] [1,4,5] A+B [1,2,3,4,5]

[‘a’..’z’] [‘e’..’z’] A+B [‘a’..’z’]

[] [] A+B []

Жиындардың қиылысуы. Екі жиынның қиылысуы бір мезгілде екі жиынға да кіретін ортақ элементтерден тұратын үшінші жиын болып табылады.

А жиынның мәні В жиынның мәні Өрнек Нәтиже

[1,2,3,4] [3,4,1] A-B [2]

[‘a’..’z’] [‘d’..’z’] A-B [‘a’..’c’]

[x1,x2,x3,x4] [x4,x1] A-B [x3,x4]

Жазбалар

Жазбалар күрделі объектілерді бейнелеуде қолданылатын, икемді де, қолайлы мәліметтер құрылымы. Олар әртүрлі қасиеттерімен сипатталады, әртүрлі ақпараттық жүйелерді құруда қолданылады. Жазба-бұл әртүрлі типті тіркелген сандар шамасынан тұратын тізбек, ол өріс немесе жазудың компоненті деп аталады. Жазба массив тәрізді бірқатар жеке компоненттерден құралады, бірақ жазба компоненті әртүрлі типті мәліметтер болуы мүмкін. Мысалы, адрестік мәліметтер (индек, қала, көше, үй нөмірі, пәтер нөмірі). Мұны жазба түрінде былай сипаттауға болады:

Type adress=record

Index: string [6];

City: String [20];

Street: string [20];

House, flat: integer;

End;

Бұл мысалдан жазбаны былай анықтауға болады:

Type <жазба атауы>=record

1-өріс атауы: тип;

2-өріс атауы: тип;

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

n-өріс атауы: тип;

end;

Массивтерді бейнелегендегідей, жазбалар типі мен сәйкес айнымалыларды біріктіруге болады. Мысалы екі студент туралы мәліметті былай бейнелейміз:

Var stud1,stud2:record

Fio:string [20];

Fac: string [20];

Group:string [3];

End;

Жазба түріндегі айнымалының алғашқы мәнін тұрақты ретінде анықтауға болады:

Const aтау: тип атау=тұрақты мәні;

Тұрақты мән дегеніміз-өріс атауы мәні дөңгелек жақшаға алынған тізім элементтері. Тізім элементтері нүктелі үтірмен ажыратылып жазылады. Мысалы, координаттар жүйесінің бас нүктесін анықтайтын жазба былай сипатталады:

Type point=record

x,y,z:integer;

end;

Const or: point=(x:0;y:0;z:0);

Жазба компоненттеріне оралу өріс атауын нүкте арқылы көрсетудің көмегімен жүзеге асырылады. Мысалы, Х айнымалысының типі адрес болса, онда Var директивасы былай бейнеленеді:

Var х: adress;

Болса, онда төмендегідей меншіктеулерді жазуға болады:

х. House: =67; х. Street: =’Ғ.Құрманғалиев’; х. City: =’Атырау’; х. flat: =135; х. Index: =’000611’.

Көпшілік жағдайларда, амалдарды орындауда тіркелген жазбаларды өрісімен шығару талап етілсе, онда белгілеуді қысқарту үшін біріктіру операторын with пайдалануға болады. Оның құрылымы мынадай:

With <жазба атауы> do оператор; Мұндай жағдайда do қызметші сөзінен кейін жазылған операторда, көрсетілген жазудағы өріс атауы жазудың атауысыз және нүктесіз бейнеленеді. Меншіктеу операторында тек өріс атауын ғана емес, сондай-ақ жазба атауын да пайдалануға болады: өрістің типі жазба болуы мүмкін.