- •Лабораторная работа №1. Конструирование, анализ кода и отладка программ в интегрированной среде программирования Turbo Pascal.
- •1 Порядок выполнения
- •2 Содержание отчета
- •Сортировка выбором.
- •Сортировка обменом («Пузырьковая сортировка»)
- •Двоичный поиск (или бинарный, или поиск делением пополам)
- •Работа с двумерными массивами (матрицами)
- •Сортировка вставкой.
- •Сортировка выбором.
- •Сортировка обменом («Пузырьковая сортировка»)
- •Двоичный поиск (или бинарный, или поиск делением пополам)
- •Работа с двумерными массивами (матрицами)
- •Сортировка вставкой.
- •Сортировка выбором.
- •Сортировка обменом («Пузырьковая сортировка»)
- •Двоичный поиск (или бинарный, или поиск делением пополам)
- •Работа с двумерными массивами (матрицами)
Лабораторная работа №1. Конструирование, анализ кода и отладка программ в интегрированной среде программирования Turbo Pascal.
1 Порядок выполнения
Ознакомиться с вариантом задания.
Набрать программный код, в соответствии со своим вариантом, в редакторе интегрированной среды (ИС).
Провести предварительный анализ кода и определить:
оптимальность кода – дублирующиеся и не используемые программные элементы;
определить список глобальных и локальных переменных, текущие значения которых следует проверить во время исполнения программы;
определить список динамических переменных и оценить максимальный объем стека программы и динамической области памяти;
создать список операторов программы, в том числе и условных, для структурного тестирования.
Подготовить листинг программы к «тонкой» настройки кода:
установить точки останова программы;
установить необходимые директивы компилятора: {$I+} для контроля операций ввода-вывода, {$S+} для контроля переполнения стека, условные директивы для проверки конструкции If…Then…Else…, установить оптимальный размер стека и Heap-области директивой {$M…}.
Откомпилировать и отладить программу используя возможности ИС.
2 Содержание отчета
Наименование и задание на лабораторную работу.
Документ «Анализ кода»:
краткое описание программного кода и его алгоритм;
изменения в программном коде принятые для его оптимизации и корректной работы;
описание отладочных элементов – точки останова, директивы.
Листинг программы с отладочными элементами.
3 РЕКОМЕНДОВАННАЯ ЛИТЕРАТУРА
Основная:
В.П. Прошин. Алгоритмические языки программирования. Лекции. – На правах рукописи. ММК ГВУЗ ПГТУ.: Мариуполь, 2010.-255-289с. [Электронный ресурс]. Режим доступа: Administr\Graf\Incomming\Для сайта ММТ\Специальности\РПО\Дисциплины\Основы алгоритмизации и программирования\Лекции\Конспект лекций.
Дополнительная:
А. Федоров, Д. Рогаткин. Borland Pascal в среде Windows.-К.: Диалектика, 1993.-510с.
2. В.В. Фаронов. Turbo Pascal 7.0. Учебное пособие.-М.:ВШ, 2002.-575с.
ВАРИАНТЫ ЗАДАНИЙ
ВАРИАНТ №1
Сортировка вставкой.
Принцип метода:
Массив разделяется на две части, отсортированную и не отсортированную. Элементы из не отсортированной части поочередно выбираются и вставляются в отсортированную часть так, чтобы не нарушать в ней упорядоченность элементов. В начале работы алгоритма в качестве отсортированной части массива принимают только один первый элемент, а в качестве не отсортированной – все остальные элементы.
Т.о. алгоритм будет состоять из n-1 – го прохода (n– размерность массива), каждый из которых будет включать четыре действия:
Взятие очередного i-го не отсортированного элемента и сохранение его в дополнительной переменной.
Поиск позиции jв отсортированной части массива, в которой присутствие взятого элемента не нарушит упорядоченности элементов.
Сдвиг элементов массива от i-1-го доj-1-го вправо, чтобы освободить найденную позицию вставки.
Вставка взятого элемента в найденную j-ю позицию.
Program InsertionSert;
uses Crt;
const
n=20; {длина массива}
type
TVector=array[1..n] of Real;
TStudentCard = record
SurName : String20; {Фамилия}
Name : String20; {Имя}
FatherName : String20; {Отчество}
Year : Integer; {Год рождения}
HomeAddress: String; {Домашний адрес}
GroupCode : String7; {Шифр группы}
Marks : Tmarks; {Оценки за последний семестр}
end;
Tgroup = array[1..20] of TStudentCard;
var
Vector: TVector;
B : Real;
i,j,k : Integer;
GroupRPZ_10_02,
GroupRPZ_09_01 : Tgroup;
begin
ClrSrc;
GroupRPZ_10_02[1].SurName := 'Vakulanko';
GroupRPZ_10_02[1].Marks.Prog := 3;
GroupRPZ_10_02[1].Marks.Philosofy := 5;
GroupRPZ_10_02[1].SurName := 'Danchenko';
GroupRPZ_10_02[1].Marks.Prog := 3;
GroupRPZ_10_02[1].Marks.Philosofy := 3;
GroupRPZ_10_02[1].SurName := 'Kuznesov';
GroupRPZ_10_02[1].Marks.Prog := 3;
GroupRPZ_10_02[1].Marks.Philosofy := 4;
Writeln ('Введите элементы массива');
for i:=1 to n do Read (Vector[i]); Readln;
{-----------------------------------------}
for i:=2 to n do
begin
B:=Vector[i]; {взятие неотсортированного элемента}
{цикл поиска позиции вставки}
j:=1;
while (B>Vector[j]) do
j:=j+1;
{после окончания цикла индекс jфиксирует позицию вставки}
{цикл сдвига элементов для освобождения позиции вставки}
for k:=i-1 downto j do
Vector[k+1]:=Vector[k];
{Вставка взятого элемента в найденную позицию}
Vector[j]:=B;
end;
{------------------------------------------}
Writeln('Отсортированный массив');
for i:=1 to n do Write(Vector[i]:8:2);
Writeln;
end.
ВАРИАНТ №2