Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АНХ_Лаб_работа1.doc
Скачиваний:
3
Добавлен:
16.11.2018
Размер:
219.65 Кб
Скачать

Пример: структурная схема программы работы с матрицами

Пример:

Таблица спецификаций программы

Имя модуля

Назначение

Полный заголовок

Входные

параметры

Выходные параметры

Модули, вызываемые из данного

Main

Организация работы всей программы

Program Main;

Нет

нет

In_Mtr, Mtr_Work, Out_Mtr, Exit_Mtr

In_Mtr

Ввод обрабатываемой матрицы

Procedure In_Mtr ( var M,N : integer; var A : mtr );

Нет

M : integer ; число строк матрицы

N : integer; число столбцов матрицы

A : mtr; значения элементов введенной матрицы

нет

Mtr_Work

Организация обработки введённой матрицы

Procedure Mtr_Work (var M,N : integer; Var A : mtr);

M : integer ; число строк матрицы

N : integer; число столбцов матрицы

A : mtr; значения элементов введенной матрицы

M : integer ; число строк матрицы

N : integer; число столбцов матрицы

A : mtr; значения элементов введенной матрицы

Max_Mtr, Del_K_Column

Max_Mtr

Выбор максимума из элементов матрицы

Procedure Max_Mtr ( M,N : integer; A : mtr; var max : real; var imax, jmax : integer);

M : integer ; число строк матрицы

N : integer; число столбцов матрицы

A : mtr; - значения элементов введенной матрицы

max : real; - значение максимального элемента матрицы

imax, jmax : integer – номер строки и номер столбца максимального элемента

нет

Del_K_Column

Удаление k-го столбца матрицы

Procedure Del_I_Column (var M,N : integer; var A : mtr; K : integer);

M : integer ; число строк матрицы

N : integer; число столбцов матрицы

A : mtr; - значения элементов введенной матрицы

K : integer – номер удаляемого столбца

M : integer ; число строк матрицы

N : integer; число столбцов матрицы

A : mtr; - значения элементов введенной матрицы

нет

Out_Mtr

Вывод матрицы в матричной форме

Procedure Out_Mtr ( M,N : integer; A : mtr);

M : integer ; число строк матрицы

N : integer; число столбцов матрицы

A : mtr; - значения элементов введенной матрицы

нет

Exit_Mtr

Организация завершения программы, «финишные операции»

Procedure Exit_Mtr;

Нет

нет

Пример меню с внутренними процедурами-заглушками

PROGRAM MATRICA;

uses

crt, {подключение стандартного модуля}

user_mod; { подключение модуля пользователя,

если он сформирован}

type ;

var ;

{Размещение внутренних процедур и функций,

если они не в модуле }

{пример заглушки, вспомогательной процедуры }

Procedure Proc_1;

begin

Writeln (‘ Работает процедура 1 ‘);

Readln;

End;

. . . . .

{Тело главной вызывающей программы}

begin

{ clrscr; } {включить после полной отладки }

F := true;

while (F = true) do

begin

repeat

{ clrscr;} {включить после полной отладки }

writeln('. . . . . . M E N U');

writeln('1. Первый пункт меню ');

writeln('2. Второй пункт меню');

writeln('3. Третий пункт меню’);

writeln('4. Выход из программы');

writeln('Ваш выбор:');

readln (choice2); {ввод кода в

символьной форме }

{контроль кода – нужна цифра}

val (choice2, choice, code);

if (code<>0)

then writeln ('Вы ввели не число!’,

Повторите ввод! ');

until code=0 ;

{реализация правильного кода выбора}

case choice of

1: begin

Proc_1;

end;

2: begin

Proc_2;

end;

3: begin

Proc_3;

end;

4:begin

writeln ('Вы действительно хотите’,

закончить работу? (Y/N)');

readln (exit_ans);

if exit_ans = 'Y'

then F := false;

end;

end; { case }

end; { While }

writeln ('До свидания!');

readln;

end.

{ * * * * * * * * * * * * * * * * * * * * * * * }

{пример заглушки, вспомогательной процедуры }

Procedure Proc_1;

begin

Writeln (‘ Работает процедура 1 ‘);

Readln;

End;

{ * * * * * * * * * * * * * * * * * * * * * * * }

Пример модуля с процедурами-заглушками

(текст главной программы тот же, что и в предыдущем примере)

UNIT USER_MOD; { Хранится в файле USER_MOD.pas }

INTERFACE

type

;

Var

;

Const

;

{ полные заголовки подпрограмм }

{процедура 1}

Procedure Proc_1;

{ процедура 2 }

Procedure Proc_2;

{процедура 3}

Procedure Proc_3;

IMPLEMENTATION

{ полные тексты подпрограмм, реализация }

{ процедура 1 }

Procedure Proc_1;

begin

Writeln (‘ Работает процедура 1 ‘);

Readln;

End;

{ процедура 2 }

Procedure Proc_2;

begin

Writeln (‘ Работает процедура 2 ‘);

Readln;

End;

{ процедура 1 }

Procedure Proc_3;

begin

Writeln (‘ Работает процедура 3 ‘);

Readln;

End;

{ полные тексты обслуживающих подпрограмм,

не вызывающихся извне }

. . . . . . .

end.

Пример меню с внутренними процедурами

PROGRAM MATRICA;

uses

crt; {подключение стандартного модуля}

type

mtr = array [1..10,1..10] of intrger;

var

mf, i, j, chet, K : integer;

a: mtr;

choice2, exit_ans, answer : string;

choice, code : integer;

F, Fl : boolean;

{Размещение внутренних процедур и функций }

{ процедура ввода матрицы }

PROCEDURE vvodmat (var mf: integer; var a: mtr);

{выходные параметры}

var

i, j: integer;

begin

writeln ('введите размер’,

квадратной матрицы < 10');

readln (mf);

for i:= 1 to mf do

begin

for j:= 1 to mf do

begin

write ('a[',i,',',j,']=' ) ;

readln (a[i,j]);

end;

end;

end;

{ процедура вывода матрицы }

PROCEDURE vivmat (mf: integer; a: mtr);

var

i, j: integer;

begin

writeln ('M A T R I X');

for i:=1 to mf do

begin

for j:=1 to mf do

write (a [i,j] : 6 );

writeln ;

end;

readln;

end;

{процедура нахождения первого чётного числа

на главной диагонали}

PROCEDURE chetmatr (mf: integer; a: mtr;

var FL: boolean;

var chet, K: integer);

var

i , j : integer;

begin

i:=0;

Fl:=false;

repeat

i:=i+1;

if (a[i,i] mod 2 = 0)

then Fl:=true;

until (Fl=true) or (i = mf);

if FL=true

then begin

chet:= a[i,i];

k:=i;

end;

end;

{Тело главной вызывающей программы}

begin

{ clrscr; }

F := true;

while (F = true) do

begin

repeat

{ clrscr;}

writeln(' M A T R I X M E N U');

writeln('1.Ввод матрицы');

writeln('2.Вывод матрицы');

writeln('3.Найти первый чётный элемент’,

на главной диагонали матрицы');

writeln('4. Выход из программы');

writeln('Ваш выбор:');

readln (choice2);

val (choice2, choice, code);

if (code<>0)

then writeln ('Вы ввели не число!’,

Повторите ввод! ');

until code=0 ;

case choice of

1: vvodmat (mf, a);

2: vivmat (mf, a);

3: begin

chetmatr (mf, a, FL, chet, K);

If Fl

Then Begin

writeln (chet,

'первый чётный элемент’,

на главной диагонали матрицы');

writeln (K, '- номер его строки’,

и столбца ');

End

Else Writeln(‘Чётных элементов нет ‘);

readln;

end;

4:begin

writeln ('Вы действительно хотите’,

закончить работу? (Y/N)');

readln (exit_ans);

if exit_ans = 'Y'

then F := false;

end;

end; { case }

end; { While }

writeln ('До свидания!');

readln;

end.

Пример меню с модулем

PROGRAM MATRICA;

uses

crt, подключение стандартного модуля}

MATR_FIR {подключение пользовательского модуля}

;

var

mf, i, j, chet, K : integer;

a: mtr;

choice2, exit_ans, answer : string;

choice, code : integer;

F, Fl : boolean;

{Тело главной вызывающей программы}

begin

{ clrscr; }

F := true;

while (F = true) do

begin

repeat

{ clrscr;}

writeln(' M A T R I X M E N U');

writeln('1.Ввод матрицы');

writeln('2.Вывод матрицы');

writeln('3.Найти первый чётный элемент’,

на главной диагонали матрицы');

writeln('4. Выход из программы');

writeln('Ваш выбор:');

readln (choice2);

val (choice2, choice, code);

if (code<>0)

then writeln ('Вы ввели не число!’,

Повторите ввод! ');

until code=0 ;

case choice of

1: vvodmat (mf, a);

2: vivmat (mf, a);

3: begin

chetmatr (mf, a, FL, chet, K);

If Fl

Then Begin

writeln (chet,

'первый чётный элемент’,

на главной диагонали матрицы');

writeln (K, '- номер его строки’,

и столбца ');

End

Else Writeln(‘Чётных элементов нет ‘);

readln;

end;

4:begin

writeln ('Вы действительно хотите’,

закончить работу? (Y/N)');

readln (exit_ans);

if exit_ans = 'Y'

then F := false;

end;

end; { case }

end; { While }

writeln ('До свидания!');

readln;

end.

Пример модуля с процедурами

(текст главной программы тот же, что и в предыдущем примере)

UNIT MATR_FIR; { Хранится в файле MATR_FIR.pas }

INTERFACE

type

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

{ заголовки подпрограмм }

{процедура ввода матрицы}

PROCEDURE vvodmat (var mf: integer; var a: mtr);

{ процедура вывода матрицы }

PROCEDURE vivmat (mf: integer; a: mtr);

{процедура нахождения первого чётного числа}

PROCEDURE chetmatr (mf: integer; a: mtr;

var FL: boolean; var chet, K: integer);

IMPLEMENTATION

{ полные тексты подпрограмм, реализация }

{ процедура ввода матрицы }

PROCEDURE vvodmat (var mf: integer; var a: mtr);

{выходные параметры}

var

i, j: integer;

begin

writeln ('введите размер’,

квадратной матрицы < 10');

readln (mf);

for i:= 1 to mf do

begin

for j:= 1 to mf do

begin

write ('a[',i,',',j,']=' ) ;

readln (a[i,j]);

end;

end;

end;

{ процедура вывода матрицы }

PROCEDURE vivmat (mf: integer; a: mtr);

var

i, j: integer;

begin

writeln ('M A T R I X');

for i:=1 to mf do

begin

for j:=1 to mf do

write (a [i,j] : 6 );

writeln ;

end;

readln;

end;

{процедура нахождения первого чётного числа

на главной диагонали}

PROCEDURE chetmatr (mf: integer; a: mtr;

{входные параметры}

var FL: boolean;

var chet, K: integer);

{выходные параметры}

var

i : integer;

begin

i:=0;

Fl:=false;

repeat

i:=i+1;

if (a[i,i] mod 2 = 0)

then Fl:=true;

until (Fl=true) or (I = mf);

if FL=true

then begin

chet:= a[i,i];

k:=i;

end;

end;

end.

Образец титульного листа

АКАДЕМИЯ НАРОДНОГО ХОЗЯЙСТВА ПРИ ПРАВИТЕЛЬСТВЕ РФ

Экономический факультет

Кафедра Информатики и системного анализа

Лабораторная работа №1

по дисциплине

«Информатика и основы программирования»

Работу выполнили

студенты группы

_____

Руководитель

Доц.Грибанов В.П.

Защищено

«____»_________2009 г.

Москва 2009