- •Часть 1. Организация управления работой программы сложной структуры с помощью многоуровневого меню.
- •1. Первый пункт меню
- •2. Второй пункт меню
- •Часть 2. Реализация программы сложной структуры.
- •Требования к оформлению лабораторных работ по дисциплине «Информатика и основы программирования »
- •Варианты задач для выполнения лабораторной работы по теме «Работа с массивами и строками в Паскале»
- •Пример: структурная схема программы работы с матрицами
Пример: структурная схема программы работы с матрицами
Пример:
Таблица спецификаций программы
Имя модуля |
Назначение |
Полный заголовок |
Входные параметры |
Выходные параметры |
Модули, вызываемые из данного |
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