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

3.3. ЖИЫНДАР

Типті сипаттау Жиын – белгілі бір қасиеттерге сай іріктеліп, біртүтас

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

Жиындағы әр мәлімет жиынның элементтері деп аталады. Жиын элементтерінің типі (базалық тип) нақты типтен басқа, жай типтердің біріне жатуы тиіс.

Жиын элементтерінің типі жиынның базалық типі деп қарастырылады. Базалық тип аралықпен немесе дараланып беріледі.

Паскаль тілінде өрнектерде жиынның элементтері тік жақшаларға алынып жазылады: [‘a’, ‘b’, ‘c’], [1, 2, 3, 4], [‘a’..’z’].

Егер жиында еш бір элемент болмаса, ондай жиын бос жиын болада да, былай [] белгіленеді.

Жиынның элементтерінің саны оның қуаттылығы деп аталады.

Жиынның

типін сипаттау

үшін set, of қызметші сөздері

қолданылады.

 

 

Жазылыуы:

 

 

Type <типтің есімі> = set of

<элемент1, ... , элемент n >;

Var <идентификатор, ...> :< типтің есімі>;

Немесе

 

 

Var < идентификатор, ...> : set of < элемент1, ...>;

М ы с а л.

 

 

Type

Simply = set of

‘a’..’h’;

 

Var

Number = set of

1..31;

Pr : Simply;

 

 

 

 

N : Number;

 

Letter:set of char; {типтер тарауында жарияланбай

сипатталған}

Мұнда: Pr айнымалысы ‘a’ –дан ’h’ дейін латын

алфавитінің символдарын;

 

N айнымалысы 1..31 диапозон аралығынан кез келген мәнді; Letter кез келген символды қабылдайды.

Оларға сипаттауларына көрсетілген жиындарға кірмейтін элементтерден тұратын жиынды меншіктеу қателік тудырады. Жиынның элементтер саны 255–тен аспауы керек. Жиынның бір элементі бір байт орын алады.

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

Паскальда жиындарға нәтижесі True немесе False болатын қатынас ‘=’, ‘<>’, ‘>=’, ‘<=’ және ‘ішінде’ (in) амалдары қолданылады.

86

Сонымен қатар жиындарға біріктіру (+), қию (*), айыру (-) амалдары жүреді.

‘Теңдік’ (=) амалы

Егер екі А және В жиындарының элементтері бірдей болса, онда ол жиындар тең деп есептеледі. Элементтердің орналасу реті әр тұрлі

болуы мүмкін.

 

 

 

Мысалы:

 

 

 

А-ның мәні

В-ның мәні

Өрнек

Нәтиже

[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]

[1,2,3,4]

A <> B

True

[‘a’..’z’]

[‘b’, ‘z’]

A <> B

True

[‘c’..’t’]

[‘t’..’c’]

A <> B

True

‘Үлкен немесе тең’ (>=) амалы

A >= B амалының нәтижесі ақиқат (True), егер B жиынының элементтері түгелдей A жиынында кездессе, кері жағдайда нәтиже

жалған (False) болады.

 

 

Мысалы:

 

 

 

А-ның мәні

В-ның мәні

Өрнек

Нәтиже

[1,2,3,4]

[2,3,4]

A >= B

True

[‘a’..’z’]

[‘b’..‘t’]

A >= B

True

[‘z’, ‘x’, ‘c’]

[‘c’,’x’]

A >=B

True

‘Кіші немесе тең’ (<=) амалы

A <= B амалының нәтижесі ақиқат (True), егер A жиынының элементтері B жиынында түгелдей кездессе, кері жағдайда нәтиже жалған (False) болады.

Мысалы:

 

 

 

А-ның мәні

В-ның мәні

Өрнек

Нәтиже

[1,2,3]

[1,2,3,4]

A <= B

True

[‘d’..’h’]

[‘z’..‘a’]

A <= B

True

[‘a’, ‘v’]

[‘a’,’n’,‘v’]

A <=B

True

87

‘Ішінде’ (in) амалы

Бұл амал қандайда бір шаманың көрселілген жиында кездесетіндігін анықтайды. Егер кездессе нәтижесі ақиқат (True), әйтпесе жалған (False) болады. Әдетте, бұл амал шартты операторларда пайдалынылады.

Мысалы:

 

 

А-ның мәні

Өрнек

Нәтиже

2

If A in [1,2,3] then …

True

‘v’

If A in [‘a’..’n’] then …

False

X1

If A in [X0, X1, X2, X3] then …

True

Ішінде’ (in) амалын қолданғанда, тексерілетін шама және тік жақшаға алынған жиын, алдын ала сипатталмаса да болады.

Ішінде’ амалы, көбінесе шартты операторларда қүрделі шарттарды ықшамды және көрнекті түрде жазуға пайдалынады.

Мысалы, мына оператордағы шартты if (a-1) or (a=2) or (a=3) or (a=4) or (a=5) or (a=6) then … былайша if a in [1..6] then… жазуға болады.

Кейде ‘Ішінде’ амалын NOT амалымен қосып былай жазады: X NOT in M , бірақ мұндай жазу қате, себебі екі амал қатар тұр.

Дұрыс жазылу ережесі мына түрде болады: NOT (X in M)

‘Біріктіру’ (+) амалы

Екі жиынның қосындысы осы жиындардың элементтерінен

тұратын үшінші жиын болып табылады.

 

Мысалы:

 

 

 

А-ның мәні

В-ның мәні

Өрнек

Нәтиже

[1,2,3]

[1,4,5]

A + B

[1,2,3,4,5]

[‘A’..’D’]

[‘E’..‘Z’]

A + B

[‘A’..’ Z’]

[]

[]

A + B

[]

‘Қию’ (*) амалы

Екі жиынның қиюы – осы екі жиында да кездесетін

элементтерден тұратын үшінші жиын.

 

Мысалы:

 

 

 

А-ның мәні

В-ның мәні

Өрнек

Нәтиже

[1,2,3]

[1,4,2,5]

A * B

[1,2]

[‘A’..’Z’]

[‘B’..‘R’]

A * B

[‘B’..‘R’]

[]

[]

A *B

[]

‘Айыру’ (-) амалы

Екі жиынның айырымы – екінші жиында кездеспейтін бірінші жиынның элементтерінен тұратын үшінші жиын.

88

Мысалы:

 

 

 

А-ның мәні

В-ның мәні

Өрнек

Нәтиже

[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

[X2,X3]

Екі жиынға қолданылатын амалдардың нәтижесін екі төртбұрыштың бөліктерін бояу арқылы, көрнекті түрде көрсетуге болады.

Біріктіру Қию Айыру

1-ші есеп: Латын әріптерінен тұратын, нүктемен аяқталатын тізбекте а, е, с, һ әріптері нөше рет кездесетінін табатын программа қүрайық.

Program Upr1;

Vаг N : integer; S : string;

Begin

Read(S); N:=0; i:=1; While S[i]<> ‘.’ Do

Begin {кезекті символдың осы жиында жатқанын тексереді} If S[i] in [a, e, c, h] then N:= N+1;

I := i+1;

End; Write(N);

End.

2-ші есеп: 100 натурал санына дейінгі барлық жай сандарды табуға арналған программа құрайық.

Бұл программаны Эратосфен торы деп аталатын алгоритмді пайдаланып қүрайық.

2-ден-100-ге дейінгі бүтін сандарды ретімен жазамыз. Бірінші жай сан 2, оны қалдырып, оған еселі сандарды алып тастаймыз. Қалған сандардың біріншісі 3, ол жай caн, оны да қалдырамыз және енді 3-ке еселі сандарды алып тастаймыз, 4 саны алынып қалғандықтан, қалған сандардың біріншісі 5, ол жай сан, оны да қалдырып, 5-ке еселі сандарды алып тастаймыз т.с.с..

Program Upr2; Const N=100;

Type SETT = Set of 2..N;

Var N, Nl, N2 : integer; S, P : SETT;

89

Begin

 

 

 

 

 

S:=[2..N]]; P:=[1];

N2:=2;

 

 

 

While S <> []

Do

{S – жиыны босағанша қайталаймыз}

Begin

 

 

 

 

 

N1 := N2;{S-тен кезекті жай санға еселі сандарды алып

тастау}

 

 

 

 

 

While N1<= N Do

 

 

 

 

Begin

 

 

 

 

 

S:= S- [N1];

N1 := N1+N2;

 

 

 

End;

 

{P

жийынына

жай

сандарды

P :=P+[N2];

жинақтау}

 

 

 

 

 

Repeat

 

{Кезекті жай санды анықтау}

 

N2 =N2+1;

 

 

 

 

Until (N2 in S) or (N2>N)

End;

for N1 :=1 to N do {жай сандарды экранға шығару} If N1 in P then Write (N1);

End.

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

1.Паскальда жиын қалай беріледі?

2.Жиынның базалық типі қандай тип бола алады?

3.Жиынның программалауда алатын орны қандай?

4.Паскальда жиынның элементтер саны 256-дан аспау керек, не себептен осы сан алынған?

5.Қандай жиын бос деп аталады, қалай белгіленеді?

6.ішінде’ амалы не үшін қолданылады және қолдану

ерекшеліктері?

Есептер

1.M1(1..10) және M2(20..30 жиындарын сипаттаңыздар.

2.Орыс және латын әріптерінен тұратын R және L жиындарын сипаттаңыздар.

3.А жиынының элементтер санын анықтайтын тиімді тәсіл қарастырыңыз. Оған қандай қосымша деректер қажет?

4.А жиынының элементтерінің базалық типі X, олар аралық типпен берілген. Осы жиынның элементтер санын анықтайтын

функция жазу керек.

5. Базалық тип X болатын А және В жиындары берілген. a) A+В, б) A–В, в) A*В жиындарының элементтер санын анықтайтын функцяя қүрыңыз.

90

6.Базалық типі белгілі және элементтері аралықпен берілген жиынның элементтерін шығаратьн процедура жазыңыз.

7.Ойыншы 1-ден 36-ға дейінгі кез келген алты санды атайды. Осы сандарды бір жийынға жинап, нәтижесін шығаратын процедура қүру керек. Ойыншы қателесіп бір санды қайта немесе аралықта жатпайтын сан атаса, процедура экранға сәйкес хабар берсін.

8.Cпортлото ойынының (1-ден 36-ға дейін) натижесін сараптайтын (неше сан дұрыс аталғанын табатын) программа жазыңыз:

а) ұтыс цифрларының жиыны алдын ала белгілі болсын; б) ұтыс цифрлары программада кездейсоқ анықталсын.

9.Берілген жодда дауысты және дауыссыз дыбыстардаң қайсысының саны көп екендігін анықтайтын программа жазыңыз.

10.type at = (‘нан', 'сүт', 'май', 'ет', 'балық', 'тұз', 'ірімшік’, ‘шұжық’, ‘қант’, ‘шәй’);

t = set of at;

dk = array [1..20] of t; типтері жарияланған; dk типті массивтегі мәліметтер бойынша:

а) барлық дүкенде бap;

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

керек.

91

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