while abs(R)>eps do
begin
R:=-R/X;
S:=S+R;
end;
WriteLn('x=',x:6:2,' S=',S:8:2,',ал R=', R:8:6)
end
else WriteLn('Қатар жинақты емес'); End.
Осы алгоритмді цикл-дейін нұсқасы көмегімен де жазуға бо-лады (5.15, ə-сурет).
Program ex;
var S,R,X,eps:real;
Begin
WriteLn(‘x жəне эпсилонды енгіз:’);
ReadLn(X,eps);
if x>1 then
begin
S:=0;
R:=1;
repeat
S:=S+R;
R:=-R/X
until abs(R*x)<=eps; WriteLn(‘x=’,x:6:2,’ S=’,S:8:2,’, ал
R=',R:8:6)
end
else WriteLn(‘Қатар жинақты емес’); End.
120
5.15-сурет. Қосындыны берілген дəлдікпен есептеу алгоритмі:
а – цикл-əзірше нұсқасы бойынша; ə – цикл-дейін нұсқасы бойынша.
Бақылау сұрақтары
Шарты соңынан тексерілетін цикл дегеніміз не?
Шарты соңынан тексерілетін цикл операторы неше рет орында-лады?
Шарты соңынан тексерілетін циклдан шығу қалай іске асырыла-ды?
Шарты соңынан тексерілетін цикл операторының құрылымын түсіндіріңіз.
Шарты соңынан тексерілетін цикл операторының орындалу ретін түсіндіріңіз.
Шарты соңынан тексерілетін цикл операторының блок-схемасын түсіндіріңіз.
Шарты соңынан тексерілетін цикл операторына мысал келтіріңіз.
Тапсырмалар
y = x 3 − x 2 + 16 x −43 функциясының x [–4;4] аралығында 0,5 қадаммен өзгергендегі мəнін есептеңіз.
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
−4, x
|
2
|
x
|
|
|
2
|
|
|
|
|
+ 14,
|
x ≺−2
|
y = x
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x
|
|
|
|
|
|
|
|
, басқа жағдайда
|
|
|
|
|
|
|
4
|
|
|
|
|
|
|
|
|
|
функциясының x [–5;3] аралығында 0,25 қадаммен өзгергендегі мəнін есептеңіз.
3.
|
Пернетақтадан
|
енгізілген n үшін
|
s sin1 sin 2
|
sin n
|
|
қатарының мəнін есептеңіз.
|
|
|
|
|
4.
|
Пернетақтадан
|
енгізілген
|
x
|
жəне
|
n
|
үшін
|
|
s = cos x + cos x ⋅ cos x + + cos x ⋅ cos x ⋅
|
⋅cos x
|
|
|
|
|
n
|
рет
|
|
|
қатарының мəнін есептеңіз.5. Кемпірқосақ доғасының фрагмен-тін салыңыз.
Пернетақтадан енгізілген n, r жəне c үшін радиусы r, түсі с n дөңгелектер тізбегін салатын программа құрыңыз.
15 əр түсті үшбұрыштардан тұратын экран «диагональын» сызыңыз.
Көлемдері бірдей 40 əр түсті тікбұрыштардан тұратын ромб суретін салыңыз.
Пернетақтадан енгізілген n үшін, əр түсті қилысқан дөңгелек-терден тұратын көлемі nxn тор суретін салыңыз.
Көлемдері өсіп отыратын, 36 əр түсті дөңгелектерден тұратын шеңбер салыңыз.
122
6. БАЗАЛЫҚ ҚҰРЫЛЫМДАРДЫ СИПАТТАУ
6.1 Жиымдарды сипаттау. Жиым элементтерін пайдалану
Паскаль тілінде əр айнымалы мен тұрақтының өз типтері болады. Мəндер типіне қарап, осы айнымалы немесе тұрақтыға қолданылатын операциялар жиыны жəне нəтиже типі анық-талады. Паскаль тілінде стандартты типтер жəне тұтынушы анықтайтын типтер бар.
Программада қолданылатын барлық айнымалылар, оларды сипаттайтын VAR бөлімінде жариялануы тиіс.
VAR <идентификатор> [,<идентификатор>,…]: <тип>;
[<идентификатор> [,<идентификатор>,…]: <тип>;…]
Мысалы,
VAR A:INTEGER;
B,C:REAL;
Бұл мысалда А айнымалысы бүтін, ал В жəне С айнымалыла-ры нақты тип ретінде сипатталған.
Тип алдын ала типтерді сипаттайтын TYPE бөлімінде жариялануы да мүмкін.
TYPE <идентификатор типі> = <тип> ; Мысалы,
TYPE I = INTEGER;
R = REAL;
Бұдан кейін А, В жəне С айнымалыларын төмендегідей түрде сипатталады:
VAR A: I;
B,C: R;
Шектелген бір текті мəндер жиыны реттелген стандартты типке (бүтін, байттық, символдық жəне логикалық) жатады.
Саналатын тип – мəндерді тұрақты ретінде өрнектейтін иден-тификаторлардың реттелген жиынын анықтайды. Əрбір осындай элементке компьютер жадының бір байты бөлінеді. Ол жиымның
123
(массивтің) индексі ретінде қолданылады да, оның реттік нөмірі нөлден басталады. Саналатын типтің жазылуы:
TYPE <идентификатор типі> = (<идентификатор> [<идентификатор>,…]);
Аралық (интервалды) тип – белгілі бір айнымалы қабылдай алатын оның мəндері жиынының қажетті бөлігін анықтайды. Аралық типтің екі шеткі – ең кіші жəне ең үлкен мəні беріледі. Əрбір элементке ЭЕМ жадының бір байты бөлінеді. Аралық типтің жазылуы:
TYPE <идентификатор типі> = <тұрақты>. .<тұрақты>; Тұрақты ретінде нақты типтен басқа барлық қарапайым
типтердің мəні қолданыла береді.
Мысалы,
TYPE GR = (DS101, DS102, DS201, DS202, DS301, DS302);
SPEC = DS101..DS302;
DIGIT = 0..9;
VAR A: DIGIT;
B: SPEC;
D: 100..200;
Жолдық немесе тіркестік тип ұзындығы 0-ден 255 символға дейінгі жолдардан тұратын сөз тіркестерін сипаттау үшін қол-данылады. Жолдың, яғни сөз тіркестерінің максимальды ұзын-дығы тік жақша ішіне жазылады. Егер максимальды ұзындық берілмеген болса, ол 255-ке тең деп есептеледі. Тіркестік ай-нымалылар тіркестік тұрақтылар тəрізді компьютер жадында сөз тіркестерінің максимальды ұзындығынан қосымша 1 байтқа (нөлдік) артық орын алады. Турбо Паскальдің ерекшелігі – тіркестік символдардың əрбір элементіне оның нөмірі арқылы қол жеткізуге болады.
TYPE <идентификатор типі> = String [<максимальды ұзындық>];
Мысалы,
TYPE TSTRING = STRING[100];
TS = STRING;
124
VAR S,S1: TSTRING;
S2: STRING[20];
SS: TS;
Жиым (массив) – қасиеттері бірдей, бір типті айнымалылардың реттелген жиыны. Жиым элементтері ішіндегі реттік қатынас индекс арқылы беріледі. Əр элементке бір немесе бірнеше индекс тағайындалады. Егер əр элементке бір индекстен берілсе, онда бұл бір өлшемді жиым (вектор) болып саналады. Ал, екі индекс берілсе – екі өлшемді жиым (матрица) болады да, мұнда бірінші индекс элемент орналасқан жол нөмірін, ал екіншісі бағана нөмірін көрсетеді.
TYPE <идентификатор типі> =ARRAY [<индекстер типі тізімі>] OF <тип>;
<индекс типі> :: = <қарапайым тип>
<қарапайым тип>:: = <идентификатор типі>|<идентифи-
катор> [,<идентификатор>] | <тұрақты>. .<тұрақты>
Индекс ретінде нақты типтен басқа кез келген қарапайым тип қолданыла алады. Мұнда көбінесе бүтін типтің аралық мəндері жиі қолданылады.
Мысалы,
TYPE T1 = ARRAY [-10..20,1..30] OF
BYTE;
T2 = ARRAY [0..50] OF BOOLEAN;
T3 = ARRAY [BYTE] OF INTEGER; VAR A,B: T1;
C: T2;
ARRAY[1..100] OF REAL;
MAS: T3;
Бұл мысалдың типтерді сипаттау бөлімінде жиымның үш түрі келтірілген. T1 – жол нөмірі – 10-нан 20-ға дейін, ал бағана нөмірі 1-ден 30-ға дейін өзгеретін екі өлшемді жиым. T1 жиымы элементтерінің типі – 0-ден 255-ке дейінгі таңбасыз бүтін сандар. T2 – бір өлшемді жиым, элемент нөмірі 0-ден 50-ге дейін өзгеретін логикалық тип. T3 – бір өлшемді жиым, элементтері 0-ден 255-ке дейінгі таңбалы бүтін сандар.
Айнымалыларды сипаттау бөлімінде А жəне В айнымалысы T1 типті, С – Т2 типті, MAS – Т3 типті ретінде сипатталған. Типті алдын ала сипаттаудан басқа, жиымды Z айнымалысы сияқты айнымалыларды сипаттау бөлімінде де жариялауға болады.
125
Жиым элементтерін олардың индекстері арқылы пайдалануға болады. Айнымалыдағы индекстер саны элементтер санына тең. Индекстер бүтін сан, қарапайым айнымалы, арифметикалық өрнек ретінде берілуі мүмкін. Егер екі жиымның сипаттамалары бірдей болса, оларды В:=А меншіктеуі арқылы теңестіріп, көшірмесін алуға мүмкіндік бар.
Мысалы,
...
S:= S + Z[I];
P:= P * A[I][J];
C[6]:= TRUE;
P:= P * A[I,J];
R:= B[I+5,J];
MAS[I]:= MAS[I-1] * MAS[I];
...
Жиымды сипаттаудың түрлі тəсілдерін қарастырайық.
10 жол жəне 50 бағанадан тұратын бүтін типті A матрицасын сипаттау керек.
CONST N = 10; M=50;
TYPE TMATR = ARRAY[1..N, 1..M] OF INTEGER; VAR A: TMATR;
TYPE TSTR = ARRAY [1..50] OF INTEGER; TMATR = ARRAY [1..10] OF TSTR;
VAR A: TMATR;
VAR A:ARRAY[1..10,1..50] OF INTEGER;
VAR A:ARRAY[1..10]OF ARRAY[1..50]OF INTEGER;
Көп жағдайларда кесте, мəтін, жиым жəне т.с.с. біртипті мəлі-меттерді өңдеуге тура келеді. Мұндай мəліметтерді сипаттау үшін құрылымдық мəндер типі қолданылады. Турбо Паскальда төмендегідей құрылымдық мəндер типтері (6.1 сурет) бар:
жиымдар — біртипті немесе кестелік мəліметтерді сипаттау үшін;
жолдар – сиволдық (мəтіндік) мəліметтерді сипаттау үшін;
жиындар – абстрактілі математикалық жиындарды сипаттау үшін;
126
жазбалар – əр түрлі типтегі кестелік мəліметтерді сипаттау үшін;
файлдар – бір типте тізбектеле жазылған мəліметтер жиыны.
6.1-сурет. Типтер құрамы
Жиымдар
Индекс типі оның мүмкін мəнін анықтайды. Индекс типі ретінде longint жəне оның туынды титерінен басқа кез келген рет-телген тип (boolean, char, integer, саналатын тип, сонымен бірге осы типтер диапазоны) көрсетілуі мүмкін.
Индекс типінің санына байланысты бір, екі жəне n өлшемді жиымдар болады. Екі өлшемді жымдар матрица деп аталады жəне бірінші индекс жол нөмірін, екінші индекс бағана нөмірін көрсетеді.
6.2-сурет. Жиымдар типін анықтаудың синтаксистік диаграммасы
Паскаль тіліндегі жиым элементтерінің типі файлдан басқа кез келген тип бола алады. Жиым түріндегі айнымалыны сипат-тау екі тəсілмен іске асырылады:
127
айнымалыларды сипаттау бөлігінде, мысалы:
Var a:array[1..10] of integer; { 10 бүтін сан-нан тұратын жиым}
b:array[byte] of char; {256 символдан тұратын жиым, жиым индексі 0-ден 255-ке дейін өзгереді}
c:array['A'..'C',-5..-3] of byte; {9 сан-нан тұратын матрица}
d:array['A'..'C'] of array [-5..-3] of byte; {құрылымы бойынша алдыңғы матрицаға эквивалентті 9 саннан тұратын матрица}
типін алдын ала сипаттау, мысалы:
Type mas=array[1..10] of integer; { типті
сипаттаймыз}
Var a:mas; {айнымалыны сипаттаймыз}
Турбо Паскальда индекс санына шектеу жоқ. Алайда бір про-граммада қолданылатын индекстердің барлығының саны 65537 байттан аспауы керек.
Программадағы жиым элементтерін үш тəсілмен сипаттауға болады. Біріншіден, жиым типтік тұрақтылар немесе элемент-терге мəн беру арқылы иницализациялануы мүмкін. Екіншіден, жиым элементтері пернетақтадан немесе файлдан енгізуге бо-лады. Үшіншіден, жиым элементтерін программада былай анықтауға:
кездейсоқ сандар генераторы арқылы;
берілген бойынша жəне басқа жиымнан көшіруге болады. Жиымдарды инициализациялау. Инициализацияланатын
(мəндер берілетін) жиымдарды сипаттау үшін Турбо Паскаль-да типтелген тұрақтылар қолданылады. Сəйкес мəндер жақша ішінде, үтір арқылы ажыратылып көрсетіледі. Көп өлшемді жиым элементтері солдан оңға қарай индексінің өсу реті бойынша жа-зылады. Əр ішкі жиым жеке жақшаға алынады. Матрица мəндері бір жолда реттеліп жазылады. Мысалы:
Const a:array[1..5] of real = (0,-3.6,7.8,3.789,5.0);
b:array[boolean, 1..5,] of real = ((0,-3.6,7.8, 3.789,5.0),(6.1,0,-4.56,8.9,3.0));
{жиым төмендегідей инициализацияланады:
128
bfalse,1=0, bfalse,2=-3.6, bfalse,3=7.8, ..., btrue,1=6.1,т.с.с.}
c:array[1..3,0..1,-2..1] of byte = (((3,6,9,6)
,(0,4,3,9)),((5,7,3,1),(45,8,0,2)),((5,9,2,3), (1,5,8,4))); ...
Достарыңызбен бөлісу: |