for i:=1 to 4 do write (ai:5); writeln;
4. Көшiру – бiр массивтiң әрбiр элементiн басқа массивтiң сәйкес элементiне меншiктеу.
for i:=1 to 4 do
ai:=di; {D массивi А массивiне көшiрiледi}
5. Iздеу – массивтегi белгiлi бiр шартты қанағаттандыратын элементтi iздеу.
Массивтегі нольге тең элементтердi санау мысалы:
k:=0; 0-ге тең элементтер k айнымалысында саналады
for i:=1 to 4 do
if ai=0 then k:=k+1;
6. Массив элементтерiнiң мәнiн ауыстыру. Ол үшiн типi массивтiң типiне сәйкес келетiн қосымша айнымалы қолданылады.
Мысал: А3;-2;4;7;0;8 массивiнiң бесiншi және үшiншi элементте-рiнiң мәндерiн ауыстыру керек.
Бағдарлама фрагментi мынадай болады:
v:=a[5]; a5:=a3]; a3:=v {v –қосымша айнымалы, a[5] мәнiн уақытша сақтайды}
Нәтижеде берiлген массив мынадай болады: А 3; -2; 0; 7; 4; 8.
34 мысал. Бiр өлшемдi С массивінің элементтерi индексiнiң квадратына тең болатын, ал К массивiнің элементтерi клавиатурадан енгізілетін және екі массивті экранға шығаратын бағдарлама құру:
Қолданылатын айнымалылар:
С1..10, К1..10 - массивтер.
і-циклдiң параметрiн және элементтiң индексiн бiлдiреді, бүтiн типтi.
Массивтiң элементi оның индексiнiң квадратына тең болатын формуламен толтырылады, яғни Сi=sqr(i). Массив элементiнiң мәнi клавиатурадан енгiзiледi, readln(Кi);
Массивте он элемент болғандықтан, а) және б) толтыру процестерi циклде жүргiзiледi. Массивтiң мәндерiн көру үшiн, әрбiр толтырудан соң оны экранға шығару керек.
program mas_tol;
var с, к: array 1..10 of real; i: integer;
begin
for i:=1 to 10 do
begin
сi := sqr(i); массивтi формуламен толтыру}
write ('массивтiң ', і ,'-шi элементiн енгiз');
readln (кi); {массивтi клавиатурадан енгiзу}
end;
writeln (' С массивi ', ' К массивi ');
for i:=1 to 10 do writeln (сi, кi:15 );
end.
35 мысал. Массивтi клавиатурадан толтырып, пайдаланушы енгiзген санға тең элементтердiң санын және ең бiрiншi тұрғанының номерiн табатын бағдарлама қөру.
Қолданылатын айнымалылар:
n – пайдаланушы енгiзген iзделетiн элементтiң мәнi;
а - массивтегі n-ге тең элементтердiң номерi;
b –массивтегi n-ге тең элементтердiң саны;
і – циклдiң параметрi және элементтiң индексi;
k – массивтегi элементтер саны, ол бағдарламаның тұрақты ша-маларды сипаттау бөлiмiнде жазылады. Себебi, егер элементтер саны өзгеретiн болса, оны тұрақтыны сипаттауда өзгертсе жеткiлiктi.
program elem_iz;
const k=10;
var n:real; a, b, i: byte; m: array [1..10] of real;
begin
for і = 1 to k do readln (m[i]);
a :=0; { мұндай элемент жоқ деп есептеймiз}
b :=0; { басқа элемент табылған жоқ}
write(‘массивтен iздейтiн элементтi енгiз’);
readln(n);
for i := 1 to do k
if m[i] = n then {массивтегi n-ге тең элементтердi iздеу}
begin
if b = 0
then a:= i; {n-ге тең бiрiншi элементтiң номерiн табу}
b := b+1; { элементтердiң санын бiрге арттыру}
end;
if b=0
then writeln (‘массивте мұндай элементтер жоқ‘)
else
begin
writeln(n, ’-ге тең элементтiң саны ‘ ,b);
writeln(‘бiрiншi элементтiң номерi ‘,a);
end; end.
10 зертханалық жұмыс. Жолдық функциялар мен процедураларды пайдалану
Теорялық бөлім
Жол дегеніміз – ұзындығы 255-тен артпайтын символдар тізбегі. Тізбектің мағынасы болуы міндет емес. Мысал: ‘df56’, ‘*d-шар56‘, ‘*-4 лд’
Жолдар string жолдық типпен сипатталады. Жолдық типті анықтағанда ондағы символдар санын көрсетуге болады.
Жазылу форматы:
type
<типтің аты>=string [символдар саны];
var <идентификатор>: <типтің аты>;
String типтегі айнымалыны типті алдын-ала сипаттамай-ақ көрсетуге болады: var <идентификатор>:string[жолдың ұзындығы];
N символдан тұратын жолға жадыдан N+1 байт бөлінеді. N байт-символдарды сақтау үшін, ал бір байт – жолдың ұзындығын сақтау үшін.
Жолдық өрнектер. Олар жолдық тұрақтылардан, айнымалылардан, функциялардан және операция таңбаларынан тұрады. Мысал:’ма’+’ма’
Жолдық процедуралар мен функциялар
Аты, жазылуы
|
Қызметі
|
Ескерту
|
1. жою
delete(a,p,n)
|
a жолындағы р пози-циядан бастап, ұзындығы n символды жояды.
|
p<=255; нәтиже басқа айны-малыға меншіктелмейді.
|
2. кіргізу
insert (a,s,p)
|
a жолын s жолына р по-зициядан бастап кіргізеді.
|
нәтиже басқа айны-малыға меншіктелмейді.
|
3. типті ауыстыру
str(x,a)
|
x сандық шаманы жолға өңдеп, а-ға меншіктейді
|
х-ті шығару форматымен жазуға болады. Х сандық типте, а –жолдық типте.
|
4. типті ауыстыру
val(a,x,c)
|
a жолын сандық шамаға өңдеп, х айнымалыға орналастырады. А жо-лында бос символ болмау керек.
|
c-өңдеу нәтижесі, бүтін сан. Егер өңдеуде қате болмаса c=0 болады. А:string, х сандық типте, c:integer.
|
5.ұзындық
length(a)
|
a жолының ұзындығын табады.
|
Нәтижені айнымалыға меншіктеуге болады.
|
6. ретімен тіркестіру
concat(a,b,..s)
|
a,b,..s жолдарын сол ретімен тіркестіреді
|
-
|
7. белгілеу
copy (a,p,n)
|
a жолынан р позициядан бастап, ұзындығы n символды белгілейді.
|
егер p>length(a) болса, нәтижесі бос символ;
p>255 болса, қате.
|
8. позиция
pos (a,s)
|
a жолы s жолында нешінші позицияда тұрғанын табады.
|
егер a жолы s жолында болмаса, нәтиже=0
|
9.регистрді ауыстыру
upcase(ch)
|
кіші әріпті бас әріпке өзгертеді.
|
тек латын алфавитін ғана.
|
Мысалдар
Берілгені:
|
Қолданылған процедура, функция
|
Нәтиже
|
1.a:=’абвгде’
|
delete(a,4,2)
|
‘aбве’
|
2.s1:=’интика’
s2:=’форма’
|
insert(s2,s1,3)
|
‘информатика’
|
1.var x:integer;
a:string;
-------------
x:=72584
|
str(x,a)
str(-x:7,a)
|
‘72587’
‘-72584’
|
2.var a:string;
cod:integer;
---------------
a:=’25’;
a:=’14.2Е+2’;
a:=’14.2’
|
val(a,x,cod)
val(a,x,cod)
val(a,x,cod)
|
cod=0
cod=0
cod=5
|
3.st:=’1237’
st:=’klassio’
|
length(st)
length(st)
|
4
7
|
4.a1:=’ ab’;
a2:=’cd’;
a3:=’ej’
|
concat(a1,a2,a3)
concat(a1,’nm’,a2)
|
‘abcdej’
‘abnmcd’
|
5.st:=’abcdefjk’
|
copy(st,2,4)
copy(st,5,7)
|
‘bcde’
‘efjk’
|
8.a1:=’abcdef’;
a2:=’def’;
|
pos(a2,a1)
pos(‘e’,a2)
pos(‘k’,a1)
|
4
2
0
|
9.Ch:=’d’
A:=’x’
|
UpCase(Ch)
UpCase(A)
UpCase(‘a’)
|
‘D’
‘X’
‘A’
|
1-мысал. Енгізілген сөздегі ‘a’ әріптерін санау, ‘b’әрпіне ауыстыру.
1- әдіс: Алгоритм:
1.Сөзді енгізу.
2.Сөздің бірінші әрпін белгілеу.
3.Белгіленген символды ’a’ символымен салыстыру.
4.Егер сәйкес болса, санауышты бірге арттыру, сол символдың орнына ’b’ символын қою;
5.Осылайша барлық символдарды қарастыру.
Бағдарлама.
program sanau;
var s:string; n,l,i:byte; {n-‘a’әрпін санауыш }
begin
n:=0; readln(s); l:=length(s); { l сөздің ұзындығы}
for i:= 1 to l do
if copy(s,і,1)=’a’ {кезектегі әріпті белгілеп,
then ’a’ әрпімен салыстыру}
begin
delete (s,і,1); insert(‘b’,s,i);
n:=n+1; { а әрпін санау}
end;
writeln (‘сөзде,’n,’ a әрпі бар’);
end.
2-әдіс. Алгоритм:
1.Сөзді енгізу.
2. ’a’әрпін санайтын санауыш енгізу.
3.Сөздегі ‘a’әрпі тұрған позицияны тауып, сол орынға ‘b’ әрпін жазу.
4.Сөздегі барлық позициялар үшін 3 пунктті қайталау.
5.Нәтижені шығару.
Бағдарлама.
program sanau;
var
s:string; n:byte;
begin
write (‘сөзді енгіз’); readln(s); n:=0;
while pos (‘a’,s)>0 do
begin
n:=n+1; s[pos(‘a’,s)]:=’b’;
end;
writeln (‘сөзде’,n,’ a әрпі бар’);
end.
№12 зертханалық жұмыс. Файлдармен жұмыс істеу процедуралары.
Теориялық бөлім
Өте үлкен көлемді ақпараттарды сыртқы жадыда сақтау ыңғайлы. Мысалы, оқу орнындағы студенттер туралы, кітапханадағы кітаптар туралы, т.с.с. мәліметтер. Бұл ақпараттар бағдарламада файлдар арқылы пайдаланылады.
Файл дегеніміз сыртқы жадыда белгілі бір атпен сақталған деректердің жиыны.
Мәліметтерді файлдармен пайдаланудың себептері:
1. Бағдарламаның жұмыс барысында өте үлкен ақпаратты енгізу көп уақытты алады және адамды жалықтырады. Клавиатурадан енгізілген деректер мен экранға шығарылған нәтижелер сақталмайды, бағдарламаның жұмысы аяқталған соң жоғалып кетеді. Сондықтан, бұл ақпараттар алдын-ала дайындалып, дискіде сақталады да, қажетінше пайдаланыла беріледі.
2. Берілгендер файлын басқа бағдарламамен дайындап бірнеше бағдарламаны бір-бірімен байланыстыруға болады.
3. Бағдарламаның орындалу кезінде пайдаланушының қатысуы міндет емес.
Файлдық тип. Бір бағдарламада бірнеше файлмен жұмыс істеуге болады. Әрбір файл өз атымен аталады. Файлдағы компоненттер бір типте болады. Файлдың ұзындығы алдын-ала анықталмайды, ол құрылғының сыйымдылығына байланысты болады. Файлды бір типтегі мәндердің шексіз тізімі деп қарастыруға болады. Файлдың элементтері нольден бастап нөмірленеді. Файлдың элементтері ағымдағы көрсеткіш арқылы көрсетіліп тұрады. Ағымдағы көрсеткіш бағдарлама жұмысына байланысты бір элементтен екіншіге ауысып тұрады. Кез келген уақытта файлдың бір элементіне ғана қол жеткізуге болады.
1 элемент
|
2 элемент
|
3 элемент
|
4 элемент
|
...
|
|
|
|
|
|
|
ағымдағы көрсеткіш
|
|
Файлдардың элементтерін тізбекті (последовательный) немесе тікелей (прямой) қарастыруға болады. Тізбекті файлдың элементтеріне жазылу реті бойынша қол жеткізіледі. Тікелей қол жетімді файлдың элементтеріне олардың адресі бойынша қол жеткізіледі. Сондықтан, тікелей файлдың кез келген элементін кез келген уақытта пайдалануға болады.
Дискідегі деректер файлы Паскаль бағдарламасымен файлдық айнымалы арқылы байланысады. Бағдарламада көпшілік жағдайда файлдық айнымалыны f арқылы белгілейді.
Бағдарламаның айнымалыны сипаттау бөлімінде файлдық айнымалы былай сипатталады.
var
файлдық айнымалы: file of элементтердің типі;
Мысал:
var
f1, f2:file of integer; f1, f2 - элементтері бүтін типтегі файл.
s1 , s2:file of string; s1, s2- элементтері жолдық типтегі файл.
Файлдарды пайдалану әдістері.
1. Бағдарламаның басында файл мен файлдық айнымалыны байланыстыру қажет. Ол үшін мына процедура қолданылады:
assign(файлдық айнымалы, деректік файлдың аты);
2. Файлмен жұмыс істеу үшін алдымен оны ашу қажет. Файлды пайдалану мақсатына қарай ашудың екі түрі бар:
2.1. Файлдан деректерді оқу үшін –
Reset(файлдық айнымалы);
2.2. Жаңа файлды жасау үшін және оған деректерді жазу үшін
Rewrite(файлдық айнымалы);
3. Ашылған файлдың элементін оқу:
Read(файлдық айнымалы, айнымалы);
4. Ашылған файлға элемент жазу:
Write(файлдық айнымалы, айнымалы);
5. Файлмен жұмыс аяқталған соң файл жабылады:
Close(файлдық айнымалы);
1-мысал: Санды клавиатурадан енгізіп, san.txt файлына жаз.
program file_tip;
var f:text; s:integer;
begin
assign(f1, 'san.txt’); { san.txt файлы f1 айнымалысымен байланыстырылады. }
rewrite(f1); { f1 файлы деректерді жазу үшін ашылады}
readln(s); write(f1, s); { s айнымалысының мәні f1 файлына жазылады}
close(f1); { пайдаланылып болған соң, f1 файлы жабылады}
readln; end.
2-мысал: Деректерді san.txt файлынан оқып, экранға шығар.
Бағдарламаны жазудан бұрын san.txt файлы алдын-ала дайындалады.
program file_tip;
var f1: text; s, n:integer;
begin
assign(f1, 'san.txt’); { san.txt файлы f1 айнымалысымен байланысты}
reset(f1); { f1 файлы деректерді оқу үшін ашылады}
read(f1, s); { f1 файлынан кезектегі элемент оқылып, s айнымалысына беріледі. }
writeln(s); {s айнымалысының мәні экранға шығарылады }
close(f1); {пайдаланылып болған соң, f1 файлы жабылады}
readln;
end.
№13-15 зертханалық жұмыс. Графиктік бейнелерді салу функциялары мен процедуралары.
Теориялық бөлім
Паскаль тілінде графикалық кескіндер жасау үшін, GRAPH модулі қолданылады. Бұл модульде 79 графикалық процедуралар, функциялар, тұрақты шамалар мен типтер орналасқан.
Графиканы жұмысқа қосу мына әрекеттерден тұрады:
uses Graph; {Graph модулін, яғни графикалық процедуралар,
орналасқан кітапхананы іске қосу}
var dv, mv:integer; {dv, mv – екі айнымалысы графикалық
режимді іске қосады}
dv:=Detect; {detect мәнімен қажет графикалық драйвер
мен режим автоматты түрде іске қосылады}
InitGraph(dv,mv,’c:\tP7\BGI’); {graph модулінің
орналасқан жолы көрсетіледі}
If GraphResult<>grOk then Halt(1); {Графикалық режимді
іске қосудағы қатесі тексеріледі}
Осы әрекеттерден соң графикалық операторлар жазылады. Графикалық әрекеттер орындалып болған соң, графикалық режимді жабу керек.
6.CloseGraph; {Графикалық режимді жабу}.
Монитор экраны нүктелер жиынынан тұрады. Графикалық экранда координаталар жазықтығының орналасуы төмендегідей:
Түстер таблицасы
Түстің
номері
|
Түстің аты
|
Түстің номері
|
Түстің аты
|
0
|
Қара
|
8
|
Қою
|
1
|
Көк
|
9
|
Көгілдір
|
2
|
Жасыл
|
10
|
Ашық жасыл
|
3
|
Бирюза
|
11
|
Ашық бирюза
|
4
|
Қызыл
|
12
|
Қызғылт
|
5
|
Малина
|
13
|
Ашық малина
|
6
|
Қоңыр
|
14
|
Сары
|
7
|
Ашық сұр
|
15
|
Ақ
|
Графика элементі
|
Паскальда жазылуы
|
Параметрлеріне сипаттама
|
1
|
2
|
3
|
Нүкте
|
PutPixel(x,y,t)
|
x,y-нүктенің координатасы; t-түсі, санмен беріледі.
|
Кесінді
|
Line(x1,y1,x2,y2)
|
(x1,y1),(x2,y2) ұштарының координаталары
|
Сызық
|
LineТо(x,у)
|
х,у нүктелеріне дейін сызады
|
Тік төртбұрыш
|
Rectangle(x1,y1,x2,y2)
|
(x1,y1),(x2,y2)диагональдың координаталары.
|
Боялған төртбұрыш
|
Bar(x1,y1,x2,y2)
|
(x1,y1),(x2,y2)диагональдың координаталары.
|
Шеңбер
|
Circle(x,y,r)
|
x,y-центрдің координатасы;
r-радиустың ұзындығы.
|
Эллипс
|
Ellipse(x,y,b,s,rx,ry)
|
b,s-эллипстік доғаның басы және соңы.
b =0, s=360 эллипс салады.
rx,ry – x және y бойынша радиустар.
|
Доға
|
Arc(x,y,b,s,r)
|
x,y,b,s,r- жоғарыда
|
Сектор
|
sector(x,y,b,s,rx,ry)
|
x,y, b,s, rx,ry - жоғарыда
|
Сызықтың түсі
|
SetColor(t)
|
t - түс номері, кестеде келтірілген.
|
Бояудың түсі
|
SetFillStyle(t1,t2)
|
t1 - бояу стилінің номері,
t2-бояудың түсі.
|
Текст шығару
|
Outtext(‘текст’)
|
Тексті экранның сол жақ шетіне шығарады.
|
Текст шығару
|
OutTextXY(x,y,’текст’)
|
Тексті көрсетілген координатаға шығарады
|
Көпбұ-рыш салу
|
DrawPoly(n,pp)
|
n -нүктелер саны;
|
Тұйық ай-мақты бояу
|
FillPoly(t, pp)
|
t-бояудың түсі
|
Суретті бағдарламалау мысалы:
program suret;
uses graph;
var dv, mv:integer;
begin dv:=detect;
initgraph(dv, mv,’c:\tp7\bgi’);
if graphresult<>grok then halt(1);
setcolor(5);
rectangle(10,15,610,430);
circle(350,100,50);
setfillstyle(1,6);
bar(100,250,200,300);
readln;
closegraph;
end.
|
program kopburish;
uses graph;
var pp:array[1..5] of PointType;
dv,mv,I,x1,y1:integer;
begin dv:=detect;
initgraph(dv,mv,’c:\ tp7\bgi’);
pp[1].x:=300; pp[1].y:=50;
pp[2].x:=400; pp[2].y:=50;
pp[3].x:=350; pp[3].y:=150;
pp[4].x:=150; pp[4].y:=200;
pp[5]:=pp[1];
DrawPoly(5,pp);FillPoly(3,pp);
readln;
closegraph;
end.
|
program kozgalys;
uses Graph,CRT;
var
x,y,i,dv, mv:integer; x1,x2,y1,y2:integer;
begin
dv:=detect; initgraph(dv,mv, 'c:\bp\bgi');
if graphresult <>grok then halt (1);
x:=460;y:=400; суреттің бастапқы координаталары
for i:=1 to 200 do
begin
setcolor(6);
circle(460,y,40);
ellipse(460,y-40,0,180,20,20);
ellipse(440,y-60,0,90,20,20);
ellipse(480,y-60,90,180,20,20); сурет салынды
ellipse(440,y-40,270,360,20,65);
ellipse(480,y-40,180,270,20,65);
circle(440,y-20,5); circle(480,y-20,5);
circle(440,y+10,5); circle(480,y+10,5);
delay(500); пауза
SetColor(0);
circle(x,y,40);
ellipse(460,y-40,0,180,20,20);
ellipse(440,y-60,0,90,20,20);
ellipse(480,y-60,90,180,20,20); сурет өшірілді, бұл
ellipse(440,y-40,270,360,20,65); фрагментті cleardevice
ellipse(480,y-40,180,270,20,65); процедурасымен circle(440,y-20,5); circle(480,y-20,5); алмастыруға
circle(440,y+10,5); circle(480,y+10,5); болады.
delay(500);
y:=y-1; жаңа координата
end;
SetColor(6);
circle(x,y,40);
ellipse(460,y-40,0,180,20,20); ellipse(440,y-60,0,90,20,20);
ellipse(480,y-60,90,180,20,20); ellipse(440,y-40,270,360,20,65);
ellipse(480,y-40,180,270,20,65);
circle(440,y-20,5); circle(480,y-20,5);
circle(440,y+10,5); circle(480,y+10,5);
readln;
closegraph;
end.
program grafik;
uses Graph,CRT;
var
x,y,i,dv, mv:integer; x1,x2,y1,y2:integer;
begin
dv:=detect; initgraph(dv, mv, 'c:\тр7\bgi');
if graphresult <>grok then һalt (1);
line(300,50,300,400); line(150,400,500,400);
for i:=-100 to 100 do
begin
x:=i; y:=trunc(sqr(x));
putPixel(trunc(x/2+300),trunc(400-y/50),14);
end;
readln;
closegraph;
end.
Пайдаланылатын әдебиет: [2], 101-104 беттер; [1], 336-408 беттер;
.
Достарыңызбен бөлісу: |