Литература
Багласова Т.Г. Методические указания по оформлению курсовых и дипломных работ. - Мн.: ТБП, 2006
Грибанов В.П. и др. Основы алгоритмизации и программирование. - М.: Бином, 1999
Культин Н.Б. Программирование в Turbo Pascal и Delphi. 2-ое изд. переработанное и дополненное. - С-Пб: БХВ-Петербург, 2008
Леонтьев В.П. Новейшая энциклопедия персонального компьютера. - М.: ОЛМА-ПРЕСС, 2002
Фаронов В.В. Delphi. Программирование на языке высокого уровня. - С-Пб: Питер, 2005
ГОСТ 2.106-96. ЕСКД. Текстовые документы
ГОСТ 19.401-2000. ЕСПД. Текст программы
ГОСТ 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. {конец}
Приложение Б
