
- •Программалау (і) пәнінен Зертханалық жұмыс №1-4 Программа құрылымы. Арифметикалық өрнектердің жазылуы
- •Программалау (і) пәнінен Зертханалық жұмыс №5 Тармақталған алгоритмдерді программалау
- •Программалау (і ) пәнінен Зертханалық жұмыс №6 Таңдау операторы
- •Программалау (і ) пәнінен Зертханалық жұмыс №7 Қайталанатын алгоритмдерді программалау
- •Программалау (і ) пәнінен Зертханалық жұмыс №4 Бір өлшемді массивтер
- •Программалау (і ) пәнінен Зертханалық жұмыс №5 Екі өлшемді массивтер
- •Программалау (і ) пәнінен Зертханалық жұмыс №6 Процедуралар мен функциялар
- •Программалау (і ) пәнінен Зертханалық жұмыс №7 Файлдармен жұмыс
- •Программалау (і ) пәнінен Зертханалық жұмыс №8 Символдық және жолдық деректерді өңдеу
- •Программалау (і ) пәнінен Зертханалық жұмыс №9 Жолдарды сұрыптауда қолданылатын процедуралар мен функциялар
- •Программалау (і ) пәнінен Зертханалық жұмыс №10 Жазбалармен жұмыс
- •Программалау (і ) пәнінен Зертханалық жұмыс №11 Динамикалық айнымалылар мен көрсеткіштер
- •Программалау (і ) пәнінен Зертханалық жұмыс №12 Графикалық режимде қолданылатын процедуралар мен функциялар
Программалау (і ) пәнінен Зертханалық жұмыс №11 Динамикалық айнымалылар мен көрсеткіштер
(3-семестр, 4 сағат)
Жұмыстың мақсаты – динамикалық жадыда массивтер мен матрицаларды қолдану арқылы әр түрлі амалдарды қолданып программасын құру іскерлігі.
Тапсырма. № 4-5 Зертханалық жұмысындағы тапсырмаларды қолдана отырып динамикалық массивтер мен матрицаларға есеп шығару
Бақылау мысалы
1) Far getmem (var p:pointer; size:longint) процедурасы барлық бос оперативті жадыны ерекшелеу программасы
Procedure far_getmem (var p:pointer; size:longint);
Var
R:registers; newsize, dosseg:word;
Begin
Newsize:=(size+15) div 16;
r.bx:=newsize;
r.ah:=$48;
msdos(r);
if r.ax:=$07 then
begin
writeln (‘Жадыны басқаратын блоктар’);
halt (1);
end
else
if r.ax=$08 then
begin
writeln (‘ерекшелеуге болмайды’, size,’ ,байт’);
halt (1);
end
else
p:=ptr(r.ax,0);
end;
2) Берілген функцияда far_getmem процедурасы арқылы жадыны ерекшелеп far_freemem процедурасы арқылы жадыны босатадың программасы
Procedure far_freemem(var p:pointer; size:longint);
Var
r:registers;
segment, dosseg:word;
begin
if ofs (p^)<0 then
begin
p:=nil;
system.freemem(p,1);
end;
segment:=seg(p^);
r.es:=segment;
r.ah:=$49;
msdos(r);
if r.ax=$07 then
begin
writeln (‘жадыны басқаратын блоктар’);
halt(1);
end
else
if r.ax=$08 then
begin
writeln (‘жады getmem процедурасымен ерекшеленген жоқ’);
halt(1);
end;
end.
Программалау (і ) пәнінен Зертханалық жұмыс №12 Графикалық режимде қолданылатын процедуралар мен функциялар
(3-семестр, 4 сағат)
Жұмыстың мақсаты – графикалық режимде қолданылатын процедураларды қолданып есептердің программасын құруға үйрену.
Тапсырма. F(x) нақты функцияны белгілеп, дисплейдің символдық экранында оның графигін құру және ешқандай сандық әдістерін пайдаланбай барлық есептерін графикалық түрде табу.
Тапсырмалар варианттары:
1.F(x)=
аралығындағы
жауап х
=2,2985
2.
аралығындағы жауап х
=-0.2877
3.
аралығындағы жауап х
=0,4538
4.
аралығындағы жауап х
=1,2388
5.
аралығындағы жауап х=1,0769
6.
аралығындағы жауап х=2.42
7.
аралығындағы жауап х=1.8756
8.
аралығындағы жауап x=0.7672
9.
аралығындағы жауап х
=1,1183
10.
[0.08]
аралығындағы жауап х
=0.333
11.
аралығындағы жауап х
=0.5629
12.
аралығындағы жауап х
=3.23
13.
аралығындағы жауап х
=0.8814
14.
аралығындағы жауап х
=1.3749
15.
аралығындағы жауап х
=1.3077
16.
аралығындағы жауап х
=3.5265
17.
аралығындағы жауап х
=0.5472
18.
аралығындағы жауап х
=1.8832
19.
аралығындағы жауап х
=2.0267
20.
аралығындағы жауап х
=0.6533
21.
аралығындағы жауап х
=2.8459
22.
аралығындағы жауап х
=1.0804
23.
аралығындағы жауап х
=1.1474
24.
аралығындағы жауап х
=2.0692
25.
аралығындағы жауап х
=0.9892
26.
аралығындағы жауап х
=1.36016
27.
аралығындағы жауап х
=-0.66242
28.
аралығындағы жауап х
=-0.4145
29.
аралығындағы жауап х
=2.25078
30.
аралығындағы жауап х
=1.496
Бақылау мысалы
а
ралығындағы
Program primer 1;
{y=f(x)кез-келген функциядан графикті құру}
uses crt;
const h=79; {дисплей экранындағы бағаналардың максималды саны}
type position=1…h;
arraya=array[position]of char;
func=function(x:real) :real;
Var y,m :integer;
K,n,j :position;
Ymin,ymax,a,b,dx,x,y,my:real;
Ar :arraya;{экранға шығарылатын символ массиві}
Ch : char;
{к символды экранға шығару}
prosedur graphic(a:arraya:k:position);
Var i:position;
Begin
For i=1 to k do
Write(a[i]);
Writeln;
End;
{I funct} {funct.pas басқа файлдан нақты функцияны енгізу}
{f функцияның [а.б]аралығындағы уmin және ymax табу}
cонымен бірге барлық х0 түбірін экранға шығару}
procedur min,max(f : func;dx,a,b,:real;var ymin, ymax:real)
Var fx,fx:real;
Begin
X:=a;
Ymin:=f(x);
Ymax:=ymin;
Flx:=ymin;
Whilex<=b do
Begin
X:=x+dx;
Fx:=f(x);
{f функцияның түбірін табу варианттарыж
fx-функцияның келесі мәні flx-функцияның алдыңғы мәні}
if fx*fix<0 then {функциясы белгісін өзгертті,х0 түбірін аламыз}
Writeln(‘x0=x-dx/2);
Flx:=fx;
If fx>ymax then ymax:=fx;
If fx<ymin then ymin:=fx ;
End.
End;{minmax}
{басты программа}
begin
repeat
for j:=1to h do ar[j]:=’,{ar массивін тазалау}
сlreser;
for i:=1to n do
begin
with trec do
begin
write(‘surname,’);read(fio);
write(‘year:’);readln(year);
write(‘pleace,’);readln(pleace);
write(‘address:’);readln(addr);
end;
write(fin,trec);
end;
end;
procedure
write (‘нүктелердің санын енгізіңіз =======>’);
readln (m);
write ([a..b] аралығын енгізіңіз======>’);
readln (a,b);
dx:=(b-a)/(m-1);
writeln (‘аралықтағы түбірлердің тізімі’);
minmax (f,dx,a,b,ymin,ymax);
writeln (‘ --------------enter басыңыз-------- ‘);
readln;
my:=75/(ymax-ymin); {y осінің масштабы}
y0:=trunc (2-my*ymin); {Дисплейдің экранындағы y0 жайы}
{графиктің өзі}
x:=a;
while x<=b do
begin
y:=f(x);
if y0 in [1..h] then ar[y0]:=’|‘;
n:=round (my*y)+y0;
if n<y0 then k:=y0
else k:=n;
if x=0 then
begin {ості аламыз-------------------->y}
for j:=1 to h-3 do ar[j]:=’-‘;
ar[h-2]:=’y’;
k:=h;
end;
ar [n]:=’@’; {графиктегі нүктенің символы}
graphic(ar,k);
for j:=1 to h do ar [j]:=’’; {ч щсінің соңы}
begin
ar[y0]:=’v’;
ar[y0+1]:=’x’;
grafic(ar,y0+1);
end;
writeln (‘қайталайық па?(y/n)’);
ch:=readkey;
until (ch=’n’) or (ch=’n’);
end.
Funct.pas ішкі файлдің листингісі
Нақты функция (шынайы сандарының барлық аралығында анықталған);
F(x)=e-x *sinПx
{$f+} {бұл директива pentiun және одан жоғары ПЭЕМ-дерге қажет}
function f(x:real):real;
begin
f:=exp(-x)*sin(2*pi*x)
end;
Ұсынылатын әдебиет
Абрамов С А,Гнезделова Г Г,Капустина Е Н, Селюн М И Задача по програмированию. М,1988
Абрамов С А,Зима Е В Начала информатики М,1989
Вирт Н Алгоритмы +структуры данных =программы М1985
Голубь Н Г,Кириленко Е Г,Флгоритмические языке и програмирование Учебное пособие,часты 1 хай,1997
Грогоно П.Прогромирование на Паскаль М1982
Джонс Ж., Харроу К. Решение задач в системе Турбо Паскаль. М.,1991.
Йенсен К., Вирт Н. Паскаль: руководство для пользователя. М., 1989.
Касьянов В.Н., Сабельфельд В.К. Сборник заданий по практикуму на ЭВМ. М., 1992.
Мизрохи С.В. TURBO PASCAL и обьектно-ориентированное программирование.М., 1992.
Пильщиков В.Н. Сборник упражнений по языку Паскаль. М.,1997.
Прайс Д. Програмирование на языке Паскаль: Практическое руководство. М.,1987.
Фаронов В.В. Турбо Паскаль 7.0. Начальный курс. Учебное пособие. М.,1997.
Фаронов В.В. Турбо Паскаль 7.0. практика программирования. Учебное пособие. М.,1997.
Фирменная документация и компьютерные справочники(файлы помощи типа HELP).