Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
тапсырма паскаль вариантпен.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
595.97 Кб
Скачать

Программалау (і ) пәнінен Зертханалық жұмыс №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;

Ұсынылатын әдебиет

  1. Абрамов С А,Гнезделова Г Г,Капустина Е Н, Селюн М И Задача по програмированию. М,1988

  2. Абрамов С А,Зима Е В Начала информатики М,1989

  3. Вирт Н Алгоритмы +структуры данных =программы М1985

  4. Голубь Н Г,Кириленко Е Г,Флгоритмические языке и програмирование Учебное пособие,часты 1 хай,1997

  5. Грогоно П.Прогромирование на Паскаль М1982

  6. Джонс Ж., Харроу К. Решение задач в системе Турбо Паскаль. М.,1991.

  7. Йенсен К., Вирт Н. Паскаль: руководство для пользователя. М., 1989.

  8. Касьянов В.Н., Сабельфельд В.К. Сборник заданий по практикуму на ЭВМ. М., 1992.

  9. Мизрохи С.В. TURBO PASCAL и обьектно-ориентированное программирование.М., 1992.

  10. Пильщиков В.Н. Сборник упражнений по языку Паскаль. М.,1997.

  11. Прайс Д. Програмирование на языке Паскаль: Практическое руководство. М.,1987.

  12. Фаронов В.В. Турбо Паскаль 7.0. Начальный курс. Учебное пособие. М.,1997.

  13. Фаронов В.В. Турбо Паскаль 7.0. практика программирования. Учебное пособие. М.,1997.

  14. Фирменная документация и компьютерные справочники(файлы помощи типа HELP).