Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Михайлов.doc
Скачиваний:
4
Добавлен:
05.03.2016
Размер:
197.12 Кб
Скачать

Лабораторная работа №1. Конструирование, анализ кода и отладка программ в интегрированной среде программирования Turbo Pascal.

1 Порядок выполнения

  1. Ознакомиться с вариантом задания.

  2. Набрать программный код, в соответствии со своим вариантом, в редакторе интегрированной среды (ИС).

  3. Провести предварительный анализ кода и определить:

  • оптимальность кода – дублирующиеся и не используемые программные элементы;

  • определить список глобальных и локальных переменных, текущие значения которых следует проверить во время исполнения программы;

  • определить список динамических переменных и оценить максимальный объем стека программы и динамической области памяти;

  • создать список операторов программы, в том числе и условных, для структурного тестирования.

  • Подготовить листинг программы к «тонкой» настройки кода:

    • установить точки останова программы;

    • установить необходимые директивы компилятора: {$I+} для контроля операций ввода-вывода, {$S+} для контроля переполнения стека, условные директивы для проверки конструкции If…Then…Else…, установить оптимальный размер стека и Heap-области директивой {$M…}.

  • Откомпилировать и отладить программу используя возможности ИС.

    2 Содержание отчета

    1. Наименование и задание на лабораторную работу.

    2. Документ «Анализ кода»:

    • краткое описание программного кода и его алгоритм;

    • изменения в программном коде принятые для его оптимизации и корректной работы;

    • описание отладочных элементов – точки останова, директивы.

  • Листинг программы с отладочными элементами.

    3 РЕКОМЕНДОВАННАЯ ЛИТЕРАТУРА

    Основная:

    1. В.П. Прошин. Алгоритмические языки программирования. Лекции. – На правах рукописи. ММК ГВУЗ ПГТУ.: Мариуполь, 2010.-255-289с. [Электронный ресурс]. Режим доступа: Administr\Graf\Incomming\Для сайта ММТ\Специальности\РПО\Дисциплины\Основы алгоритмизации и программирования\Лекции\Конспект лекций.

    Дополнительная:

    1. А. Федоров, Д. Рогаткин. 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