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

Литература

  1. Багласова Т.Г. Методические указания по оформлению курсовых и дипломных работ. - Мн.: ТБП, 2006

  2. Грибанов В.П. и др. Основы алгоритмизации и программирование. - М.: Бином, 1999

  3. Культин Н.Б. Программирование в Turbo Pascal и Delphi. 2-ое изд. переработанное и дополненное. - С-Пб: БХВ-Петербург, 2008

  4. Леонтьев В.П. Новейшая энциклопедия персонального компьютера. - М.: ОЛМА-ПРЕСС, 2002

  5. Фаронов В.В. Delphi. Программирование на языке высокого уровня. - С-Пб: Питер, 2005

  6. ГОСТ 2.106-96. ЕСКД. Текстовые документы

  7. ГОСТ 19.401-2000. ЕСПД. Текст программы

  8. ГОСТ 19.701-90. ЕСПД. Схемы алгоритмов, программ, данных и систем

Приложение а (обязательное) Тексты программ

Листинг А.1 – Программа cтруктурное программирование на языке Pascal

program yp2; {название программы}

uses crt; {вызываем библиотеку}

var a,b,c:real; m:real; {описание переенных}

begin {начало}

clrscr; {очистка экрана }

textbackground(black); {цвет экрана}

textcolor(lightgreen); {цвет текста}

Writeln('Programma ');

Writeln('--------------------------');

Write('vvedite storony trey-ka a= '); {введите сторону а }

read(a);

Write('vvedite storony trey-ka b= '); {введите сторону б }

read(b);

Write('vvedite storony trey-ka c= '); {введите сторону с }

read(c);

m:=sqrt(2*(a*a)+2*(c*c)-b*b)/2;

Writeln('--------------------------');

Writeln('Otvet=',m:5:0); {вывод ответа и округление}

readln; {переход на новую строку}

readkey; {задержка экрана}

end. {конец}

Листинг А.2 – Программа пошаговая детализация на языке Pascal

program yp34; {название программы}

uses crt; {вызываем библиотеку}

var a,b,c:real; m:real; {описание переменных}

procedure Abort(Msg: string); {описание и реализация процедуры Abort}

begin {начало}

clrscr; {очистка экрана }

Writeln('Ошибка: ', Msg);

Halt(1);

end ;

textbackground(black); {цвет экрана}

textcolor(lightgreen); {цвет текста}

Writeln('Programma ');

Writeln('--------------------------');

Write('vvedite storony trey-ka a= '); {введите сторону а }

read(a);

Write('vvedite storony trey-ka b= '); {введите сторону б }

read(b);

Write('vvedite storony trey-ka c= '); {введите сторону с }

read(c);

m:=sqrt(2*(a*a)+2*(c*c)-b*b)/2;

Writeln('--------------------------');

Abort(' остановка программы'); {Вызов процедуры}

Writeln('Otvet=',m:5:0); {вывод ответа и округление}

readln; {переход на новую строку}

readkey; {задержка экрана}

end. {конец}

Листинг А.3 – Программа массивы на языке Pascal

program yp5_1 ; {название программы}

uses crt; {вызываем библиотеку}

var a:array[1..10,1..10]of integer; {переменные}

i,j,k:integer; t:boolean;

begin {начало}

clrscr; {очистка экрана}

randomize;

for i:=1 to 10 do

begin

t:=false; {присваиваем значение}

for j:=1 to 10 do

begin

a[i,j]:=random(10)-1;

write(a[i,j],' '); {вывод массива}

if a[i,j]<0 then t:=true; {если<0}

end;writeln;

if t=true then inc(k);

end; writeln;

writeln('kolichestvo strok = ',k); {ответ}

readln;

end.

Листинг А.4 – Программа строки на языке Pascal

program yp5_2; {название программы}

uses crt; {вызываем библиотеку}

var s1,s2,s3:string; i,p:byte; {переменные}

begin {начало}

writeln('vvedite S1:'); {ввод строк с клавиатуры}

readln(S1);

writeln('vvedite S2:');

readln(S2);

writeln('vvedite S3:');

readln(S3);

p:=0;

for i:=1 to length(s1)-length(s2) do {цикл }

if copy(s1,i,length(s1))=s1 then p:=i;

if p=0 then write(' ',s1,' v ')

else

begin

insert(s2,s1,p);

delete(s1,p+length(s3),length(s2));

Writeln('--------------');

write(s1);

end;

readkey; {задержка экрана}

readln

end. {конец}

Листинг А.5 – Программа записи на языке Pascal

Program yp5_3; {название программы}

Type {раздел type}

Prog_Type=record {описание переменных}

Title:string[50]; Author:String[50];

Entry:Integer; Firma:String[40];end;

Var Prog_Katalog:Array[1..10] of Prog_Type;

Num_Array:1..10; {массив}

Author:String[50];

Yes_Prog:Boolean;

Procedure Input_Data; {процедура}

Begin

Writeln('vvedite dannue o programme ',Num_Array,':');

With Prog_Katalog[Num_Array] do

begin

Write('name progranmmy: '); Readln(Title); {ввод данных }

Write('Familia:'); Readln(Author);

Write('Data rozhdenia:'); Readln(Entry);

Write('gruppa:'); Readln(Firma);

Writeln; end; end;

Procedure Write_Data(Num:Integer); {процедура}

begin

Writeln('programma 2',Num);

With Prog_Katalog[Num_Array] do

begin

Writeln('nazvanie:',Title);

Writeln('familia:',Author);

Writeln('data rozdenia:',Entry);

Writeln('gruppa:',Firma);

end;

end;

Begin {основная программа}

for Num_Array:=1 to 3 do Input_Data;

Writeln;

Writeln('poisk info po familii : ');

Writeln;

Write('vvedite famili : ');

Readln(Author);

Yes_Prog:=False;

for Num_array:=1 to 10 do

if Prog_Katalog[Num_Array].Author=Author then

begin

Write_Data(Num_Array);

Yes_Prog:=True;

end;

if not Yes_Prog then Write('net dannoy familii ');

end.End;readkey;readln end.

Листинг А.6 – Программа оформление и подключение модуля на языке Pascal

program yp67_1 ; {название программы}

uses Crt; {вызов библиотеки}

var a:array[1..100] of integer; { массив}

n,i,j:integer; {переменные}

begin {начало}

ClrScr; {очистка экрана}

randomize; {выбор случайных чисел}

write('Razmer massiva n='); {размер массива}

readln(n);

writeln('isxodnyi massiv:'); {вывод исходного массива }

for i:=1 to n do {цикл от 1 до n}

begin {начало}

a[i]:=random(4);

write(a[i],' '); { выод массива}

end; {конец цикла}

writeln; {переход на новую строчку}

i:=1; {присваивание}

while i<=n do {если i<n to }

if a[i]=0 then

begin {начало цикла}

for j:=i to n-1 do {цикл }

a[j]:=a[j+1];

n:=n-1;

end {конец цикла}

else i:=i+1;

writeln('massiv bez nolei:'); {вывод массива без нулей }

for i:=1 to n do {повторять от 1 до n }

write(a[i],' '); {вывод ответа }

readln

end. {конец программы}

Листинг А.7 – Программа рекурсия на языке Pascal

program yp67_2 ; {название программу}

uses

crt; {вызываем библиотеку}

type

Tinf=integer;

TList=record {запись}

data:TInf; next:List; end; {переменные}

procedure AddElem(var stek1:List;znach1:TInf); {описание процедуры}

var {переменные}

tmp:List;

begin {начало программы}

GetMem(tmp,sizeof(TList));

tmp^.next:=stek1; tmp^.data:=znach1; {добавляем к элементу данные}

stek1:=tmp;

end; {Процедура вывода очереди начиная с хвоста}

procedure Print(stek1:List);

begin

if stek1=nil then {проверка на пустоту очереди}

begin

writeln('ЋзҐаҐ¤м Їгбв*.');

exit;

end;

while stek1<>nil do {пока указатель stek1 не станет указывать в пустоту}

begin {а это произойдёт как только он перейдёт по ссылке последнего элемента}

Write(stek1^.data, ' '); {выводить данные}

stek1:=stek1^.next {и переносить указатель в начало очереди}

end;

end; {Процедура освобождения памяти занятой очередью}

Procedure FreeStek(stek1:List);

var tmp:List;

begin

while stek1<>nil do {пока stek1 не станет указывать в "пустоту" делать}

begin

tmp:=stek1; {указатель tmp направим на хвост очереди}

stek1:=stek1^.next; {хвост очереди перенесём на следующий за данным элементом элемент}

FreeMem(tmp,SizeOf(Tlist)); {освободим память занятую под удаляемый элемент}

end;

end;

var

Stk, {переменная, которая всегда будет указывать на "хвост" очереди}

Stk1,

tmp,max:List; {рабочая переменная}

znach:Tinf; {данные вводимые пользователем}

n:integer;

begin

randomize;

repeat

clrscr;

Writeln('Vvedute kolu4ectvo elementov v pervoi o4eredu');

Write('N= '); readln(n);

until n>0;

stk:=nil;

while n>0 do

begin

znach:=random(1000);

AddElem(stk,znach);

dec(n);

end;

repeat

clrscr;

Writeln('Vvedute kolu4ectvo elementov vo vtopoi o4eredu');

Write('N= ');

readln(n);

until n>0;

while n>0 do

begin

znach:=random(1000);

AddElem(stk1,znach);

dec(n);

end;

clrscr;

Writeln('PerVa9 o4ered''');

Print(stk);

Writeln; writeln;

Writeln('Vtopa9 o4ered''');

Print(stk1);

Writeln; writeln;

tmp:=stk;

max:=tmp;

while tmp<>nil do

begin tmp:=tmp^.next;

if tmp^.data>max^.data then

max:=tmp;

end; Writeln('Makcumal'' Hblu elemeHt= ',max^.data);

writeln; Writeln('/7oLu4uBLLia9c9 o4ered''');

tmp:=max^.next;

max^.next:=stk1;

while stk1^.next<>nil do

stk1:=stk1^.next;

stk1^.next:=tmp;

Print(stk);

readln;

FreeStek(stk);end.

Листинг А.8 – Программа косвенная рекурсия на языке Pascal

program yp89; {название программы}

uses crt; {вызов библиотеки}

var i:longint; {переменные}

procedure Rec1(i:longint;p:real); forward; {процедура}

procedure Rec2 (i : longint;p:real); {процедура}

begin {начало}

Rec1(i,p); {вызов процедуры}

end; {конец}

procedure Rec1(i:longint;p:real); {описание процедуры}

var x:real; {перемнные}

begin {начало}

if i > 0 then {условие}

begin {начало}

p:=sqrt(p+sqrt(sqr(i))); {формула}

Rec2 (i-1,p); {вызываем процедуру 2 из 1-й}

end {конец}

else

begin write(p:2:10); end; {вывод значения и округление}

end; {конец}

begin {начало}

clrscr; {очистка экрана}

write('vvedite i:'); {ввод i}

readln(i);

rec1(i,0); {вызов процедуры1}

repeat until keypressed; {приостановка }

end. {конец}

Листинг А.9 – Программа бинарный поиск на языке Pascal

Program yp1013_1; {название программы}

Uses Crt; {вызываем библиотеку}

Const Maximum=100;

Type DataType=Integer; {раздел type}

DataIn=array [1..Maximum]

of Integer;

Var WorkArray:DataIn; i:Byte; { переменные }

Function Poisk2

(Vx:DataIn;N:Integer;K1:DataType):Integer; {Pпоиск2}

Var L,U,Middle:Integer; Rez:Boolean; j:Integer;

begin

L:=1; { значение = 1}

Rez:=False;

While (L<=U) and (not Rez) do

begin {начало}

middle:=(L+U)div 2;

If K1<Vx[Middle] then

U:=Middle-1

Else If K1>Vx[Middle] then

L:=Middle+1

Else Rez:=True;

end;

If Rez=True then

Poisk2:=Middle {поиск 2}

Else Poisk2:=0;

end;

Begin {Основная программа}

ClrScr; {очистка}

for i:=1 to 10 do

begin

writeln('vvedite 1-',i,' el-t мassiva');

readln(WorkArray[i]);

end;

Case Poisk2(WorkArray,10,6) of

0:Writeln('takogo znachenia нet') {вырд ответа если нет 6 }

Else Writeln('vpervue cifra

6 poyavilas pod nomerom

',Poisk2(WorkArray,10,6));

end;

repeat until keypressed; {приостановка}

End. {конец}

Листинг А.10– Программа сортировка включением на языке Pascal

Program yp10132; {название прграммы}

Uses crt; {вызывамем библиотеку}

Var A:array [1..2,1..2] of integer; n1,n2:real; {переменные}

S:integer;i,j:integer;

Begin {начало}

TextBackGround(8); {цвет фона}

TextColor(10); {цвет символов}

Clrscr; {очитстка экрана}

Writeln ('---------------------------------------');

Writeln (' 1-i massiv AX(N)');

Writeln ('---------------------------------------');

for i:=1 to 2 do {цикл}

for j:=1 to 2 do {цикл}

begin {начало}

write('Vvedite ',i,',',j,' element matricy: '); {ввод элементов массива}

readln(A[i,j]);

end; {конец}

for i:=1 to 2 do

if (i >5) then

for j:=1 to 2 do

begin readln(a[i,j]);

end;

Writeln ('------------------------------');

for i:=1 to 2 do begin

for j:=1 to 2 do begin

write(A[i,j]:6); {округление}

end; writeln; end;

Writeln ('-------------------------------');

Writeln(a[i,j]); {выод }

Writeln (' 2-i massiv C(K)');

Writeln ('-------------------------------');

for i:=1 to 2 do

for j:=1 to 2 do

begin

write('Vvedite ',i,',',j,' element matricy: '); {ввод исел массива}

readln(A[i,j]);

end; for i:=1 to 2 do if (i >5) then

for j:=1 to 2 do begin readln(n1);

end; Writeln('--------------------------');

for i:=1 to 2 do begin

for j:=1 to 2 do begin

write(A[i,j]:6); {okruglenie}

end; writeln; end;

TextBackGround(black); TextColor(yellow);

writeln; Writeln ('------------------------------');

Writeln ('3-i massiv(is 1-go i 2-go) is chisel >5');

Writeln ('------------------------------');

for i:=1 to 4 do begin for j:=1 to 4 do begin

write(A[i,j]:6); end; writeln; end;

Writeln ('-------------------------------');

writeln(n1:5:0); Writeln ('-----------The_End-------------');

Readln; End.

Листинг А.11– Программа обменные сортировки на языке Pascal

program yp1013_3;

uses crt;

var i,n,k,x,z,j,l:integer;

ax:array[0..100] of integer;

c:array[1..100] of integer;

Procedure Razd_Sort

(n:integer;Var ax:array of integer); {процедура}

Procedure Sort1(l,r:integer);

Var w,x,i,j:integer;

Begin

i:=l; j:=r;

x:=ax[(l+r) div 2];

Repeat

While ax[i]<x Do i:=i+1;

While ax[j]>x Do j:=j-1;

If i<=j Then

begin

w:=ax[i];

ax[i]:=ax[j];

ax[j]:=w;

i:=i+1;

j:=j-1

end

Until i>j;

If l<j Then Sort1(l,j);

If i<r Then Sort1(i,r);

End;{Sort1}

BEGIN

Sort1(1,n);

END;{Quick_Sort}

begin

randomize;

clrscr;

writeln('vvedite kolichestvo elementov v 1 massive : ');

read(n);

writeln('vvedite kolichestvo elementov v 2 massive : ');

read(k);

for i:=1 to n do

begin

ax[i]:=random(20)-10;

write(' ',ax[i]);

end;

writeln;

writeln('--------------------------- ------------------------------');

for i:=1 to k do

begin

c[i]:=random(20)-10;

write(' ',c[i]);

end;

writeln;

writeln('--------------------------- ------------------------------');

readkey;

l:=n+k;

for i:=n+1 to l do

begin

z:=z+1;

ax[i]:=c[z];

end;

writeln;

for i:=1 to l do {вывод нового значения}

begin

write(' ',ax[i]);

end;

writeln;

writeln('--------------------------- ------------------------------');

Razd_Sort(l,ax);

for i:=1 to l do {вывод упорядоченных значений }

begin

write(' ',ax[i]);

end;

readkey;

writeln;

writeln('--------------------------- ------------------------------');

for i:=1 to l do

begin

if (ax[i]<0) then {поиск}

begin

x:=ax[i];

end;

write(' ',ax[i]); {вывод массива}

end;

writeln;

writeln ('samoe bolwoe otricatelnoe chislo =', x);

readkey;

end.

Листинг А.12– Программа сортировка разделением на языке Pascal

const

n=12;

m=6;

var {переменные}

arr1: array[1..n] of integer;

min1, i, buf1: integer;

arr2: array[1..m] of integer;

min2, k, buf2: integer;

begin {начало}

min1:=1; min2:=1;

writeln('1-i massiv: ');

for i:=1 to n do

begin

arr1[i]:=random(100);

write(arr1[i], ' ');

if arr1[i]<arr1[min1] then min1:=i;

end;

buf1:=arr1[min1];

arr1[min1]:=arr1[12];

arr1[12]:=buf1;

writeln;

writeln('peredelannyi 1-i massiv: '); {вывод массива 1}

for i:=1 to n do

write(arr1[i], ' ');

writeln;

writeln('2-i massiv: '); {вывод массива 1}

for k:=1 to m do

begin

arr2[k]:=random(100);

write(arr2[k], ' ');

if arr2[k]<arr2[min2] then min2:=k;

end;

buf2:=arr2[min2];

arr2[min2]:=arr2[6];

arr2[6]:=buf2;

writeln;

writeln('peredelannui 2-i massiv : ');

for k:=1 to m do

write(arr2[k], ' ');

readln;

end. {конец}

Листинг А.13– Программа обработка динамических массивов на языке Pascal

uses crt; {вызываем библиотеку}

type mas=array[1..64] of shortint;

var i,n:byte; {раздел переменных}

qwe:^mas;

a:mas;

procedure qwerty; {описание процедуры}

begin

qwe:=@a;

for i:=1 to n do

begin

if i=6 then textcolor(11) else textcolor(10);

write(qwe^[i]:5);

end;

writeln;

end;

begin

clrscr; {очистка экрана}

randomize;

write('Vvedite razmer massiva: ');

readln(n);

clrscr;

textcolor(14);

write('SluchainbIi massiv: ');

for i:=1 to n do a[i]:=random(66)-random(66);

qwerty;

writeln;

qwe:=@a;

write('Nechtnbie elementi massiva : ');

for i:=1 to n do if i mod 2=1 then write(qwe^[i]:5);

writeln;

writeln;

write('Shestoi element: ');

qwe:=ptr(seg(a[1]),ofs(a[1])+(sizeof(byte)*5));

writeln(qwe^[1]);

write('UmenshennbIi v dvoe pyatii element: ');

qwe^[1]:=qwe^[1] div 2;

writeln(qwe^[1]);

writeln;

write('PoluchennbIi massiv: ');

qwerty;

readkey; {приостановка}

end. {конец}

Листинг А.14– Программа oрганизация списков на языке Pascal

Program YP; {название программы}

Uses Crt; {вызываем библиотеку}

Type

NameStr = String [20];

Link = ^Auto;

Auto = record

Name : NameStr;

Kod: String;

Next : Link;

Cen:real;

end;

Var P,First : Link;

NamFind : NameStr;

V : 0..4;

EndMenu : boolean;

Function FindName(FN:NameStr) : Link; {функции и процедуры}

Var Curr : Link;

begin

Curr:=First;

while Curr <> Nil do

if Curr^.Name=FN then

begin

FindName:=Curr;

Exit;

end

else Curr:=Curr^ .Next;

FindName:=Nil;

end;

procedure AddFirst(A:Link);

begin

A^. Next:=First;

First:=A;

end;

procedure DelFirst(var A:Link);

begin

A:=First;

First:=First^. Next;

end;

procedure DelAfter(Old:Link; var A:Link);

begin

A:=Old^.Next;

Old^.Next:=Old^.Next^.Next;

end; {Љ®*Ґж DelAfter}

procedure InpAvto;

begin

P:=New(Link);

Writeln('Vvedite diagonalb tv: ');

Readln(P^.Name) ;

Writeln('Vvedite marky tv: ');

Readln(P^.Kod);

writeln('Vvedite ceny tv: ');

readln(P^.Cen);

AddFirst(P);

end;

procedure MyList;

var Curr : Link;

begin

Curr:=First;

while Curr <> Nil do

begin

Writeln('Diogonalb: ' , Curr^. Name);

writeln('Marka: ', Curr^. Kod) ;

writeln('Cena: ', Curr^. cen:0:0);

Curr:=Curr^.Next;

end ;

Write('Vivod spiska okonchen. Najmite Enter');

Readln;

end;

Begin

New(P);

EndMenu:=False ;

repeat

ClrScr;

Writeln('Ykajite vid raboti: ');

Writeln('1. Zapis v pervii spisok');

Writeln('2. Ydalenie pervogo obkta iz spiska');

WriteLn('3. Prosmotr vsego spiska') ;

Writeln('4.Ydalenie obekta ') ;

WriteLn('0. Okonchanie raboti');

Readln(V) ;

Case V of

1 : InpAvto;

2 : DelFirst(P);

3 : MyList;

4 : begin

Write('Vvedite naimenovanie zapisi sledyushego za ykazannim :');

Readln(NamFind) ;

DelAfter(FindName(NamFind),P);

FindName(NamFind)

end

else EndMenu:=True;

end;

until EndMenu;

Dispose(p);

readln;

end.

Листинг А.15– Программа модуль GRAPH на языке Pascal

uses graph;

var

mx,my:real;

x0,y0,grD,grM,i,k:integer;

s:string;

begin

grD:=detect;

initgraph(grD,grM,'');

X0:=getmaxX div 2; {начало координат в центре экрана}

Y0:=getmaxY div 2;

k:=10; {количество засучек}

mx:=(x0-20)/10;

my:=(y0-20)/10;

SetBkColor(7); {цвет фона}

setlinestyle(0,0,1); {сплошная линия}

SetColor(1); {цвет линий осей}

line(0,y0,getmaxX,y0); {ось Х}

line(x0,getmaxy,x0,0); {ось У}

setlinestyle(1,0,0); {пунктирная линия}

Setcolor(9); {цвет сетки}

for i:=1 to k do {максимальное количество засечек в одну сторону}

begin

line(10,y0-round(i*my),630,y0-round(i*my));

line(10,y0+round(i*my),630,y0+round(i*my));

line(x0+round(i*mx),0,x0+round(i*mx),getmaxY);

line(x0-round(i*mx),0,x0-round(i*mx),getmaxY);

str(i,s);

outtextXY(x0-15,y0-round(i*my),s); {соответственно засечкам}

outtextXY(x0-25,y0+round(i*my),'-'+s);

outtextXY(x0+round(i*mx),y0+10,s);

outtextXY(x0-round(i*mx),y0+10,'-'+s);

end; {центр}

outtextXY(x0+5,y0+10,'0'); {подписи концов осей}

outtextXY(getmaxX-10,y0-10,'X');

outtextXY(x0-10,10, 'Y');

readln

end.

Листинг А.16– Программа объектно-ориентированное программирование на языке Pascal

Program graphika2; {название}

uses crt, graph; {вызываем библиотеку}

Procedure Graphinterface;

Var  gd, gm, error:Integer; {переменные}

s:String;

Begin {начало}

gd:=detect;

s:=' ';

Initgraph(gd,gm,s);

error:=GraphResult;

if error<>GrOk then

begin

writeln(GraphErrorMsg(Error));

Halt(error)

end

end; {вывод линий}

begin

Graphinterface;

randomize;

repeat

setcolor (random(15));

line (random (200), random (200),

random (200), random (200));

delay (10)

until keypressed;

end. {конец}

Приложение Б