Смекни!
smekni.com

Разработка программы для сдвига элементов матрицы по слоям (стр. 3 из 4)

В общем виде инструкция goto записывается следующим образом:

goto Метка

где метка – это идентификатор, находящийся перед инструкцией, которая должна быть выполнена после инструкции goto.

Метка, используемая в инструкции goto, должна быть объявлена в разделе меток, который начинается словом label и располагается перед разделом объявления переменных.

В программе метка ставится перед инструкцией, к которой должен быть выполнен переход в результате выполнения инструкции goto. Сразу после метки ставится двоеточие.

В литературе по программированию можно встретить суждения о недопустимости применения инструкции goto, поскольку она приводит к запутанности программ. Однако с категоричностью таких утверждений согласиться нельзя. В некоторых случаях применение инструкции goto вполне оправдано.

2. Анализ задачи

Для решения задачи необходимы следующие исходные данные:

- число строк матрицы – целочисленное значение;

- число столбцов матрицы – целочисленное значение;

- значения элементов матрицы – целочисленные значения.

Примем ограничение на размерность матрицы – число строк и столбцов не должно превышать 10.

Пошаговый алгоритм решения задачи.

Исходные данные:

n, m – число строк и столбцов соответственно;

aij – элементы матрицы;

Сij – матрица цветов каждого элемента;

с – начальный цвет слоя;

di – массив, составленный из элементов слоев;

k – число элементов в слое;

fn – индекс слоя (номер строки и столбца с которого он начинается), начальное значение 1.

1) Формирование слоев.

а. Помещаем в d элементы fn – й строки;

б. Помещаем в d элементы m – го столбца начиная с (fn + 1) – й строки по n – ю строку;

в. Помещаем в d элементы n – й строки, начиная с m – 1 столбца по fn столбец;

г. Помещаем в d элементы fn – го столбца начиная с n – 1‑й строки по fn + 1 строку;

В соответствующие элементы матрицы цветов С помещаем значение с.

2) Сдвигаем элементы массива d на 1 позицию вправо.

а. запоминаем значение последнего элемента t = dk;

б. выполняем присвоение di = di–1 для i = k, 2;

в. помещаем последний элемент на место первого d1 = t.

3) Изменяем значения:

fn = fn + 1,

n = n – 1,

m = m – 1

и повторяем шаги алгоритма с 1 по 3, пока n > 2 и m > 2.

3. Блок – схема алгоритма



4. Руководство пользователя

4.1 Системные требования

Для функционирования приложения необходим персональный компьютер со следующими характеристиками:

- процессор CPU – не хуже Pentium;

- оперативная память RAM – не менее 16 Мб;

- свободное пространство на жестком диске – не менее 500 Кбайт;

- стандартная мышь для COM порта;

- стандартная IBM PC/АT клавиатура;

Приложение работает под управлением операционной системы Windows 95/98/2000/ХР. Наличие среды визуального программирования для работы программы не является обязательным.

4.2 Структура программы

Программа состоит из следующих программных модулей:

unit1 – главный интерфейсный модуль;

ms – проект.

Рассмотрим состав главного модуля.

В нем определены два пользовательских типа данных:

mas – одномерный массив целых чисел из 100 элементов;

mat – двумерный массив целых чисел размерности 10´10 элементов.

Цвета слоев определяет константа – массив элементов TColor – cc.

Наиболее значимые переменные программы.

mf, тип string – имя файла с матрицей;

c – двумерный массив цветов слоев с элементами типа TColor;

a, тип mat – заданная матрица;

k, тип integer – счетчик слоев;

d, тип mas – одномерный массив с элементами слоя;

n, m, тип integer – число строк и столбцов матрицы;

f, тип textfile – текстовый файл из которого считывается матрица.

Процедуры пользователя.

Sdvig (d, n)

Назначение: сдвиг массива по часовой стрелке.

Параметры:

d, тип mas – одномерный массив с элементами слоя;

n, тип integer – число элементов массива;

SloiColor (fn, n, m, sd)

Назначение: определение цветов слоев и их сдвиг.

Параметры:

fn, тип integer – номер определяемого слоя;

n, m, тип integer – число строк и столбцов матрицы;

sd, тип boolean – логическая переменная, имеющая значение True, если производится определение цветов и сдвиг элементов слоя и False – если только определяется цвет.

MQuitClick

Назначение: выход из программы.

MOpenFileClick

Назначение: открыть файл данных.

FillGrid (a, n, m)

Назначение: вывод матрицы с заданными цветами элементов.

Параметры:

a, тип mat – заданная матрица;

n, m, тип integer – число строк и столбцов матрицы;

MRunClick

Назначение: управляющая процедура сдвига слоев матрицы.


Рис. 8. Окно программы

4.3 Инструкция пользователя

Рассмотрим последовательность действий пользователя при использовании программы для сдвига элементов матрицы. Ему необходимо запустить на выполнение программу, которая называется «ms.exe».

Для удобства запуска программы под управлением Microsoft Windows, можно сделать следующее: щелкните правой кнопкой мыши по Рабочему Столу Windows Þ в появившемся меню выберите Создать Þ Ярлык Þ в появившемся окне в Командной строке набираем путь доступа к программе и нажимаем кнопку Далее Þ в следующем окне назовем наш ярлык Сдвиг и нажимаем кнопку Далее Þ выберите иконку и нажмите кнопку Готово. Теперь у Вас на рабочем столе находится иконка программы.

После запуска пользователь увидит на экране окно, изображенное на рисунке 8.

В верхней строке окна находится главное меню с двумя пунктами:

Файл. Содержит подпункты:

- Открыть – загрузка матрицы из текстового файла;

- Выход – закончить работу с программой.

Обработка, содержит один подпункт Начать – запуск алгоритма сдвига элементов матрицы.

Остальную часть окна занимает область вывода матрицы.

Порядок работы:

-выбрать файл с исходными данными Файл - Открыть;

-выполнить команду Обработка - Начать для сдвига элементов слоев.

Для хранения матриц используется текстовый файл со следующей структурой:

1 строка – два целочисленных значения n, m из диапазона 1…10 разделенные пробелом – число строк и столбцов матрицы соответственно;

В последующих n строка расположена сама матрица, m целочисленных значений в строке, разделитель – пробел.

Необходимо помнить, что обработке подлежат матрицы максимальной размерности 10´10 элементов.

5. Тестовый пример

Заключение

Результатом курсового проектирования по дисциплине «Программирование на языках высокого уровня» на тему «Разработка программы для сдвига элементов матрицы по слоям» является разработанная программа для IBM PC совместимых компьютеров, предназначенная для обработки произвольных целочисленных матриц, а также подробное руководство пользователя программой.

В ходе курсового проектирования были выявлены особенности написания программы, разработан алгоритм программы и описан принцип ее работы.

Недостатком программы является ограниченная размерность обрабатываемых матриц.

В теоретической части работы мной были приведены материалы о программирование в среде Delphi.

Список использованной литературы

1. Бобровский С.И. Delphi 7. Начальный курс: Учебное пособие – М.: Диалог – МИФИ, 2002. -416 с.

2. Гофман В.Э. Delphi 7. – Спб.: BHV‑Петербург, 2003. -488 с.

3. Лишнер Рэй. Delphi. Справочник. – М.: БЕК, 2003. -715 с.

4. Поган А.М., Царенко Ю.А. Программирование в Delphi. Просто как дважды два. – М.: Нолидж, 2004. -557 с.

Приложение. Листинг программы

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, Menus, Grids, StdCtrls;

type

mas = array [1..100] of integer;

mat = array [1..10, 1..10] of integer;

TForm1 = class(TForm)

MainMenu1: TMainMenu;

N1: TMenuItem;

MOpenFile: TMenuItem;

N4: TMenuItem;

MQuit: TMenuItem;

N6: TMenuItem;

MRun: TMenuItem;

OpenDialog1: TOpenDialog;

StringGrid1: TStringGrid;

procedure MQuitClick (Sender: TObject);

procedure MOpenFileClick (Sender: TObject);

procedure MRunClick (Sender: TObject);

procedure FillGrid (a: mat; n, m: integer);

private

{Private declarations}

public

{Public declarations}

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

const

cc: array [1..10] of TColor = (clBlue, clFuchsia, clGreen,

clLime, clMaroon, clNavy, clOlive,

clRed, clTeal, clYellow);

var

mf: string; // имя файла с матрицей

c: array [1..10, 1..10] of TColor; // массив цветов слоев

a: mat; // заданая матрица

k: integer; // счетчикслоев

procedure Sdvig (var d: mas; n: integer);

var

i, l: integer;

begin

if n = 0 then Exit;

l:= d[n];

for i:= n downto 2 do

d[i]:= d [i – 1];

d[1]:= l;

end;

procedure SloiColor (fn, n, m: integer; sd: boolean);

var

i, j: integer;

d: mas;

begin

if ((n >= 2) or (m >= 2)) and ((fn < n) and (fn < m)) then

begin

j:= 0;

for i:= fn to m do

begin

c [fn, i]:= cc[k];

j:= j + 1;

d[j]:= a [fn, i];

end;

for i:= fn + 1 to n do

begin

c [i, m]:= cc[k];

j:= j + 1;

d[j]:= a [i, m];

end;

for i:= m – 1 downto fn do

begin

c [n, i]:= cc[k];

j:= j + 1;

d[j]:= a [n, i];

end;

for i:= n – 1 downto fn + 1 do

begin

c [i, fn]:= cc[k];