Примеры оформления отчетов по лабораторным работам

advertisement
Требования к оформлению отчета
По каждой выполненной лабораторной работе студенту для ее сдачи (защиты) и получения зачета
необходимо подготовить индивидуальный письменный отчет. Отчет по лабораторной работе
выполняется на листах формата А-3.
Типовой отчет по лабораторной работе должен содержать:
• титульный лист;
• порядковый номер и название лабораторной работы;
• постановку задачи;
• описание алгоритма решения задачи;
• описание используемых структур данных;
• описание пользовательского интерфейса;
• распечатку исходного кода (листинг) программы с комментариями;
• описание тест-примеров;
• результаты контрольного прогона;
• список используемых информационных источников.
Форма титульного листа приведена в Приложении 1.
Раздел «Постановка задачи» является техническим заданием на разработку программы, он не
должен содержать неопределенностей и двусмысленностей. В случае необходимости студент
может уточнять и доопределять постановку задачи у преподавателя.
Таким образом, программа рассматривается как черный ящик, для которого должны быть четко и
полно определены функция (требования и критерии), входные и выходные данные Ниже
приводится типовой пример раздела «Постановка задачи».
ПОСТАНОВКА ЗАДАЧИ
Анкета для опроса населения содержит две группы вопросов.
Первая группа содержит сведения о респонденте:
• возраст;
• пол,
• образование (начальное, cреднее, высшее).
Вторая группа содержит собственно вопрос анкеты, ответ на который может быть либо «ДА»,
либо «НЕТ».
Составить программу, которая:
•
обеспечивает ввод заполненных анкет и формирует из них линейный двунаправленный
(двусвязный) список;
•
на основе обработки линейного списка реализует следующие запросы:сколько мужчин
старше 40 лет, имеющих высшее образование, ответили на вопрос анкеты
«ДА»;сколько женщин моложе 30 лет, имеющих среднее образование, ответили на вопрос анкеты
«НЕТ»;сколько мужчин моложе 25 лет, имеющих начальное образование, ответили на вопрос
анкеты «ДА»;
•
производит вывод всех анкет и ответов на запросы. Программа должна:
•
обеспечивать диалог посредством пользовательских экранов;
•
осуществлять контроль ошибок при вводе (исходных данных на допустимые значения).
В разделе «Описание алгоритма решения задачи» должны быть описаны конкретные
алгоритмические решения, принятые студентом при программировании для реализации
поставленной задачи.
Типовой пример данного раздела для приведенной выше постановки задачи имеет следующий вид
ОПИСАНИЕ АЛГОРИТМА
Ввод данных (заполненных анкет) осуществляется в диалоговом (интерактивном) режиме. Ввод
желательно производить с помощью пользовательского экрана 1.
Ввод результатов анкетирования возможен только после ввода всех полей сведения о респонденте,
чем обеспечивается корректность исходных данных. При невыполнении этого условия выводится
соответствующее сообщение об ошибке.
Каждый раздел сведений о респонденте вводится в своем поле пользовательского экрана. Ввод
поля «ФИО» не формализован. Ввод полей «Возраст», «Пол» и «Образование» осуществляется в
режиме «дружественного» интерфейса - с помощью шкал допустимых значений.
Таким образом, пользователю при вводе данных достаточно лишь выбрать необходимое значение
из предлагаемого перечня. Так для ввода возраста респондента предусмотрена шкала из 100
значений (18 - 118), пола респондента - шкала из двух значений (мужской, женский), а его
образования -шкала из трех значений (начальное, среднее, высшее). Для ввода результатов
анкетирования в пользовательском экране желательно предусмотреть два поля - «ДА» и «НЕТ»,
выбор которых осуществляет пользователь. Ввод анкеты возможен только при условии выбора
одного из этих полей, чем обеспечивается целостность (полнота) каждой записи списка.
При невыполнении этого условия выводится соответствующее сообщение об ошибке. Для ввода
заполненной анкеты в список в пользовательском экране предусмотрена кнопка «ВВЕСТИ». Для
визуального отображения процесса ввода внизу пользовательского экрана желательно
предусмотреть сообщение «ВСЕГО ОТВЕТИВШИХ: человек». Вывод результатов работы
программы желательно производить с помощью пользовательского экрана 2. Просмотр
сформированного списка респондентов осуществляется как в прямом, так и обратном направлении
посредством нажатия клавиш «Предыдущая» и «Следующая», при этом в левом верхнем углу
экрана высвечивается порядковый номер анкеты в списке. Статистическая информация по ответам
на запросы может выводиться, например, в нижней части пользовательского экрана 2.
Возможность и эффективность реализации большинства алгоритмов зависят от того, каким
образом организованы данные. Поэтому проектирование программы необходимо начинать с
разработки структур, необходимых для представления входных, промежуточных и даже выходных
данных.
При этом принимаются во внимание многие факторы, такие как ограничения на объем (размер),
допустимый диапазон значений, необходимая точность, требования к быстродействию
программы.
Типовой пример оформления данного раздела для рассматриваемой постановки задачи имеет
следующий вид.
ОПИСАНИЕ ИСПОЛЬЗУЕМЫХ СТРУКТУР ДАННЫХ Для хранения заполненных анкет в
соответствии с постановкой задачи необходимо в программе организовать линейный
двунаправленный список. Элемент списка должен иметь описание (структуру)
Туре ре = ^ element;
{тип указателя}
element = record
fio : string [16];
{информационное поле 1}
vos : integer;
{информационное поле 2}
pol : string [7];
{информационное поле 3}
obr : string [9];
{информационное поле 4}
opros : string [3];
{информационное поле 5}
prev : ре;
{адресное поле «предыдущий»}
next: ре;
{адресное поле «следующий»}
end;
В разделе «Описание пользовательского интерфейса» проводится разработка пользовательских
экранов, описание диалоговых средств «пользователь-программа». Подробно описывается
обеспечение контроля исходных данных на полноту, правильность (достоверность) и диапазон
допустимых значений. Количество и содержание пользовательских экранов определяются
условиями задачи. В качестве примера ниже приводится форма одного
ПОЛЬЗОВАТЕЛЬСКИЕ ЭКРАНЫ
Лабораторная работа № 2, Вариант 4.1.
Входящий список группы:
Список в динамической памяти:
ВСМ-7-01
ВСС-6-00
ВСМ-15-00
ВСМ-17-00
ВМ -8-01
ВСМ -7-00
ВВ-2-99
ВВ-2 99
ВМ-8-01
ВСМ-15ОО
ВСМ -17-00
ВСМ-7-00
BCM-7-01
ВСС-6-00
Пользовательский экран разделен на две части:
• левую - для; ввода списка учебных группы;
• правую - д^я вывода отсортированного списка.
Справа от каждой части предусмотрены кнопки для скроллинг-просмотра списков, если они не
умещаются на экране.
При конструировании пользовательских экранов необходимо предусматривать разработку
управляющих кнопок.
В разделе описания тест-примеров необходимо привести тестовые наборы исходных данных,
которые были использованы при отладке программы.
Тестовые наборы исходных данных должны охватывать все случаи хода вычисления программы, в
том числе исключительные ситуации, которые могут иметь место при выполнении программы.
Ниже приводятся примеры оформления раздела «Результаты контрольного прогона»
РЕЗУЛЬТАТЫ КОНТРОЛЬНОГО ПРОГОНА
Лабораторная работа № 2, Вариант 4.1.
Входящий список группы:
Список в динамической памяти:
ВСМ-7-01
ВСС-6-00
ВСМ-15-00
ВСМ-17-00
ВМ -8-01
ВСМ -7-00
ВВ-2-99
ВВ-2 99
ВМ-8-01
ВСМ-15ОО
ВСМ -17-00
ВСМ-7-00
BCM-7-01
ВСС-6-00
Вылетает окошечко «Внимание» с надписью: «Группа ВСМ-7-01 уже содержится в списке»
РЕЗУЛЬТАТЫ КОНТРОЛЬНОГО ПРОГОНА
Лабораторная работа № 2, Вариант 4.1.
Входящий список группы:
Список в динамической памяти:
ВСМ-7-01
ВСС-е-оо
ВСМ-15-00
ВСМ-17-00
ВМ -8-01
ВСМ -7-00
ВВ-2-99
ВВ-2 99
ВМ-8-01
ВСМ-15ОО
ВСМ -17-00
ВСМ-7-00
BCM-7-01
ВСС-6-00
Вылетает окошечко «Внимание» с надписью: «Ошибка – попытка ввода пустой строки!»
В разделе проводится анализ результатов работы программы по тест-примерам и обосновывается
правильная работоспособность программы.
Библиографический список
1. Абрамов В.Г., Трифонов Н.П., Трифонова Г.Н. Введение в язык Паскаль. - М.: Наука, 1988. 320 с.
2. Епанешников А., Епанешников В. Программирование в среде Turbo Pascal 7.0. - М.: "ДИАЛОГМИФИ", 1993. - 288 с.
3. Зуев Е.А. Программирование в языке Turbo Pascal 6.0, 7.0. - М.: Радио и связь, 1993.-384 с.
4. Андрианова Е.Г., Милютина Е.В., Тихомирова Б.В. Программирование на языках высокого
уровня, лабораторный практикум, М., МИРЭА, 2002. - 47 с.
5. Тихомирова Б.В., Иванова Т.А., Андрианова Е.Г., Андреева Л.П. ИНФОРМАТИКА,
Методические указания по выполнению лабораторных работ. - М.: МИРЭА, 1999. - 28 с.
6. Сыромятников В.П., Андрианова Е.Г. Динамические структуры данных, учебное пособие,
часть 1, М., МИРЭА, 2004 г.
Приложение 1
Форма титульного листа отчета
МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ИНСТИТУТ
РАДИОТЕХНИКИ, ЭЛЕКТРОНИКИ И АВТОМАТИКИ
(ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ)
Кафедра «Математическое обеспечение вычислительных систем»
ОТЧЕТ
| по лабораторному практикуму
по дисциплине «Структуры и алгоритмы обработки данных на ЭВМ» часть 1 (часть
2)
Учебная группа
Студент
Руководитель
Москва – 2004
Приложение 2
Примеры оформления отчетов по лабораторным работам ПРИМЕР 1. (Вариант 4.1)
Отчет по лабораторной работе №1
"ЛИНЕЙНЫЕ ОДНОНАПРАВЛЕННЫЕ СПИСКИ"
1. Постановка задачи
Получить все символы, расположенные между первым и вторым двоеточием.
Если второго двоеточия нет, то получить все символы, расположенные после единственного
имеющегося двоеточия.
Произвести распечатку списка и результатов работы про-1раммы.
2. Описание используемых структур данных
type TQueue = ^TQueueElement;
{ Указатель на элемент списковой структуры }
TQueueElement = record
{ Элемент списка, }
info: Char;
{ содержащий информационное }
pNext: TQueue;
{ поле типа Char и указатель}
end;
{указатель на следующий элемент }
3. Описание пользовательского интерфейса_____________
3.1. Пользовательский экран
•Г Лабораторная работа Hal,
Вариант4.1.
[-
Х
Входные данные:
Результат обработки
3.2. Описание диалога
В верхнее поле ввода ("Входные данные") пользовательского экрана вводится строка символов,
которая немедленно обрабатывается по введении любого символа и результат обработки
помещается в нижнее поле формы.
Для окончания ввода и завершения работы программы используется клавиша "Escape".
3.3. Контроль исходных данных
При обнаружении ошибки во входных данных в поле "Результат обработки" выводится
соответствующее сообщение.
При правильном наборе исходных данных введенная последовательность символов немедленно
обрабатывается и помещается в поле "Результат обработки".
4. Описание алгоритма
При вводе текста в поле "Входные данные", каждый символ содержащийся в этом поле, с
помощью процедуры "String-ToQueue" преобразуется в очередь в динамической памяти, после
чего эта очередь обрабатывается процедурой "HandleQueue" в соответствии с постановкой задачи,
после чего преобразуется в строку процедурой "QueueToString" и выводится в поле "Результат
обработки".
5. Исходный код программы
unitUnitLABl;,
interface
uses
Windows, Messages, SysUtils,
Variants, Classes, Graphics,
Controls, Forrns, Dialogs, StdCtrls;
type
TForml = class(TForm)
Editl:TEdit;
Edit2: TEdit;
Label1: TLabel;
Label2: TLabel;
procedure EditlChange(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure EditlKeyPress(Sender: TObject; var Key: Char);
private .
{Private declarations}
public
/ Public declarations }
end;
var
Forml: TForml;
Implementation {$R *.dfm}
//Описание базовой структуры.
type TQueue = ^TQueueElement;
TQueueElement = record
info: Char;
pNext: TQueue;
end;
var Queuel: TQueue; ErrorCode: byte;
//Процедура добавления элемента "Symbol" в очередь "Queue".
//Если очередь пуста, то создаётся первый элемент.
procedure add(var Queue: TQueue; Symbol: Char);
var pNew, pLast: TQueue;
begin
new(pNew);
pNewA.info—Symbol;
pNewA.pNext:=nil;
if QueueOnil then begin
//Поиск последнего элемента очереди.
pLast:=Queue;
while pLastA.pNext<>nil do
pLast:=pLastA.pNext;
pLastA.pNext:=pNew; end
else Queue:=pNew; end;
//Функция преобразования содержимого //строки в очередь для удобства ввода.
function StringToQueue(Text: TCaption): TQueue;
var pTemp: TQueue;
i: integer;
begin
pTemp:=nil;
for i:=l to length(Text) do
add(pTemp,Text[i]);
StringToQueue :=pTemp;
end;
//Функция преобразования содержимого
//очереди в строку для удобства вывода на печать.
function QueueToString(Queue: TQueue): string;
var
Substring: string;
pTemp: TQueue;
begin
Substring—";
if Queue<>nil then
begin
pTernp:=Queue;
while pTempOnil do
begin
SubString:=SubString+pTempA.info+11;
pTemp:=pTempA.pNext;
end;
end;
Q ueueToString:=SubString;
end;
//Процедура удаления всех символов в очереди, кроме тех,
что //находятся между двумя первыми двоеточиями или после
//первого (при отсутствии второго).
procedure handlequeue(var Queue: TQueue);
var
pTemp, pTempl: TQueue;
begin
pTemp:=Queue;
if Queue<>nil then
begin
//Исключение символов до первого двоеточия включительно.
while pTempOnil do
begin
if pTempA.info=':' then break;
Queue:=QueueA.pNext;
dispose(pTemp);
pTemp:=Queue; end;
if Queue<>nil then
begin
Queue:=QueueA.pNext;
dispose(pTemp);
pTemp:=Queue;
if pTempOnil then
begin
//Поиск второго двоеточия.
if pTempA.info<>':' then
begin
while pTempA.pNext<>nil do
begin
if pTempA.pNextA.info=':' then break;
pTemp:=pTempA.pNext;
end;
//Удаление всех символов после второго двоеточия,
//если оно найдено, и между двумя двоеточиями
//есть хотя бы один символ.
if pTemp A.pNext<>nil then
begin
pTempl :=pTempA.pNext;
\while pTempl<>nil do
begin
pTempA.pNext:=pTempA.pNextA.pNext;
dispose(pTemp 1);
pTemp 1 :=pTempA.pNext;
end;
end;
end else begin
//Два двоеточия находятся рядом
//удаление всей оставшейся очереди.
ErrCode:=l;
pTemp:=Queue;
while Queue<>nil do
begin Queue :=QueueA.pNext;
dispose(pTemp);
96
pTemp:=Queue; end; end;
end else begin
//Найденое двоеточие - последнее в очереди, очистка очереди.
ErrCode:=2;
dispose(Queue);
Queue:=nil; end;
end
else ErrCode:=3;
end;
end;
//Процедура реагирования на ввод символа
procedure TForml.EditlChange(Sender: TObject);
begin
ErrorCode:=0;
ifEditl.Texto'Mhen
begin
Queue 1 :=StringToQueue(Editl .Text);
handlequeue(Queuel, ErrorCode);
ifErrorCode=0 then
Edit2.Text:=QueueToString(Queue 1) else
case EirorCode of
1: Edit2.Text:='0uiH6Ka - два двоеточия находятся рядом!1;
2: Edit2.Text:='Oiira6Ka - двоеточие одно, и оно последнее!';
3: Edit2.Text:^'Onra6Ka - двоеточия отсутствуют!';
end;
end
else Edit2.Text:='OuiH6Ka - строка пуста!';
end;
//Инициализация пустой очереди
procedure TForml.FormCreate(Sender: TObject);
begin
Queue 1 :=nil end;
//Выход при нажатии на "Esc "
procedure TForml.EditlKeyPress
(Sender: TObject; var Key: Char);
begin
if key=#27 then Form 1 .Close
end;
END.
6. Описание тест-примеров
Тест-примеры, используемые при отладке настоящей программы, разбиты на две группы:
неверные входные данные (четыре тест-примера) и верные входные данные (три тест-примера).
Полное описание тест-примеров приведено в разделе «Результаты контрольного прогона».
7. Результаты контрольного прогона программы
7.1. Случаи с неверными входными данными \
Отсутствуют двоеточия
Вводные данные: 1234567890
Результат обработки: Ошибка – двоеточия отсутствуют!
Двоеточие одно и стоит в конце строки
Вводные данные: 1234567890:
Результат обработки: Ошибка – двоеточие одно и стоит в конце строки!
Два двоеточия стоят рядом
Вводные данные: 123::4567890
Результат обработки: Ошибка – два двоеточия стоят рядом
Поле «Входные данные» пусто
Вводные данные:
Результат обработки: Ошибка – строка пуста.
7.2. Случаи с верными входными данными
Двоеточие одно, не в конце строки
Вводные данные: 123:4567890
Результат обработки: 4 5 6 7 8 9 0
Два двоеточия
Вводные данные: 123:456:7890
Результат обработки: 456
Три двоеточия – выводятся символы, стоящие между двумя первыми двоеточиями
Вводные данные: :123:456:7890
Результат обработки: 1 2 3
8. Список использованной литературы
1. Джесс Либерти, "C++ за 21 день", SAMS, 2001.
2. В.Гофман, А.Хомоненко, "Delphi 6", bhv-Петербург, 2002
3. Сыромятнийов В.П., «Структуры и алгоритмы обработки данных на ЭВМ», лекции, М.,
МИРЭА, 2003-2004 уч.год
ПРИМЕР 2. (Вариант № 2.4)
Обработка последовательностей символов в динамической памяти.
1. Постановка задачи
Используя линейный односвязный (однонаправленный) список, необходимо:
составить программу ввода символов SI, S2, ... SN, среди которых есть повторяющиеся символы.
При этом произвести следующие действия:
• Исключить в списке все элементы с повторяющимися символами.
• Элемент, содержащий символ "А ", заменить на три элемента содержащих символ "В ".
• Провести распечатку исходного и результирующего списков.
Примечание'
Конец ввода с клавиатуры осуществляется по комбинации клавиш "Ctrl+Z", что соответствует
значению True логической функции EOF.
Комментарии к формальному заданию:
Ввод повторяющихся символов оставлен на усмотрение пользователя, пользователь может
вводить любые символы кодировки Win 1251, кроме так называемых управляющих символов.
Исключаются последующие (соседние) повторяющиеся символы, кроме первого. Под распечаткой
списка, понимается вывод на экран, программа реализуется с использованием GUI OS Windows'"1,
вывод списков должен быть осуществлен с помощью компонентов библиотеки визуальных
компонентов среды разработки Delphi , расположенных на странице стандартных визуальных
компонент. Окончание ввода списка устанавливается пользователем, путем запуска процедуры
обработки списка.
2. Описание используемых структур данных
Для реализации ЛОС используются следующие типы:
type
Ptr = ^Node;
опережающее описание указательного типа
Node = Record;
описание структуры элемента списка
Next: Ptr;
поле указатель на следующий элемент
Data: Char;
информационное поле
end;//Node
Целью лабораторной работы является овладение навыками работы с объектами, создаваемыми в
динамической памяти, и закрепление принципов работы со списками безотносительно к языку
программирования, поэтому, не были использованы возможности Delphi"11 по работе со списками
{классы TList, TString-List, ect.) и не был создан класс, инкапсулирующий необходимые методы и
свойства для работы с заданным типом данных.
Для работы со списками в программе используются процедуры, написанные на языке Паскаль и
легко переводящиеся на любой язык программирования высокого уровня. Отдельные элементы
программы написаны на языке Object Pascal среды разработки Delphi, с использованием
стандартных компонент и классов Delphi™.
3. Описание пользовательского интерфейса Программа использует элементы стандартного
графического пользовательского интерфейса оболочки ОС Windows"11. Существует одна основная
форма, несколько стандартных диалогов Windows"", и несколько стандартных окон сообщений
Windows.
3.1. Пользовательские экраны (формы)
рис. 1.1
рис. 1.2
рисуночков пока нету
На рис. 1.1 и 1.2 показан основной пользовательский экран, который появляется сразу после
запуска программы. У окна имеется: строка заголовка окна, в которой указано название
программы, и стандартная кнопка закрытия окна, которая служит для завершения сеанса работы с
программой. На форме расположены: надпись крупными красными буквами, которая служит для
отображения текущего состояния программы (на стандартно используемую для этих целей панель
статуса - StatusBar, большинство пользователей не обращают внимание); два элемента
построчного отображения списка - StringGrid, используемые для ввода начального списка
пользователем (левый) и вывода обработанного списка на экран (правый); пять кнопок,
выполняющих различные функции. Для всех элементов, при наведении на них курсора мыши,
создается всплывающая подсказка - Hint.
3.2. Описание диалога
Фокус клавиатурного ввода находится на первой строке компоненты ввода типа StringGrid, что
позволяет осуществлять ввод символов сразу после запуска программы. При вводе символа,
добавляется следующая строка, и фокус ввода переходит к ней (рис.1.1). Тем самым реализован
непрерывный ввод символов. Любой из ранее введенных символов можно отредактировать и
удалить. Автоматически отслеживается состояние управляющих элементов (кнопок), т.е. в каждый
момент времени проверяется условие возможности вызова процедур программы, назначенных
элементам управления. Для этого необходимо нажать следующие кнопки: генерации списка
случайным образом картинка, загрузки списка из ранее сохраненного файла картинка и
обработки введенного списка картинка. На рис. 1.2 изображено окно программы после обработки
списка. В программе предусмотрены функции: сохранение в файл обработанного списка
картинка. и реинициализация программы для очередного сеанса работы картинка. Таким
образом, пользователь получает дополнительную подсказку для дальнейших действий. Обратная
связь с пользователем усиливается изменением надписи на форме, изменением формы курсора,
при выполнении обработки списков. При необходимости подтверждения некоторых действий, для
получения от пользователя дополнительной информации, для информирования пользователя о
произошедших ошибках, динамически создаются соответствующие окна. Диалоговые и
информационные окна создаются средствами оболочки ОС пользователя, и поэтому имеют
привычное для него оформление.
3.3. Контроль исходных данных
Согласно постановке задачи, пользователь может вводить символы, по одному на каждый элемент
списка. Так как рабочей средой программы является ОС Windows"11, то обеспечивается ввод
символов в кодировке ОС (ANSI + Winl251).
Пользователю закрыта возможность прямого ввода управляющих символов. Например, EOF, - при
попытке «прямого» ввода выдается сообщение об ошибке. Для удобства оставлена возможность
использования клавиш буфера обмена и Backspace. Процедура генерации символов использует
символы, коды которых лежат в диапазоне с 32 по 255.
4. Описание алгоритма
Используется стандартный для приложений ОС Windows"" алгоритм выполнения программы.
После запуска программа инициализирует объекты, переменные и запускает цикл обработки
событий ОС. Ниже должна быть представлена схема состояний программы и действий
пользователя. Общую схему работы программы нагляднее представлять в графическом виде.
Алгоритмы работы программ можно представлять в графическом виде с помощью блок-схем, или
записанными на языке структурного программирования.
5 Описание тест-примера
Тест-пример моделирует ситуацию, которая может возникнуть в процессе функционирования
программы. Исходя, из условий постановки задачи, необходимо составить входной текст, который
будет включать в себя повторяющиеся элементы, элементы 'А', повторяющиеся элементы 'А' и
прочие элементы.
Тест-пример содержит следующий поток символов:
Q,E,A,C, D,D,d,A,A,A,ll, !
6. Результаты контрольного прогона программы
Исходный список:
Результат:
1.Q
2.E
3.A
4.C
5.D
6.D
7.d
8.A
9.A
10.A
Q
E
B
B
B
C
D
D
B
B
Download