Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
paskal.pdf
Скачиваний:
89
Добавлен:
17.02.2016
Размер:
544.21 Кб
Скачать

3.4 ЖАЗБАЛАР

Типті сипаттау

Алдыңғы тарауларда тек бір типті компоненттерден тұратын жүйелі типті мәліметтердің түрлерімен таныстық. Программалауда қандай да бір объектіге қатысты әр түрлі мәліметтерді жинақтап қарастыру жиі кездеседі. Ол үшін Паскальда жүйелі типті мәліметтердің басқа түрі – аралас типті мәліметтер қолданылады.

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

Мысалы, студенттер туралы мәліметтерді (аты, фамилиясы, туған жылы, мекен-жайы т.б.) бір топқа біріктіріп, жазба түрінде қарастыруға болады.

Жазба компоненттерін өріс деп атайды. Жазбаны сипаттау Record қызметші сөзінен басталып, End қызметші сөзімен аяқталады, араларына өрістерінің идентификаторлары мен типтері келтіріледі .

Жазылуы:

Type <типтің аты> = Record

<1-өрістің идентификаторы > : <1-ші өрістің типі >; <2-өрістің идентификаторы > : <2-ші өрістің типі >;

...

End;

Var <жазбалардың атаулары> : <типтің аты>;

Мысалы:

 

Type T = Record

{реті}

N : integer;

FIO : string[20];

{аты-жөні}

GodR : string[40];

{туған жылы}

Gr : string[60];

{тобы}

End;

 

Var

 

Student, U : T;

Мұнда Student және U айнымалылары T типті төрт өрістен: N (реті), FIO (аты-жөні), GodR (туған жылы), Gr (тобы) тұратын жазбалар.

Жазбаны тұтасымен типі сәйкес келетін басқа жазбаға меншіктеуге болады, мысалы U := Student.

Жазба өрістерінің мәндеріне өту үшін жазба типті айнымалының және өрістің аттарын қоса көрсету керек.

Мысалы: Student жазбасының өрістеріне өту былайша жазылады: Student.N, Student.FIO, Student. GodR, Student.T.

92

Бір студент туралы мәліметтерді экранға шығаратын программа үзіндісін көрсетейік:

...

Student, N := 1;

Student. FIO := ‘Оспанов. Р.А’; Student. GodR:= ’05.11.72’; Student. Gr:= 21;

Write(Student.N:3, Student. FIO:15, Student. GodR:9, Student.

Gr:3);

...

Бул мысалда өріc санына сәйкәс Student идентификаторын бірнеше рет жазуға мәжбүр болдық. Осы ыңғайсыздықтан құтылу үшін Паскальда арнайы With операторы колданылады.

Жазылуы:

With <жазба тіпті айнымалы> Do <оператор>;

Жазба тіпті айнымалы With операторында бір рет көрсетіледі де осы операторға кіретін басқа операторларда қайталанбайды, тек қажетінше өрістері ғана көрсетіледі. Жоғарыдағы мысалды With операторының көмегімен жазайық.

With Student do

Begin N := 1;

FIO := ‘Оспанов. Р.А’; GodR:= ’05.11.72’; Gr:= 21;

Write(N:3, FIO:15, GodR:9, Gr:3);

End;

Паскальда жазбалар массивтердің элементтері бола алады. 30 студенттің аты-жөнінен (FIO) тұратын массивтің сипатталуы:

Type T = Record N : integer;

FlO : string[20]; End;

Var Тizm : Array[l..30] of T;

1-ші есеп: Студенттер туралы мәліметтерді массив етіп, компьютер жадана жазып, кесте түрінде экранға шығаратын программа жазайық.

Program MStud1;

Type T = Record N: integer;

FIO : string [20]; GodR : string [10];

93

Gr : integer;

 

End;

 

Var n, i :integer;

{Tab – жазбалар массивы}

Tab : array[l..40] of T;

Begin

Wrlte (‘Число студентов = ’); Readln (N); For i := 1 to n do

With Tab[i] do

Begin

Write (‘№ п.п’); Readln(N); Write (‘Ф И О’); Readln(FIO);

Write (‘Год рождения’); Readln(GodR); Write (‘Группа’); Readln(Gr);

End;

for i:= 1 to n do

Begin

With Tab[i] do

Writeln (‘|’, N:4, ‘|’, FIO:15, ‘|’, GogR:10, ‘|’, Gr:4, ‘|’, );

End; Readln

End.

Сатылы жазбалар

Паскальда жазбалар сатылап та орналаса алады, яғни жазбаның кейбір өрістері жазба және олардың өрістерінің қайбірі тағы да жазба т.с.с. болуы мүмкін. Айталық, жоғарыда келтірілген Student жазбасының FIO өрісі үш өрістен (фамилиясы (F), аты (І), әкесінің аты (О), T өрісі екі өрістен мамандыгы (S), тобы (Gr)) тұратын жазбалар болсын, Онда Student жазбасын былайша сипатталады:

Var Student: Record

N:integer; FIO: Record

F:string[20];

I:string[20];

O:string[20];

End;

GodR: string[10];

T: Record

S: string[20];

Gr: integer[3];

End

End;

94

Student жазбасын схема түрінде келтірейік:

 

 

 

 

 

 

 

Студент (Student)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

№ п.п (N)

 

Ф И О (FIO)

 

 

Год рожд. (GodR)

 

Группа (T)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Имя (I)

Фамилия (F)

Отчество (O) Специальность(S)

 

Группа (Gr)

Ескерту: Паскаль жүйесі қазақ шрифтін қолдамайтындықтан, өріс аттары орысша берілді.

Жазбалардың кейбір өрістері массивтер де болуы мүмкін. Мысалы, студенттердің сессияда алған бағалары туралы мәліміттер үш бөліктен тұрсын: аты-жөні (FIO) – String [20]; бағалары –төрт элементтен тұратын массив O – array[1..4]; орта бағасы SO – Real типті.

Осы мәліметтер жүйесін схема түрінде көрсетейік:

Студент (Student)

№ п.п (N) Ф И О (FIO) Оценки (O) Группа (T)

Оценка1(O(1)) Оценка2(O(2)) Оценка3(O(3)) Оценка4(O(4))

Средняя оц. (SO)

Жүйеге сәйкес жазба (Sesst) төмендегідей сиппаталады:

Var

Sesst Record N integer;` FIO: string[20];

O: array[1..4] of integer; SO: real;

2-ші есеп: Бір топ студенттердің сессиядағы бағаларын компьютерге жазып, кесте түрінде экранға шығаратын программа жазалық.

Program Sess;

Type Sesst = Record

N:integer FIO: string[20];

O:array[1..4] of integer; SO: real;

95

End;

 

Vаг n, i,j : integer;

{Tab – жазбалар массивы}

Tab : array[l..30] of Sesst;

Begin

 

Wrlte (‘Сколько студентов’); Readln (N);

For i:=1 to n do With Tab[i] do

Begin

SO := 0;

Write (‘Номер ’); Readln(N); Write (‘ФИО ’ ); Readln(FIO); For j := 1 to 4 do

Begin

Write (‘оценка предмета ’, j); Readln (O[j]);

SO:= SO + O[j];

End; SO:= SO/4;

End; for i:= to n do

With Tab[i] do

Begin

Write (‘|’, N:4, ‘|’, FIO:20, ‘|’ ); For j:= 1 to 4 do Write(O[j]:2);

Writeln (‘|’, SO:4,’ | ’);

End; Readln

End.

Бақылау сұрақтары

1.Жазбаны құрама типті деректер деудің себебі қандай?

2.Жазбаның массивтен негізгі өзгешеліктері қандай?

3.Жазбаның өрісі деген не?

4.Өрістердің мәндерін қалай падаланамыз?

5.Өрістердің идентификаторы қай аралықта қайталанбау

керек?

6.With операторы не үшін қажет?

Есептер 1. Келесі жазбалардың схемасын сызып, Паскальда анықтаңыз.

Әр жазбада неше өріс бар екендігін табыңыз:

96

1)кішігірім кітапханада әрқайсысының саны 10-нан аспайтын әдеби және техникалық кітаптар бар. Каталогта әр кітаптың аты, авторы, индексі, шығарылған уақыты және беттерінің саны берілген;

2)қандай да бір клубтың 30 мүшесі бар, әркайсысының атыжұні, мүшелік реті және саны бестен аспайтын, айналысатын қызығу-

шылықтары атымен жане оған деген ынта көрсеткішімен берілген.

2. Баспаға жазылушылар туралы мәлімет төмендегі Gazh жазбасында келтірілген, мұнда: FIO – аты-жөні, Add – мекен-жайы, Index – индексі, Naz: – жазылымның аты, dGazh – жазылу мерзімі. Осы жазбаның схемасын сызыңыз.

Type F = Record F : string [10] I : string [10] O : string [10] end; . ,

Data = Record d1: string[8] d2 : string[8] . end;

Var Gazh = Record

FIO : F;

Add : string[20]; Index : string[8]; Naz : string [30]; dGazh : data;

End.

1)төмендегі мәліметтерді Gazh жазбасына енгізетін программа үзіндісін жазыңыз:

480011, Павлодар улица Абая 81/45 025395, Жалын, 01.01.05 – 30.06.05

2)а пунктіндегі анықталған типтердің бәрін Type тарауында жариялау арқылы анықтаңыз. Жаңа тәсіл мәліметтерді оқуға әсер ете ме?

3)программаны 50-ден аспайтын жазылушылардың мәліметтерін өңдей алатындай етіп жазбаны өзгертіңіз.

3. Келесі есептерде мәліметтерді ыңғайлы түрде дайындау

тәсілдерін (массив, жазба, т.б.) ұсыныңыз:

1)саны белгілі бүтін сандардың арифметикалық ортасын табу

керек;

2)50 заттың тізімі берілген, осы тізімде қайталанған заттар бар

ма?

97

3)фирма кызметкерлеріне жалақы беру тізімін жасау керек. Тізімде келесі мәліметтер көрсетілсін: аты-жөні, мекен-жайы, жылдық кіpic, балалар саны;

4)бес емтихан нәтижесі бойынша студенттер тізімін қүру

керек;

5)бір студенттің орта бағасын табу керек;

6)компьютер жадына бір студенттің аты-жөнін, бағаларын және орта бағасын енгізу керек;

7)жоғарыдағыдай 50 студенттің мәліметтерін еңгізу керек;

4.Жоғарыдағы 2-ші жаттығуда көрсетілген жазбалар массивін пайдаланып, төмендегі тапсырмаларды орындайтын программа құрыңыз:

1) жазушылар туралы мәліметтерді оқу және экранға шығару;

2) почталық индексі бойынша жазылушыларды анықтау;

3) жазылу мерзімі берілген уақытта аяқталатын жазушыларды

табу;

5.Әр жолаушының жүгіндегі заттардың саны жалпы салмағы белгілі. Жолаушылардың жүктері туралы мәліметтерді массивке жазып, сол массивтің көмегімен төмендегі есептерді шығарыңыз:

1)Әр затының opта салмағы мен заттардың жалпы орта

салмағы арасындығы айырмашылық 0,3 килограммнан аспайтын жүкті табу керек;

2)жүктері екі заттан артық жолаушыларды және заттардың саны, заттардың жалпы орта санынан артық болатын жолаушыларды табыңыз;

3)заттар саны бірдей және жүктерінің салмақтарының айырымы 0,5 кг. аспайтын жолаушыларды табыңыз;

4)жүгінің заттар саны мен салмағы басқа жолаушылардың жүктерінің заттар саны мен салмағынан артық болатын жолаушыны анықтаңыз;

5)салмағы 30 кг. аспайтын бір заты бар жолаушыны анықтаңыз;

6)заттар саны ең көп жолаушылардың ішінен жүгінің салмағы ең аз болатын жолаушыны анықтаңыз;

6. Экспортқа жіберілетін заттардың аттары, қай елге және қанша дана жіберілетіні туралы мәліметтерді массивке жазыңыз. Заттардың қай елдерге жіберілгендігін және барлығы қанша екендігін табу керек.

7. Коэффициенттері комплекс сандар болатын квадраттық теңдеудің түбірлерін табатын программа құрыңыз.

98

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]