V. Енгізілген циклдер құрылымымен алгоритмдерді программалау Бірінің ішіне бірі кірістірілген циклдер бар болады. Оларды күрделі циклдер деп аталады. Кірістірілген циклдерді қолданған программалар құрғанда ішкі цикл толығымен сыртқы циклдің ішіне орындалатындай болуы керек. Ішкі цикл өз кезегінде өзінің ішіне ішкі цикл орналастыра алады. Мысалы 1: Nжәне K айнымалыларының барлық мәндеріндегі у айнымалысының мәндерін есептеу керек. N-сыртқы цикл параметрі, K-ішкі цикл параметрі, N, K, y-бүтін типті айнымалылар. N айнымалысының әрбір мәнінде K айнымалысы 2, 4, 6, 8 мәндерін қабылдасын. Бұл 3 рет қайталанады, себебі N айнымалысының қабылдайтын мәндері үшеу. N=1, 2, 3, K=2, 4, 6, 8, y=2K+N. Сыртқы цикл – for арқылы, ал ішкі цикл while арқылы орындалады. Program M1 (input, output); Var M, K, y: integer; Begin For N:=1 to 3 do Begin While K<8 do Begin y:=2*K+N; Writeln(N:4, K:4, y:4); K:=K+2; End; End; End. Мысалы 2: F, J, K айнымалыларының барлық мәндеріндегі z айнымалысының мәндерін есептеу керек. F=1, 2, 3, 4, 5, J=2, 4, 6, 8, 10, 12, K=7, 9, 11, z=2F+2J+K. F, J - сыртқы цикл параметрі; K – ішкі цикл параметрі. Program M2 (input, output); Var F, J, K, z: integer; Begin For F:=1 to 5 do For J:=2 to 12 do Begin While K<11 do Begin Z:=2*F+2*J+K; Writeln(‘F=’, F, ‘J=’, J, ‘K=’, K, ‘z=’, z); K:=K+1; End; End; End.
Өзін тексеру сұрақтар
Циклдық алгоритм дегеніміз не?
Әдебиет: (1) бет. 71-80
8 апта
Дәріс №8. Ішкі программалар.
Ішкі программа ұғымы. Процедуралар және Функциялар.
ТР-да ішкі программаның 2 түрін бөліп көрсетуге болады: процедуалар және функциялар.
Программада қолданылатын стандартты функциялар мен процедуралар бар, мысалы, процедуралар:
Writeln(…)
Write(…)
Readln(…)
Read(…)
функциялар:
Sin(…)
Cos(…)
Odd(…)
Sqr(…)
Sqrt(…)
Программист өз есептерін шешу үшін өз процедурасы мен функциясын құра алады. Процедура және функциялар құрылымы негізгі программанікі сияқты.
Процедура құрылымы, оның сипатталуы және шақыру операторы
. Процедуралар
Процедура мәтіні procedure бөлімінде орналасқан.
Процедура сипаты мынадай түрде болады:
procedure <аты>(< формальды параметрлер тізімі>);
uses
label
const
type
var
procedure
function
begin
<операторлар>;
end;
Формальды және фактылы параметрлер, олардың сәйкестік ережесі. Функциялар
Формальды параметрлер типі көрсетілген, бір бірінен «;» арқылы бөлінген айнымалылар тізімінен тұрады. Процедура параметрі 3 түрлі:
Параметрлер-мәндер (енгізу параметрлер).
Параметрлер-айнымалылар(шығару параметрлер).
Параметрлер-процедуралар.
Параметрлер-мәндер былайша сиптатталады:
<айнымалылар тізімі_1>:<тип_1>; <айнымалылар тізімі_2>:<тип_2>;…
Параметрлер-айнымалылар былайша сипатталады:
var < айнымалылар тізімі _1>:<тип_1>; < айнымалылар тізімі _2>:<тип_2>;…
Процедураны шақыру негізгі программада былай іске асырылады:
<процедура аты>(<фактілі параметрлер>);
Фактілі параметрлер үтір арқылы типін көрсетпей-ақ тізіліп жазылады.
Формальды және фактілі параметрлер арасында саны бойынша, мәліметтер типі бойынша сәйкестік болу керек. Сәйкес параметрлерінің аты әртүрлі немесе бірдей болу керек.
Процедураға жіберілетін фактілі параметрлер константа, айнымалы, өрнек болуы мүмкін.
Процедурадан мән алатын фактілі параметрлер тек қана айнымалы болады.
Параметр-мәндер арқылы ақпаратты программадан процедураға жіберуге болады, бірақ кері қайтарылмайды. Ал параметр-айнымалы арқылы ақпаратты программадан процедураға жіберуге болады, жәнеде кері де жіберуге болады.
Функциялар
Функция мәтіні мына бөлімде орналасқан: function.
Функцияның сипаты:
function <аты>(<формальды параметрлер тізімі>):<тип>;
uses
label
const
type
var
procedure
function
begin
<операторлар>;
<имя>:= <нәтиже>;
end;
Өзін-өзі тексеру сұрақтары немесе тестер
{Өзін-өзі тексеру сұрақтар тізімі немесе тестер}
Процедураның құрылымы қандай? Процедура қандай бөлімде сипатталады?
Негізгі программада процедураны қалай шақыруға болады?
Формальды және фактілік параметрлер деген не?
Формальды мәндер - параметрлер және формальды айнымалы – параметрлер деген не? Негізгі программадан параметрлердің берілуі қалай орындаладыжәне керсінше мәндер - параметрлер мен айнымалы – параметрлер пайдаланған жағдайда?
Әдебиет: (1) бет. 80-92
9 апта
Дәріс №9. Деректердің құрылымданған типі: массивтер.
Массивтер
Қарапайым типтер қатарына жататын стандартты (Integer, real) және қолданушылар (тізбектелген тип) типтерінде бір айнымалыны сақтау үшін, негізінен компьютер жадысының бір ғана ұяшығы қолданылады. Бірақ көпетген программаулау есептерінің шешімін табу барысында әрбір элементтің деректерін жеке айнымалыға сақтау орнына, оларды тізбектеп бір жерде сақтау анағұрлым тиімді болып табылады.
Бір өлшемді массивтер
Бір типтес берілгендерден құралып, барлық элементтеріне бір ортақ атау берілген жиынды массив деп атаймыз. Массив құрылымдық типтер қатарына жатады. Массив элементтері нөмірленеді. Массивтің әрбір элементіне индексін көрсету арқылы жұмыс істеуге болады. Массивке мысал ретінде векторларды қарастыруға болады. Егерм массивке кестелік берілгендер жазылса ( матрица), онда элементтері екі индекс бойынша нөмірленеді.
Массив сипаттамалары:
Массивтер элементтерімен жұмыс жасау барысында, массив атауынан кейін міндетті түрде тік жақшаға алынған индекс көрсетіледі. Индекс ретінде сандар қолданылады.
Массивтерді қолдану үшін оларды типтер (type) немесе айнымалыларды сипаттау (var) бөлімінде хабарлану қажет.
Жалпы жазылу түрі:
Type
Массив типінің атауы = array [индекс типі] of элемент типі;
Var
Массив атауы: массив типінің атауы;
Мысалы:
Type
GRUP = array [1…8] of integer;
Var
A:GRUP; {А – массивіне жады бөлу }
Мұндағы:
Массив типінің атауы – массив элементтерінің жиынын сипаттайды;
Индекс типі - тізбектелген немесе шектелген типтерді көрсету;
Элемент типі – массив элементтерінің типін көрсету.
Берілген мысалдағы массивтің әрбір элементімен жұмыс істеу үшін, массив атауы және индексі берілуі тиіс. Массив индексі тік жақшаға алынып жазылады, сол себепті массивтің кез келген элементіне қатынас алуға болады.
Яғни берілген массивиің бірінші элементіне қатынас алу үшін массив атауынан кейін бірінші индексті көрсету қажет: A[1]; массивтің екінші элементіне қатынас алу үшін; A[2]; ал А массивінің сегізінші элементіне: A[8] көрсетіледі
A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8]
12
|
11
|
5
|
-2
|
405
|
-3
|
9
|
-7
|
Массив- тің бірінші элементі
|
Массив-тің екінші элементі
|
Массив-
тің үшінші элементі
|
Массив-
тің төртінші элементі
|
Массив-тің бесінші элементі
|
Массив-
тің алтыншы элементі
|
Массив
-тің жетінші элементі
|
Массив-тің сегізінші элементі
|
Берілген массивтің кез келген элементтеріне арифметикалық операцияларды, салыстыру және меншіктеу операторларын қолдануға болады. Сонымен қатар, массивтерге Turbo Pascal программалау тіліндегі айнымалы типіне сәйкес келетін барлық стандартты процедуралар және функциялар қолданылады.
Массивтің кез-келген бір элементіне элементіне нәтиже беру үшін, меншіктеу операторы қолданылады:
Массив атауы[индексі]:=нәтиже
Мысалы:
а) А массивінің бірінші элементіне- 12 санын меншіктеу үшін: А[1]:=12;
ә) А массивінің бесінші элементіне- 405 санын меншіктеу үшін: А[5]:=1405;
б) А массивінің екінші элемент нәтижесін экранға- шығару үшін: writeln (A[2]); (экранға 11 шығады.)
в) А массивінің бесінші элементіне нәтижені пернелер тақтасы көмегімен енгізу үшін: readln(A[1]);
г) А массивінің бірінші және үшінші элементтерін қосындысын Sum айнымалысына меншіктеу үшін: Sum:=A[1]+A[3];(нәтижесінде Sum айнымалысына 17 саны меншіктеледі).
Бірөлшемді массивтер элементтерімен жұмыс.
Массивтің кез-келген элементерімен жұмыс істегенде программалау барысында олардың индекісінің мәні сипатталған шектеуден аспауы тиіс.
Егер массив индексінің мәні сипатталған шектеуден асып кетсе онда, синтаксистік қате тіркеліп, экранда “Index type is not compatible with declaration” деген сөз тіркестері шығарылады.
Массивтер қолдпанылатын программаларда “{R+}” директивасын жазу арқылы массивтің шектеулерін тексеруге болады. Егер прогаммада“{R+}” директивасы беріліп, массив индексі шектеуден асып кетсе, онда экранға “Range check error” сөз тіркесі шығарылады.
Массивтерді программада қолдану үшін Turbo Pascal програмаллау тілінде оларды бірден var бөлімінде сипаттау жолы қарастырылған.
Жалпы жазылу түрі:
Var
Массив атауы : array (индекс типі) of элемент типі;
Мысалы, бөлшек сандарға арналған он сегіз элементтен тұратын GR массивін сипаттау:
Var
GR: array [1...18] of real;
Берілген тоғыз элементтен тұратын А масчсивіне бөлшек сандар енгізіп, оларды дисплей бетіне ретімен шығару программасын қарастырайық:
{$ R+}
PROGRAM MASSIV; {Программа атауы}
Type { Типтерді сипаттау бөлімі }
Mas = array [1..9] of real; { Шарт бойынша массив типі }
Var {айнымалыларды сипаттау бөлімі}
A: Mas; {Mas типті А - массиві}
I: integer; {циклді басқару айнымалысы}
BEGIN {негізгі программа басы}
WRITELN (‘A – массивінің 9 элементін енгізіңіз:’);
` FOR I:= 1TO 9 DO {I- бойынша цикл}
READ (A[i]); {A[i] массивіне нақты сандарды енгізу операторы}
FOR I:=1 to 9 do {I- бойынша цикл}
WRITE(‘A[‘,I,’]=’,A[I]); {A[I] массивінің элементін дисплейге шығару операторы}
END. {Негізгі программа соңы}
Өзін-өзі тексеру сұрақтары
Шектелген типті айнымалылар қалай сипатталады?
Диапазондық типті айнымалылар қалай сипатталады?
Массив деген не?
Массивтің өлшемділігі деген не?
Программада бірөлшемді, екіөлшемді массивтер қалай сипатталады?
Массив элементіне қалай қарасады?
Массивті қалай толтыру керек?
Массивті экранға шығару
Әдебиет: (1) бет. 140-153
10 апта
. Деректердің құрылымданған типі: массивтер.Бірөлшемді және көпөлшемді массивтер.
Массивтер
Қарапайым типтер қатарына жататын стандартты (Integer, real) және қолданушылар (тізбектелген тип) типтерінде бір айнымалыны сақтау үшін, негізінен компьютер жадысының бір ғана ұяшығы қолданылады. Бірақ көпетген программаулау есептерінің шешімін табу барысында әрбір элементтің деректерін жеке айнымалыға сақтау орнына, оларды тізбектеп бір жерде сақтау анағұрлым тиімді болып табылады.
Бір өлшемді массивтер
Бір типтес берілгендерден құралып, барлық элементтеріне бір ортақ атау берілген жиынды массив деп атаймыз. Массив құрылымдық типтер қатарына жатады. Массив элементтері нөмірленеді. Массивтің әрбір элементіне индексін көрсету арқылы жұмыс істеуге болады. Массивке мысал ретінде векторларды қарастыруға болады. Егерм массивке кестелік берілгендер жазылса ( матрица), онда элементтері екі индекс бойынша нөмірленеді.
Массив сипаттамалары:
Типі – массив элементтерінің жалпы типі;
Көлемі – массив индексінің саны;
Шектелімі - әрбір индекстардің шектеу бойынша сәйкестігі;
Пішімі – көлем және шектеулер жиындары.
Массивтер элементтерімен жұмыс жасау барысында, массив атауынан кейін міндетті түрде тік жақшаға алынған индекс көрсетіледі. Индекс ретінде сандар қолданылады.
Массивтерді қолдану үшін оларды типтер (type) немесе айнымалыларды сипаттау (var) бөлімінде хабарлану қажет.
Жалпы жазылу түрі:
Type
Массив типінің атауы = array [индекс типі] of элемент типі;
Var
Массив атауы: массив типінің атауы;
Мысалы:
Type
GRUP = array [1…8] of integer;
Var
A:GRUP; {А – массивіне жады бөлу }
Мұндағы:
Массив типінің атауы – массив элементтерінің жиынын сипаттайды;
Индекс типі - тізбектелген немесе шектелген типтерді көрсету;
Элемент типі – массив элементтерінің типін көрсету.
Берілген мысалдағы массивтің әрбір элементімен жұмыс істеу үшін, массив атауы және индексі берілуі тиіс. Массив индексі тік жақшаға алынып жазылады, сол себепті массивтің кез келген элементіне қатынас алуға болады.
Яғни берілген массивиің бірінші элементіне қатынас алу үшін массив атауынан кейін бірінші индексті көрсету қажет: A[1]; массивтің екінші элементіне қатынас алу үшін; A[2]; ал А массивінің сегізінші элементіне: A[8] көрсетіледі
A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8]
12
|
11
|
5
|
-2
|
405
|
-3
|
9
|
-7
|
Массив- тің бірінші элементі
|
Массив-тің екінші элементі
|
Массив-
тің үшінші элементі
|
Массив-
тің төртінші элементі
|
Массив-тің бесінші элементі
|
Массив-
тің алтыншы элементі
|
Массив
-тің жетінші элементі
|
Массив-тің сегізінші элементі
|
Берілген массивтің кез келген элементтеріне арифметикалық операцияларды, салыстыру және меншіктеу операторларын қолдануға болады. Сонымен қатар, массивтерге Turbo Pascal программалау тіліндегі айнымалы типіне сәйкес келетін барлық стандартты процедуралар және функциялар қолданылады.
Массивтің кез-келген бір элементіне элементіне нәтиже беру үшін, меншіктеу операторы қолданылады:
Массив атауы[индексі]:=нәтиже
Мысалы:
а) А массивінің бірінші элементіне- 12 санын меншіктеу үшін: А[1]:=12;
ә) А массивінің бесінші элементіне- 405 санын меншіктеу үшін: А[5]:=1405;
б) А массивінің екінші элемент нәтижесін экранға- шығару үшін: writeln (A[2]); (экранға 11 шығады.)
в) А массивінің бесінші элементіне нәтижені пернелер тақтасы көмегімен енгізу үшін: readln(A[1]);
г) А массивінің бірінші және үшінші элементтерін қосындысын Sum айнымалысына меншіктеу үшін: Sum:=A[1]+A[3];(нәтижесінде Sum айнымалысына 17 саны меншіктеледі).
Бірөлшемді массивтер элементтерімен жұмыс.
Массивтің кез-келген элементерімен жұмыс істегенде программалау барысында олардың индекісінің мәні сипатталған шектеуден аспауы тиіс.
Егер массив индексінің мәні сипатталған шектеуден асып кетсе онда, синтаксистік қате тіркеліп, экранда “Index type is not compatible with declaration” деген сөз тіркестері шығарылады.
Массивтер қолдпанылатын программаларда “{R+}” директивасын жазу арқылы массивтің шектеулерін тексеруге болады. Егер прогаммада“{R+}” директивасы беріліп, массив индексі шектеуден асып кетсе, онда экранға “Range check error” сөз тіркесі шығарылады.
Массивтерді программада қолдану үшін Turbo Pascal програмаллау тілінде оларды бірден var бөлімінде сипаттау жолы қарастырылған.
Жалпы жазылу түрі:
Var
Массив атауы : array (индекс типі) of элемент типі;
Мысалы, бөлшек сандарға арналған он сегіз элементтен тұратын GR массивін сипаттау:
Var
GR: array [1...18] of real;
Берілген тоғыз элементтен тұратын А масчсивіне бөлшек сандар енгізіп, оларды дисплей бетіне ретімен шығару программасын қарастырайық:
{$ R+}
PROGRAM MASSIV; {Программа атауы}
Type { Типтерді сипаттау бөлімі }
Mas = array [1..9] of real; { Шарт бойынша массив типі }
Var {айнымалыларды сипаттау бөлімі}
A: Mas; {Mas типті А - массиві}
I: integer; {циклді басқару айнымалысы}
BEGIN {негізгі программа басы}
WRITELN (‘A – массивінің 9 элементін енгізіңіз:’);
` FOR I:= 1TO 9 DO {I- бойынша цикл}
READ (A[i]); {A[i] массивіне нақты сандарды енгізу операторы}
FOR I:=1 to 9 do {I- бойынша цикл}
WRITE(‘A[‘,I,’]=’,A[I]); {A[I] массивінің элементін дисплейге шығару операторы}
END. {Негізгі программа соңы}
Өзін тексеру сұрақтары
Екі өлшемді массивті сипаттау?
Екіөлшемді массив элементіне қатысу?
Екі өлшемді массивті толтыру?
Екіөлшемді массивті экранға шығару?
Әдебиет: (1) бет. 140-153
11>8>
Достарыңызбен бөлісу: |