Програмирование на языке Паскаль

Автор работы: Пользователь скрыл имя, 31 Января 2011 в 15:52, курсовая работа

Описание работы

Процедуры и функции представляют собой важный инструмент Турбо Паскаля, позволяющий писать хорошо структурированные программы. В структурированных программах обычно легко прослеживается основной алгоритм, их нетрудно понять любому читателю, они проще в отладке и менее чувствительны к ошибкам программирования. Все эти свойства являются следствием важной особенности процедур (функций), каждая из которых представляет собой во многом самостоятельный фрагмент программы, связанный с основной программой лишь с помощью нескольких параметров.

Содержание работы

Введение______________________________________________________________3

1.Задание на курсовую работу ________________________________________3
2.Анализ задания ___________________________________________________3
3.Разработка структур данных ________________________________________4
4.Разработка алгоритмов_____________________________________________5
5.Текст программы__________________________________________________9
6.Тестирование программы___________________________________________20
7.Руководство пользователя __________________________________________22
Заключение____________________________________________________________26

Список использованных источников_______________________________________

Файлы: 1 файл

Курсовик.doc

— 601.50 Кб (Скачать файл)

evmousedown:

begin

makelocal(mousewhere,r);

location:=delta.y+r.y;

scrolldraw

end;

evkeydown:

case event.keycode of

kbgrayminus:if location>delta.y then

begin

dec(location); scrolldraw

end;

kbgrayplus:if location<delta.y+pred(size.y) then

begin

inc(location);

scrolldraw

end;

end;

end;

end;

{_______________________________________________}

constructor twin.init(bounds:trect); {инициализация прокрутки}

var

hs,vs:pscrollbar;

interior:pinterior;

begin

twindow.init(bounds,'',0);

getcliprect(bounds);

bounds.grow(-1,-1);

vs:=standardscrollbar(sbvertical+sbhandlekeyboard); hs:=standardscrollbar(sbhorizontal+sbhandlekeyboard);

interior:=new(pinterior,init(bounds,hs,vs));

insert(interior);

readmas;

end;

{_______________________________________________}

procedure tinputwindow.handleevent;

begin

inherited handleevent(event);

if event.what=evcommand then

endmodal(event.command);

end;

{_______________________________________________}

procedure tmatrix.PrintMatrix; {Вывод рабочей матрицы в окне}

var

i,j:integer; {счётчики}

sr:string;

r:trect;

begin

r.assign(0,0,80,23);

wind:=new(pwind,init(r));

desktop^.insert(wind);

with wind^ do

begin

r.assign(2,1,70,3);

insert(new(pstatictext,init(r,'Рабочая матрица:')));

for i:=1 to n do

begin

for j:=1 to m do

begin

    str(mxx[i,j],sr);

    r.assign(1+j*4,1+i,4+j*4,3+i);

    insert(new(pstatictext,init(r,sr))); {выводим матрицу}

end;

end;

r.assign(2,i+2,70,4+i); insert(new(pstatictext,init(r,'_____________________________________________')));

end;

end;

{_______________________________________________}

procedure tmatrix.initmenubar; {Инициализация панели меню}

var

r:trect;

begin

getextent(r);

r.b.y:=succ(r.a.y);

menubar:=new(pmenubar,init(r,newmenu(

newsubmenu('Ввод',hcnocontext,

newmenu(

newitem('Ручной','F3', kbf3,cmvvod,hcnocontext,

newitem('Автоматический','F4',kbf4,cmvval,hcnocontext,

newitem('Из файла','F7',kbf7,cmisfl,hcnocontext,

newline(

newitem('Выход','Alt+X',kbaltx,cmquit,hcnocontext,nil)))))),

newsubmenu('Результат',hcnocontext,

newmenu(

newitem('Все подматрицы','F5', kbf5,cmvvse,hcnocontext,

newitem('По условию','F6',kbf6,cmvusl,hcnocontext,

newline(

newitem('Записать все','F7', kbf7,cmfilv,hcnocontext,

newitem('Записать по условию','F8',kbf8,cmfilu,hcnocontext,

nil)))))),

newitem('О программе','F1', kbf1,cmvhel,hcnocontext,nil))) )))

end;

{_______________________________________________}

procedure tmatrix.initstatusline; {Инициализация строки состояния}

var

r:trect;

begin

getextent(r);

r.a.y:=pred(r.b.y);

statusline:=new(pstatusline,init(r,newstatusdef(0,$ffff,newstatuskey('Alt+X-Выход',kbAltX, cmQuit,nil),nil)));

disablecommands(wincoml);

enablecommands(wincom2)

end;

{_______________________________________________}

procedure tmatrix.GetRandomMatrix; {Автоматический ввод матрицы}

var

i,j:integer; {счётчики}

a,pred,s_i,s_j,s_pred:integer;

r:trect; col,row,max: PInputLine;

inputwindow,inputw:pinputwindow;

begin

r.assign(15,5,65,16);

inputwindow:=new(pinputwindow, Init(r, 'Автоматический ввод'));

with inputwindow^ do

begin {выводим модальное окно, в котором вводим количество строк, столбцов и мак. значение}

r.Assign(37,2,45,3);

col:=New(PInputLine, Init(r,4));

Insert(col); r.Assign(2,2 , 35,3);

Insert(New(PLabel, Init(r, 'Количество строк матрицы', col)));

r.Assign(37,4,45,5);

row:=New(PInputLine, Init(r,4));

Insert(row); r.Assign(2,4,35,5);

Insert(New(PLabel, Init(r, 'Количество столбцов матрицы', row)));

r.Assign(37,6,45,7);

max:=New(PInputLine, Init(r,4)) ;

Insert(max); r.Assign(2,6,35,7);

Insert(New(PLabel, Init(r, 'Максимальное значение элемента', max)));

r.Assign(19,8,32,10);

Insert(New(PButton, Init(r, 'OK', cmOk, bfdefault)));

  end;

if desktop^.execview(inputwindow)=cmok then

begin {вводим элементы в матрицу}

inputwindow^.getdata(data);

val(data.col,n,s_i);

val( data.row,m,s_j)   ;

val(data.max,pred,s_pred) ;

for i:=1 to  N do

for j:=1 to M do

    begin

    a:=random(pred)+1;

    Mxx[i,j]:=a;

        end;

mf:=true; {флаг ввода исходной матрицы}

dispose(inputwindow,done);

enablecommands(wincoml);

tmatrix.printmatrix; {выводим рабочую матрицу}

end;

end;

{_______________________________________________}

procedure tmatrix.InputMatrix; {Ручной ввод матрицы}

var

i,j,s_i,s_j:integer; {счётчики}

a:integer;

r:trect;

col,row,c: PInputLine;

inputwindow,inputw:pinputwindow;

s,t:string;

begin

r.assign(15,5,65,16);

inputwindow:=new(pinputwindow, Init(r, 'Ручной ввод'));

with inputwindow^ do

begin {выводим модальное окно, в котором вводим количество строк, столбцов}

r.Assign(37,2,45,3);

col:=New(PInputLine, Init(r,4));

Insert(col);

r.Assign(2,2 , 35,3);

Insert(New(PLabel, Init(r, 'Количество строк матрицы', col)));

r.Assign(37,4,45,5);

row:=New(PInputLine, Init(r,4));

Insert(row);

r.Assign(2,4,35,5);

Insert(New(PLabel, Init(r, 'Количество столбцов матрицы', row)));

r.Assign(19,8,32,10);

Insert(New(PButton, Init(r, 'OK', cmOk, bfdefault)));

 end;

if desktop^.execview(inputwindow)=cmok then

begin {водим элементы матрицы в окне}

inputwindow^.getdata(data);

val(data.col,n,s_i);

val( data.row,m,s_j);

dispose(inputwindow,done);

for i:=1 to N do

for j:=1 to M do

begin

    str(i,t);

    str(j,s);

    r.assign(15,5,65,16);

    inputwindow:=new(pinputwindow, Init(r, 'Ввод элемента матрицы'));

    with inputwindow^ do

    begin

    r.Assign(2,4,35,5);

    Insert(New(PLabel, Init(r, 'Элемент матрицы'+'['+t+','+s+']', c)));

    r.Assign(37,4,45,5);

    Insert(New(PInputLine, Init(r,4)));

    r.Assign(19,8,32,10);

    Insert(New(PButton, Init(r, 'OK', cmOk, bfdefault)));

       end;

    if desktop^.execview(inputwindow)=cmok then

    begin {заносим в матрицу Mxx значения}

    inputwindow^.getdata(data);

    val(data.col,a,s_i);

    Mxx[i,j]:=a;

    dispose(inputwindow,done);

    end;

end;

mf:=true; {флаг ввода исходной матрицы}

enablecommands(wincoml);

tmatrix.printmatrix; {выводим рабочую матрицу}

end;

end;

{_______________________________________________}

procedure tmatrix.fileinput; {ввод данных из файла}

var

pf:pfiledialog;

s:pathstr;

x:char;

i,j:integer; {счётчики}

begin

new(pf,init('*.txt','Выберите нужный файл:','Имя файла',fdopenbutton,0));

if desktop^.execview(pf)=stddlg.cmfileopen then

begin {считывание матрицы из файла}

pf^.getfilename(s);

assign(filework,s);

reset(filework); {открываем файл для чтения}

enablecommands(wincoml);

dispose(pf,done);

i:=1;

j:=1;

while not eof(filework ) do

begin

while not eoln(filework) do

begin

    read(filework,mxx[i,j]); {заносим в матрицу значения}

    read(filework,x);

    j:=j+1;

    n:=i;

    m:=j-1;

end;

j:=1;

i:=i+1;

readln(filework);

end;

close(filework); {закрываем файл}

tmatrix.printmatrix; {выводим рабочую матрицу}

end;

end;

{_______________________________________________}

procedure Sort; {сортируем элементы периметра по возрастанию}

var

i,j:integer; {счётчики}

p:integer; {вспомогательная переменная для обмена значениями}

begin

for i:=2 to l do

for j:=l downto i do

if per[j-1]>per[j] then

begin {меняем местами элементы}

    p:=per[j-1];

    per[j-1]:=per[j];

    per[j]:=p;

end;

end;

{_______________________________________________}

procedure GetPerimetr(n_1,m_1,n_2,m_2:integer); {определение элементов по периметру}

var

i:integer; {счётчик}

k:integer;

begin {обнуляем массив}

for i:=1 to 2*N+2*M do

per[i]:=0;

k:=1;

for i:=m_1 to m_2 do {выбираем элементы столбца периметра}

begin

per[k]:=Mxx[n_1,i];

per[k+1]:=Mxx[n_2,i];

inc(k,2)

end;

for i:=(n_1+1) to (n_2-1) do {выбираем элементы строк периметра}

begin

per[k]:=Mxx[i,m_1];

per[k+1]:=Mxx[i,m_2];

inc(k,2)

end;

dec(k,2);

l:=k;

Информация о работе Програмирование на языке Паскаль