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

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

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

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

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

Введение______________________________________________________________3

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

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

Файлы: 1 файл

Курсовик.doc

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

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

Содержание 

Введение______________________________________________________________3

  1. Задание на курсовую работу ________________________________________3
  2. Анализ задания ___________________________________________________3
  3. Разработка структур данных ________________________________________4
  4. Разработка алгоритмов_____________________________________________5                                                                              
  5. Текст программы__________________________________________________9
  6. Тестирование программы___________________________________________20                                                                         
  7. Руководство пользователя __________________________________________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

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