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

ЛИЧНЫЙ КАБИНЕТ 

 

Здравствуйте гость!

 

Логин:

Пароль:

 

Запомнить

 

 

Забыли пароль? Регистрация

Повышение уникальности

Предлагаем нашим посетителям воспользоваться бесплатным программным обеспечением «StudentHelp», которое позволит вам всего за несколько минут, выполнить повышение уникальности любого файла в формате MS Word. После такого повышения уникальности, ваша работа легко пройдете проверку в системах антиплагиат вуз, antiplagiat.ru, etxt.ru или advego.ru. Программа «StudentHelp» работает по уникальной технологии и при повышении уникальности не вставляет в текст скрытых символов, и даже если препод скопирует текст в блокнот – не увидит ни каких отличий от текста в Word файле.

Результат поиска


Наименование:


Реферат/Курсовая Програмирование на языке Паскаль

Информация:

Тип работы: Реферат/Курсовая. Добавлен: 13.12.2012. Сдан: 2011. Страниц: 29. Уникальность по antiplagiat.ru: < 30%

Описание (план):


Программирование  на языке ПАСКАЛЬ
Содержание 

Введение______________________________________________________________3
    Задание на курсовую работу ________________________________________3
    Анализ задания ___________________________________________________3
    Разработка структур данных ________________________________________4
    Разработка алгоритмов_____________________________________________5                                                                              
    Текст программы__________________________________________________9
    Тестирование программы___________________________________________20                                                                         
    Руководство пользователя __________________________________________22                                                                      
Заключение____________________________________________________________26                                                                                                         
Список использованных источников_______________________________________26                                                                                             
 

Введение
    Система программирования Турбо Паскаль  представляет собой единство двух в  известной степени самостоятельных начал: компилятора с языка программирования Паскаль и некоторой инструментальной программной оболочки, способствующей повышению эффективности создания программ.
    Процедуры и функции представляют собой  важный инструмент Турбо Паскаля, позволяющий  писать хорошо структурированные программы. В структурированных программах обычно легко прослеживается основной алгоритм, их нетрудно понять любому читателю, они проще в отладке и менее чувствительны к ошибкам программирования. Все эти свойства являются следствием важной особенности процедур (функций), каждая из которых представляет собой во многом самостоятельный фрагмент программы, связанный с основной программой лишь с помощью нескольких параметров.
    Модули  представляют собой прекрасный инструмент для разработки библиотек прикладных программ и мощное средство модульного программирования. В Турбо Паскале имеется 8 стандартных модулей, в которых содержится большое число разнообразных типов, констант, процедур и функций.
1 Задание на курсовую  работу
    В прямоугольной матрице выявить все подматрицы, по периметру которых расположены элементы, из которых можно образовать геометрическую прогрессию.
2 Анализ задания
    Задачей курсового проектирования является разработка программного продукта, который  позволил бы выявить в прямоугольной матрице все подматрицы, по периметру которых расположены элементы, из которых можно образовать геометрическую прогрессию.
    Должен  быть разработан пользовательский интерфейс, который бы обеспечил более удобную и наглядную работу с программой. Данная программа должна выполнять следующие действия:
    ввод данных с клавиатуры и из файла;
    обработку данных в соответствии с заданием;
    вывод результата на экран и в файл;
    интерфейс пользователя в текстовом режиме, содержащий меню (с подменю) и окна;
    обеспечивать различные способы ввода и вывода данных;
    использовать возможности модуля CRT;
    использовать структуры данных;
    программный код в виде процедур и функций;
    использовать программирование клавиатуры;
    использовать манипулятор «мышь»;
    использовать динамические структуры данных;
    собственный модуль.
3 Разработка структур данных
    Основные  переменные:
    Mxx – исходная целочисленная матрица (максимум 10х10);
    Per – целочисленные элементы периметра;
    N, M – количество строк и столбцов матрицы;
    L – количество элементов по периметру подматрицы;
    mf – флаг ввода исходной матрицы – true, false – матрица не введена;
    fileresu, filework – текстовые файлы с исходной матрицей и с результатом соответственно;
    fil – способ вывода результата true – в файл, false – на экране в окне;
    f – способ получения результата false – все подматрицы или true – по условию.
    Стандартные модули: crt, app, objects, menus, drivers, views, dialogs, msgbox, memory, dos, stddlg, editors  и собственный модуль: mod_matr. 
 
 
 
 
 

4 Разработка алгоритмов
    Опишем  основные процедуры и функции программы.
Процедура GetRandomMatrix.
    Процедура автоматического ввода матрицы  со значениями.
    Схема алгоритма данной процедуры представлена на рисунке 1.

Рисунок 1 – Схема алгоритма процедуры GetRandomMatrix.
    3 блок – вводим количество строк  n, количество столбцов m и максимальное pred значение элемента матрицы, 4-6 блоки – вводим случайные элемента матрица, не превышая pred, 7 блок – устанавливаем флаг в true, т. е. матрица введена, 8 блок – выводим матрицу в окне программы.
Процедура InputMatrix.
    Процедура ввода матрицы со значениями вручную.
    Схема алгоритма данной процедуры представлена на рисунке 2.

Рисунок 2 – Схема алгоритма процедуры InputMatrix.
    3 блок – вводим количество строк n, количество столбцов m, 4-6 блоки – вводим элементы матрицы, 7 блок – устанавливаем флаг в true, т. е. матрица введена, 8 блок – выводим матрицу в окне программы.
Процедура Sort.
    Процедура сортировки значений периметра подматрицы по возрастанию.
    Схема алгоритма данной процедуры представлена на рисунке 3.

Рисунок 3 – Схема алгоритма процедуры Sort.
    2, 3 блок – перебираем элементы  периметра подматрицы, 4 блок – сравниваем текущее значение элемента матрицы меньше следующего, если да то переходим к 5 блоку, иначе к 3, 5 блок – меняем значения местами.
Процедура GetPerimetr.
    Процедура определения элементов подматрицы по периметру.
    Схема алгоритма данной процедуры представлена на рисунке 4.

Рисунок 4 – Схема алгоритма процедуры GetPerimetr.
    2, 3 блок – обнуляем значения элементов периметра, 4 блок – количество элементов в перимерте = 1, 5, 6 блоки – перебираем элементы столбца периметра и заносим в массив per, 7, 8 блоки – перебираем элементы строки периметра и заносим в массив per, 9 блок – заносим в переменную l количество элементов в периметре подматрицы. 

Функция GeomProg.
    Функция определения геометрической прогрессии из элементов периметра подматрицы.
    Схема алгоритма данной функции представлена на рисунке 5.

Рисунок 5 – Схема алгоритма процедуры GeomProg.
    2 блок – вызов процедуры сортировки, 3 блок – флаг образования геометрической прогрессии, 4 блок – второе значение элемента массива периметра делим на первое, 5 блок – перебираем элементы массива периметра, 6 блок – следующее значение элемента массива делим на текущее и сравниваем с dv, 7 блок – не геометрическая прогрессия.
5 Текст программы
program MTRKW; {программа}
uses
mod_matr; 

begin
Randomize;
matrix_perim.init;
matrix_perim.run;
matrix_perim.done;
end.  

Unit mod_matr; {модуль программы}
interface
uses
crt,app,objects,menus,drivers,views,dialogs,msgbox,memory,dos,stddlg,editors;
const
cmwork=203; cmvvod=206; cmvval=207; cmvvse=204; cmvusl=205; cmvhel=257; cmisfl=208;
cmfilv=209; cmfilu=210;
wincoml:Tcommandset=[cmvvse,cmvusl,cmwork,cmfilv,cmfilu]; {меню результат}
wincom2:tcommandset=[cmvvod,cmvval,cmisfl]; {меню ввод}
type
pinputwindow=^tinputwindow;
tinputwindow=object(tdialog)
procedure handleevent(var event:tevent);virtual;
end;
pwind=^twin;
twin=object(twindow)
constructor init(bounds:trect);
end;
pinterior=^tinterior;
tinterior=object(tscroller)
constructor init(var bounds:trect; hs,vs:pscrollbar);
procedure handleevent(var event:tevent);virtual;
end;
tmatrix=object(tapplication)
procedure initstatusline; virtual;
procedure initmenubar; virtual;
procedure handleevent(var event:tevent); virtual;
procedure inputmatrix;
procedure getrandommatrix;
procedure main(f:boolean);
procedure PrintMatrix ;
procedure fileinput;
procedure fileoutputv(f:boolean);
end;
tdata=record
col:string[4];
row:string[4];
max:string[4];
end;
var
matrix_perim:Tmatrix;
x,y:integer;
const
 MAX = 10; {максимально матрица 10 на 10}
type
Matrix = array [1..MAX,1..MAX] of integer;
Perim = array [1..MAX*4] of integer;
var
wind:pwind;
Mxx:Matrix; {исходная матрица}
N,M:integer; {количество строк и столбцов}
l:integer; {количество элементов по периметру подматрицы}
per:Perim; {элементы периметра}
mf:boolean; {флаг ввода исходной матрицы - true}
data:tdata;
matr_v:array[1..10] of string;
fileresu,filework:text; {текстовые файлы с исходной матрицей и с результатом}
fil:boolean; {способ вывода результата true – в файл, false – на экране в окне} 

implementation 

procedure readmas; {очистка матрицы}
var
 i,j:integer;
 s:string;
 sr:string[3];
begin
s:='';
for i:=1 to n do
begin
for j:=1 to m do
begin
    str(mxx[i,j],sr);
    s:=s+sr+' ';
end;
matr_v[i]:=s;
s:='';
end;
end;
{_______________________________________________}
constructor tinterior.init; {инициализация}
begin
tscroller.init(bounds,hs,vs);
growmode:=gfgrowhix+gfgrowhiy;
setlimit(8000,7000);
end;
{_______________________________________________}
procedure tinterior.handleevent(var event:tevent); {движение мыши}
var
r:tpoint;
location:word;
begin
location:=0;
tscroller.handleevent(event);
case event.what of
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;
{_______________________________________________}
и т.д.................


Перейти к полному тексту работы


Скачать работу с онлайн повышением уникальности до 90% по antiplagiat.ru, etxt.ru или advego.ru


Смотреть полный текст работы бесплатно


Смотреть похожие работы


* Примечание. Уникальность работы указана на дату публикации, текущее значение может отличаться от указанного.