Автор работы: Пользователь скрыл имя, 14 Ноября 2013 в 19:57, контрольная работа
Негізгі түсініктер және программалық объектілерді сипаттаудың тілдік құралдары: сөздігі, қызметші сөздер, идентификаторлар, тұрақтылар мен айнымалылар. Программа құрылымы.Мәліметтердің типтерінің түрлері. Мәліметтердің негізгі базалық типтері. Бүтін, нақты, логикалық, сымволдық типтер. Жадта берілуі. Мәндер аралығы. Жасанды типтер. Құрылымды типтер: массив, жазба, жыйын, жол, файыл, стек.
end.
4- дәріс.
Тақырыбы: Тармақтау және таңдау операторлары.
Мазмұны. Өту және тармақтау операторлары. Таңдау операторы. Тармақты алгоритмдерді программалау мысалдары.
Тармақталу алгоритмін программалау
Тармақталу алгоритмін программалау үшін шарты оператор (тармақтау операторы) және таңдау операторы қолданады.
Шартты оператордың жазылу форматы:
If <логикалық өрнек> then < оператор 1 >
else < оператор 2 >;
Оператор 1 және оператор 2 жай және құрама болуы мүмкін. Егер тармақталудың шарты ретінде қолданылатын логикалық өрнек True мәнін қабылдаса, оператор 1, егер False болса,онда оператор 2 орындалады.
Шартты оператордың толық емес түрі:
If <логикалық өрнек> then < оператор 1 >;
1-мысал. X,Y,Z үш нақты сандардың ішінен ең үлкенін табу керек.
1-Шешуі. Сатылы толық тармақты алгоритімді қолданамыз.
Program Max_1;
Var x,y,z,max:real;
begin
write ('x,y,z:'); read (x,y,z);
If x>=y
then if x>=z then max:=z else max:=z
else if y>=z then max:=y else max:=z;
writeln ('max snag=',max:4:2);
end.
2-Шешімі. Толық емес тармақтар тізбегінен тұратын және күрделі логикалық өрнектері бар алгоритмді қолданамыз.
Program max3_2;
Var x,y,z,max:real;
begin
write ('x,y,z:'); read (x,y,z);
if (x>=y) and (x>=z) then max:=x;
if (y>=x) and (y>=z) then max:=y;
if (z>=x) and (z>=y) then max:=z;
writeln ('max=',max:4:2);
end.
2-мысал.
а нақты саны берілген. F(a)-ны табу керек, егер
0, егер x<=0 ,
f(x)= x2-x , егер 0<x<=1,
x2-sinpx2 x-тің басқа мәндерінде .
Шешуі. Алгоритмнің құрамында сатылы тармақ құрылымы бар [1].
Program Formula;
Var X,F:Real;
Begin
Writeln (‘нақты сандарды енгіз:’); readln (x);
If X<=0
then F:=0
else If X<=1 then F:=sqr (X)-X
else F:=sqr (X)-sin (Pi*X*X);
Writeln (‘x=’,x,’болғандағы F(x) функциясының мәні’, F,’-ке тең’);
End.
Таңдау операторы көп бағытта тармақтауды программалауға мүмкіндік береді. Бұл оператор берілген өрнектің мәніне байланысты (таңдау селекторы) бірнеше тармақтың біріне өтуді ұйымдастырады.
Таңдау операторының жазылу форматы:
case K of
A1 : <оператор1>;
A2 : <оператор2>;
. . .
AN : <операторN>;
else <операторN+1>
end;
Мұнда K- тек жай реттік типті (бүтін, символдық, логикалық) өрнек-таңдағыш. A1,...,AN - тармақты белгілеу қызметін атқаратын, таңдағыш типтес тұрақты. Оператордың орындалуы K өрнегінің есептелуінен басталады, алынған мән тұрақтылармен (белгілермен) салыстырылады да сәйкес оператор орындалады. Егер бірде-бір белгі К мәнімен сәйкес келмесе, онда else сөзінен кейінгі оператор орындалады.
еlse тармағынсыз толық емес таңдау операторын қолдану мүмкіндігі бар.Тармақ белгілері тізіммен немесе аралықпен берілуі мүмкін.
Мысал 1. Ежелгі жапон күнтізбегінде он екі жылдық цикл қабылданған болатын. Цикл ішіндегі жылдар жануарлардың атымен аталды:тышқан, сиыр, арыстан, қоян, ұлу, жылан, жылқы, қой, мешін, тауық, ит және доңыз. Егер 1996 ж. тышқан жылы - цикл басы болғаны белгілі болса, онда жылдың номеріне байланысты оның циклдағы атауын анықтайтын программа жазу керек.
Шешуі
Цикл он екі жылдық болғандықтан, жылдың атауын осы жылды 12-ге бөлгендегі қалдыққа сәйкестендіреміз. Мұнда, 1996-ны 12-ге бөлгенде бөлінді 4-ке тең болатынын ескереміз.
Program Goroskop;
Var Year:integer;
write(‘Жылды енгңзіңіз‘);read(Year);
case Year mod 12 of
0 : Writeln(‘Мешін жылы ‘);
1 : Writeln(‘Тауық жылы ‘);
2 : Writeln(‘Ит жылы ‘);
3 : Writeln(‘Шошқа жылы ‘);
4 : Writeln(‘Тышқан жылы ‘);
5 : Writeln(‘Сиыр жылы ‘);
6 : Writeln(‘Арыстан жылы ‘);
7 : Writeln(‘Қоян жылы ‘);
8 : Writeln(‘Ұлу жылы ‘);
9 : Writeln(‘Жылан жылы ‘);
10 : Writeln(‘Жылқы жылы ‘);
11 : Writeln(‘Қой жылы ‘)
end
end.
Мысал 2. Таңдау операторын қолдана отырып, екі нақты санның үлкенін табатын программа жазу керек.
Шешуі. Мұнда таңдағыш логикалық шама болады.
Program Maximum;
Var Max, X, Y:real;
Begin
Write(‘Екі тең емес санды енгізіңіз ‘);
readln(X, Y);
Case X>Y of
true :Max:=X;
false : Max:=Y;
End;
Writeln(‘Екі санның үлкені ‘,Max:12:6)
End.
Мысал 3. Егер символ орыстың кіші әрпі болса, онда оны бас әріпке түрлендіру керек. Альтернативті ASCII кодтар кестесін қолдануға болады.
Шешімі.
Альтернативті ASCII-да кодтар кестесінде кіші орыс әріптері қатар орналасқандықтан, әріптің кестенің қандай бөлігіне түскеніне байланысты сәйкес формула қолданылады [9].
Program Goroskop;
Var C:integer;
Begin
write(‘Символ еңгізіңіз ‘);readln(С);
case C of
‘a’.. ‘ п’:C:=Chr(Ord(C)-32);
‘р’ .. ‘я’:C:=Chr (Ord(C)-80)
End;
Writeln(C)
End.
5-дәріс.
Тақырыбы:Циклдық операторлар. Негізгі есептеу схемалары
Мазмұны. Циклдық операторлар. Адыңғы шартты цикл операторы. Соңғы шартты цикл операторы. Параметрлі цикл. Арифметикалық алгоритмдер. Негізгі есептеулер сүлбелері: Горнер схемасы, катардың мүшесі, ктарды есептеу.
Цикл дегеніміз белгілі бір командалар тізбегінің қандай да бір шартқа байланысты бірнеше рет қайталануы. Циклдық алгоритм құрылымдарының үш түрі белгілі: «Әзір» циклы, «Дейін» циклы және параметрлі цикл («Үшін»циклы). Паскальда осы үш түрлі циклды да жүзеге асыратын операторлар бар.
«Әзір» циклы-ең кеңінен қолданылатын циклдық құрылым. Ол While операторымен жүзеге асады.
Оператордың жазылу форматы:
While <логикалық өрнек> do <цикл денесі>;
Логикалық өрнектің мәні –True болған жағдайда цикл денесі қайталанады. Цикл денесі жай немесе құрама оператор болуы мүмкін.
«Дейін» циклының жазылу форматы:
repeat <цикл денесі> until <логикалық өрнек>;
Цикл денесі логикалық өрнек true мәнін қабылдаған кезде ғана өз орындалуын тоқтатады. «Дейін» циклының денесі ең кемінде бір рет орындалады. Цикл денесі бірнеше операторлардан тұратын болса, оны бөліп көрсету үшін begin мен end қолданбауға да болады.
Параметрлі циклдың жазылуының екі нұсқасы бар:
1) for i:=In to Ik do< цикл денесі>;
2) for i:=In downto Ik do<цикл денесі>.
Мұндағы I-циклдың параметрі-саналатын жай типті айнымалы;
In-осы
типтегі цикл параметрінің
Ik-цикл
параметрінің соңғы мәнін
<Цикл денесі> жай немесе құрама операторлар болуы мүмкін.
Цикл параметрінің мәні In
мен Ik аралығында болған кезде қайталанады.
Бұл өрнектер циклдың орындалуының
басында тек бір рет
Бірінші нұсқада циклдың әрбір қайталануында параметр мәні берілген типтегі келесі мәнге өзгеріп отырады. (бүтін тип үшін 1-ге көбейеді) Екінші нұсқада циклдың әрбір қайталануы кезінде параметр мәні осы типтегі алдыңғы мәнге өзгереді (бүтін тип үшн 1-ге азаяды).
Мысал 1. 1-ден N-ге дейінгі натурал сандардың қосындысын есептеу керек.
Шешуі. Есептің шешуі while, repeat және for цикл операторларын қолдану арқылы жасалған үш бөліктен тұрады[3].
Program Natur;
var a,Summa,N,i:integer;
begin
write('N=');readln(N);
{«әзір» циклы}
a:=1; Summa:=0;
while a<=N do
begin
Summa:=Summa+a;
a:=a+1;
end;
writeln('Бірінші қосудың
{«дейін» циклы}
a:=1;Summa:=0;
repeat
Summa:=Summa+a;
a:=a+1;
until a>N;
writeln('Екінші қосудың
{параметрлі цикл}
Summa:=0;
for i:=1 to n do
Summa:=Summa+i;
writeln('Үшінші қосудың
end.
Бұдан үш нәтиженің де бірдей болатынын көреміз.
Мысал 2. у= функциясын yk=(yk-1+x/ yk-1)/2, мұндағы к=1,2,…, рекуренттік формуламен анықталған тізбектің шектік мәні ретінде есептеуге болады.
Алғашқы Y0 мәні еркін түрде беріледі. Түбірдің ε дәлдікті жуық мәні ретінде |yk-yk-1|< ε теңсіздігі орындалатын бірінші yk алынады.
Шешуі. Сандық тізбектің мәнін есептеу үшін әр қадамда соңғы және оның алдындағы: yk және yk-1 мәндерін сақтайтын екі жай айнымалы ғана жеткілікті. Бұл айнымалыларды Anew және Aold деп белгілейік. Бұл есепті программалау барысында параметрлі циклды қолдануға болмайды, өйткені циклдың қайталану саны белгісіз. Сондықтан «әзір» циклын қолданайық.
program Posled;
var x,eps,Aold,Anew:real;k:
begin
write('Epsilon санын енгіз:');readln(eps);
write(‘X-мәнін енгіз');readln(X);
Aold:=x; Anew:=(Aold+x/Aold)/2;
while abs(Anew-Aold)>=eps do
begin
Aold:=Anew;
Anew:=(Aold+x/Aold)/2;
end;
writeln('Квадрат түбір (',x,')
end.
Мысал 3. [2;n] интервалында жататын бөлгіштерінің қосындысы ең үлкен болатын натурал санды табу керек.
Шешуі. Алгоритмнің мәнісі Х-тің Х-тен кіші болатын барлық бөлгіштері 1 мен X div 2+1 аралығында жатуында. Ең үлкен бөлгіш Х-тің өзі болады. Сондықтан [2;n] аралығындағы әрбір сан үшін көрсетілген жиындағы барлық бөлгіштерді тауып, олардың қосындысын есептеу керек. Есептеу барысында ең үлкен мәнді таңдау керек.
Алгоритм қос сатылы циклдан тұратын болады. Олардың орындалуы мына түрде: сыртқы цикл параметрінің әрбір мәні үшін ішкі цикл толығымен орындалады.
Program Sum_Del;
var N,I,Max,Sum,K,ch:integer;
begin
write('N санын енгізіңіз:');readln(n);
Sum_Max:=1;ch:=1;{шамалардың бастапқы мәні}
{Сыртқы цикл:сандарды біртіндеп қарау}
for i:=2 to N do
begin
sum:=0;
{ішкі цикл:бөлгіштерді іздеу}
for k:=1 to i div 2+1 do
іf i mod k=0 then sum:=sum+k;{Бөлгіштерді қосу}
Sum:=Sum+i;{Қосындыға ең үлкен бөлгішті қосу}
{Бөлгіштердің
қосындысының ең үлкенін
if sum>Sum_Max then
begin
Sum_max:=Sum;ch:=i;
end;
writeln(’Бөлгіштердің қосындысының ең үлкені:’, ch,’бөлгіштерінің қосындысы’,Sum_Max);
end.
Тақырыбы: Деректердің құрылымды типтері. Массивтер.
Мазмұны. Массив типінің сипаттамасы. Массивтің элементтеріне қатынау. Индекс ұғымы. Массивтерді енгізу және шығару. Бірөлшемді және екіөлшемді массивтермен амалдар.
Массив- бір типті мәліметтердің белгілі бір тобынан тұратын жүйелі тип. Элементтердің типі массивтің базалық типі деп аталады.
Паскальда массив құрылымдық
типтегі айнымалы ретінде қарастырылады.
Массивке тұтасынан бір ат беріледі.
Массивтің элементтері
<массив аты>[<индекс>],
мұндағы индекс реттік типті өрнек.
Массивті сипаттамасы массивтің атын, өлшемін және базалық типін анықтайды. Айнымалылар тарауында массивті сипаттау форматы:
Var <массив аты>:array[<индекстің типі>] of <базалық тип>
Көп жағдайда индекс типі ретінде бүтін аралық тип қолданылады.
Сызықтық (бірөлшемді) массив - элементтері бір индекспен анықталатын массив. Бірөлшемді массивтерде сызықтық кестелердің мәндері сақталады. Бірөлшемді массивтерді сипаттау мысалдары:
Var B:array [0..5]of real;
R:array[1..34] of char;
N:array[‘A’..’Z’]of integer;
Массивті енгізу және шығару оның элементтерін біртіндеп енгізу және шығару арқылы орындалады. Әдетте бұл үшін параметрлі циклды қолданады.
Мысал 1. Прогаммада бүтін типті А массивінің 10 мәні енгізіледі және 50 элементтен тұратын нақты типті В массивінің мәндері шығарылады [7]. Программаның сәйкес үзінділері:
Var A:array[1..10] of integer; B:array[1..50] of real;
i:integer;
Begin
For i:=1 to 10 do
Begin
Write(‘A[‘,I,’]=’);readln(A[i]
End;
…………………………………………
For i:=1 to 50 do
Begin
Writeln(‘B[‘,I,’]=’);
End;
End.
Мысал 2. Бірөлшемді нақты массивті [0,1] аралығында жататын кездейсоқ N санмен толтыру керек. Ең үлкен мәнді және оның индексін табу керек (егер мұндай мәндер бірнешеу болса, біріншісін).
Информация о работе Программалау тілдерінің негізгі элементтері. Мәліметтердің типтері