Паскаль тіліндегі көпөлшемді жиымдар

139

Сабақтың тақырыбы: Паскаль тіліндегі көпөлшемді жиымдар

Сабақтың мақсаты: Білімділік:

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

Дамытушылық:

Оқушылардың ойлау қабілеттерін, есте сақтауларын дамытып, жетілдіру.

Тәрбиелік:

Оқушыларды шығармашылыққа, шапшаңдыққа, шешім қабылдағыштыққа тәрбиелеу.

 Сабақтың типі: Практикалық элементтері бар демонстрацияны көрсету – түсіндіру.

Сабақтың жоспары: 1. Ұйымдастыру

  1. Үй тапсырмасын сұрау
  2. Ж.Б.Н.И

а) дәптермен жұмыс

  1. Практикалық жұмыс
  2. Қорытынды. Бағалау. Үйге тапсырма.

Сабақтың барысы: Оқушыларды сабаққа бағыттап, үй тапсырмасын сұрау.

 

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

Осы айтылғандарға сәйкес жиым элементтері былай белгіленеді: A[i], B[i,j], C[I,j,k] және т.с.с, көпөлшемді жиым элементтерін басқаша да белгілеуге болады, мысалы, В[і] [j] Мұндағы А[і] бірөлшемді жиымның і-ші элементі, оны математикада aі түрінде белгілейді, В[і,j] — екіөлшемді жиымның (кестенің) і-жолы мен бағанасының  қиылысында  орналасқан  элементінің  белгіленуді; ал C[i,j,k] үшөлшемді жиым, оның элементін кеңістікте нүкте координаталары (i,j,k) деп қарауға болады.

Типтер бөлігінде екіөлшемді жиым былай сипатталады:

TYPE     atau = array [1..n, 1..m] of <элементтер типі>;

Айнымалылар бөлігінде осы типке жататын жиымдар көрсетіледі

VAR      A,B:atau;

Мысалы,

type        T = array[1..4, 1..3] of real;

var                 С, D: Т;

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

TYPE atau = array [l..n] of array [l..m] of элементтер типі>;

мысалы,

type        T = array [1..4] of array [ 1..3] of real;

var         В: T;

Мұнда алдымен жол индекстерінің [1..n] типі, одан соң күрделі базалық тип көрсетілген:

array [l..m] of элементтер типі>;

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

type        vector = array[1..4] of integer;

massiv = array[1..4] of vector;

var                 matr : massiv;

Мұнда massiv және matr жиымдары екіөлшемді, яғни massiv[4,4], matr[4,4] — олар 4 жол және 4 бағанадан тұратын кесте элементтерін бейнелейді.

Егер программада жиымның бағанасы мен жолын бөліп жазу қажет болса, онда оны былай сипаттау қолайлы:

TYPE     Tl= array[l..M] of элемент типі>;

   Т= array [l..N] of T1;

VAR   В:Т;     А:Т1;

Мұнда алдымен бағана типі Т1 көрсетіледі де, одан соң ол жолдың типі арқылы матрицаның типі Т көрсетіледі. Айнымалылар бөлігінде екіөлшемді жиым — В және бірөлшемді жиым — А көрсетілген.

Екіөлшемді   жиымды   көбінесе   айнымалы   бөлігінде сипаттау жиі колданылады:

VAR    В: array [l..N, 1..M] of <элементтер типі>;

Индекс типіне REAL, integer стандартты типтерден езге типтердің барлығын пайдалануға болады, ал элементтер типі үшін Паскаль тіліндегі барлық типтерді қолдану мүмкіндігі бар.

Мысалы, T

ype

den = (mo, tue, wed, th, fr, sat, sum);

Rden = mo..fr;

Zadan = array [1..25, rden] of integer;

VAR

A:array [den] of array [1..25] of char;

B:zadan;

C:array [1..365]  of zadan;

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

for i:= 1 to n do

for j:=1 to m do

read(B[,j]);

немесе экранға мөлімет шығару үшін:

for і= 1 to n do

begin

writeln;

for j:= 1 to m do

write (B [i, j ]:8:3 );

end.

Индекстері мен элементтерінің типтері бірдей жиымдардың бірінің мәндерін екіншісіне көшіру үшін, мысалы A:=D; меншіктеу операторын немесе цикл операторы арқылы былай орындау мүмкіндігі бар:

For  i:= 1 to 4 do

А[і]:= D[i];

Жиым элементтері компьютер жадында тізбектеле орналасады. Төменгі индексті жиым элементі кіші адрестерде, жоғарғы индекстердегі элементтер жоғарғы адрестерде сакталады. Көпөлшемді  жиымдардың оң жақ шеткі индекстері бірінші болып өсіп отырады. Мысалы, А: аггау[1..5,1„5] of integer жиымы берілсе, ол компьютер жадында            адрестерінң өсуі бойынша былай орналасады:

A[1,1]

A[1,2]

A[1,5]

A[2,1]

A[2,2]

A[5,5]

Күнделікті   тұрмыста   екі-үш   өлшемді   жиымдар   жиі   қолданылады. Алгоритмдік тілдерде жиым өлшеміне шек қойылмайды. Жоғарыда айтылғандай жиым бір,  екі, үш,  төрт, тіпті одан да көпөлшемді   болуы   мүмкін.   Бірөлшемді   жиымдарды   сызықты жиымдар десек, екіөлшемді жиымдарды математикада матрица немесе кесте деп атайды. Біз мұнда екіөлшемді жиымдарды қарастырамыз. Екіөлшемді жиымға мысал ретіңде оқушылардың, әр сабақтан алған бағалары толтырылған кестені алуға болады Мәселен, мектепте 9-сыныптан үш топ бар екен делік: 9а, 9б және 9в топтары. Топ окушыларының бес сабақтан алған орташа бағалары төмендегі кесте түрінде көрсетілген.

Пәндер 1-топ 2-топ 3-топ
1 Информатика 4,1 4,7 4,2
2 Алгебра 4,4 4,3 4,0
3 Геометрия 4,5 4,6 4,7
4 Казак тілі 4,2 4,0 3,9
5 Орыс тілі 4,3 4,5 4,6

Егер карастырылатын жиым атауы В болса, онда оны былай жазады:

мұндағы цифрлар В жиымының құраушылары немесе элементтері, олар да сол атаумен белгіленіп, оның төменгі шетіне элементтің орналасқан орындары көрсетіледі:

жалпы түрде жиым элементтері bi.j. деп белгіленсе, мұндағы і-жол, j-бағана нөмірлері, онда

і = 1,2,3,4,5;  j = 1,2,3 деген мәндердің бірін кабылдайды.

Жиым элементтерінің мәнін жол және бағана нөмірлері арқылы анықтайды. Біздің  мысалда В2,3 = 4,0; В3,2 == 4,6 және т.с.с.

1-мысал. Жоғарыда берілген кестені пайдаланып, бес пән бойынша қай топтың орташа бағасы жоғары екенін және оның шамасын анықтайтын программа құру керек.

Program baga;

const    n = 5; m = 3;

var      k, i, j: integer;

s: real;

b: array [l..n, l.. m] of real;

a: array [l..m] of real;

begin s:=0;

writeln (‘Жиым элементтерін бос орын арқылы енгізіндер’);

for i:= 1 to n do

for j:= 1 to m do read (b[i,j]); {Жиым элементтерін енгізу}

for j := 1 to m do

begin

for i:= 1 to n do s:= s + b[i,j] {Бағана элементтерін қосу}

a[j]:=s/n;  s:= 0; writeln;

write (‘ ‘:4, a[j]); writeln

end;

k:=1; s:=a[1];

for j:= 2 to m do

if  a[j]>s then begin

s:=a[j]; k:=j

end;

writeln (‘ ‘:4, k,’-топтың бағасы жоғары, ол ‘,s:4:3’-ге тең’)

end.

 

2-мысал. Көбейту кестесін толтыруға арналған программа құру керек.

PROGRAM KOBEITU;

Const n = 9;

Var   i,j: integer;

К: array [2..n, l..n] of integer;

Begin

For i := 1 to n do

Begin

For j := 2 to n do

Begin

K[j,i]:=j*i;

Write(j,’;x’,i,’ =’ ,K[j,i]:3,’’:2);

end;

Writeln

End

End.

3-мысал. Өлшемі nхnа (n=4) нақты сандардан тұратын матрица . Матрицаның ең үлкен элементі мен ең кіші элементін, олардың орналасқан орнын (бағанасы мен жолын) тауып, сол ең үлкен  элемент пен ең кіші элементің қосындысын анықтау кажет.

PROGRAM MATRICA1;

Const n = 4;

Type mas = array[l..n, l..n] of real;

VAR

a: mas;

max, min, res: real;

i, j, ml, m2, kl, k2: integer;

Begin

Writeln (‘Maтрица элементтерін бос орын арқылы енгізіңдер:’);

For i := 1 to n do

Begin

For j := 1 to n do

Read(a[i,j]);

Writeln

End;

max:= a[l,l]; min:= а[1,1]; ml:= ; m.2: = ; k1:= 1; k2:= 1;

For i:= 1 to n do

For j := 1 to n do

Begin

If max < a[i, j] then

Begin

max:= a [i, j]; ml:= i; m2:=j

End;

If min > a[i, j] then

Begin

min:=a[i,j]; kl:= i; k2:= j

End

End;

Res:= max + min;

Writeln (‘eң; үлкен элемент = ‘ max : 6 : 2,’ ол’, ml : 2, ‘-жолда және’, m2 :2, ‘-бағанада орналасқан’);

Writeln (‘ең кіші элемент = ‘, min:6:2, ‘ол’ kl : 2, ‘-жолда және’, k2 : 2, ‘-бағанада орналасқан’);

Writeln (‘олардьщ қосындысы =’, res:7:2)

END.

4-мысал. Екіөлшемді а және b матрицаларының косындысы болып табылатын s матрицасын табу керек.

PROGRAM   KOSU;

type ms = array [1..3, 1..3] of real;

var a, b, s: ms;

k, j: integer;

Begin

Writeln (‘a жиымы элементтерін бос орын арқылы енгізіңер:’);

For k:=l to 3 do

For j:= 1 to 3 do

Read (a[k,j]);

writeln;

Writeln (‘ жиымы элементтерін бос орын арқылы енгізіңдер:’);’

For k:= 1 to 3 do

For j:= 1 to 3 do

begin

Read(b[k,j]);

s[k,j]:=a[k,j]+b[k,j];

end;

writeln (‘қосынды жиымның элементтері:’);

For k= 1 to 3 do

Begin

For j:= 1 to 3 do

Write(s[k, j]: 5 : 2);

writeln

End

End.

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

  1. Жиым деп нені айтады?
  2. Паскаль тілінде жиымдар калай сипатталады? Олардың кұрамы қандай?
  3. Жиым элементтерінің   орны   қалай   анықталады?
  4. Индекс дегеніміз  не?  Оларға  кандай талап  қойылады?
  5. Жиымның керекті   элементін   қалай  пайдаланамыз?
  6. Жиым элементтері  мен  индекстерінің типтері  кандай  болуы  мүмкін?
  7. Жиым сипаттаура   неге   тұрақтыларды   пайдаланган   қолайлы?
  8. Жиым элементтеріне  кандай   амал   қолданылады?   Оларга   кандай  талап қойылады?
  9. Жиымдарды программаға   енгізу   жөне   нәтижелерді   шығару   әрекеттері калай   ұйымдастырылады?
  10. Бірөлшемді, екіөлшемді   жөне  n-өлшемді   жиымдардын   кандай   ұқсастықтары   мен   айырмашылықтары   бар?
  11. Екіөлшемді жиым  калай  сипатталады?   Олардың  ерекшеліктері  қандай?
  12. Жиым элементтері компьютер  жадында  қалай  орналасады?  Көпөлшемді жиым  элементтері  ше?
  13. Жиым элементтерін  калай  сұрыптайды?  Оның  ең  үлкен  жөне  ең  кіші элементтері   калай   аныкталады?

Жаттығу

  1. X жиымы элементтері ретінде бес бүтін сан енгізу керек. Сол сандарды экранның бір жолына үтір аркылы бөліп жазып шығып, жиым элементтерінің арифметикалық ортасын   табыңдар.
  2. 2. Нақты сандардан түратын 3×3 матрицасы берілген, сол матрица элементтерін экранға шығарыңдар. Осы матрицаның әрбір элементін 5-ке көбейтіп, алынған   матрицаны   да   экранға   шығарыңдар.

3.Нақты n сандардан тұратын бірөлшемді ai (і = 1, 2,…, 5) жиымы берілген. а)  жиым элементтерін кері .жазып шығу қажет; в) bi = 1і формуласы аркылы жаңа bi жиымын кұрьщдар.

4- Нақты п элементтен тұратын жиымньщ ең үлкен, ең кінгі элементтерін жөне олардың реттік нөмірін табу программасын күрьщдар.

  1. A = (ai,j ) екіөлшемді жиымы берілген, осы жиымның: а) элементтерінін косындысы ең үлкен болатын жол нөмірін;   ә) сол анықталған жол элементтерінің қосындысын табатын программа кұрыңдар.
  2. Сынып журналындағы 5-тік бағалардың санын есептендер.

7.Сынып журналындағы кандай нөмірлі оқушының бестік бағасы көп?