Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа 3(прогр.).doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.47 Mб
Скачать

Лабораторная работа 3 Организация разветвляющихся вычислительных процессов Требования по выполнению лабораторной работы

В данной лабораторной работе требуется выполнить четыре задания. Цель первого задания – получить практические навыки по созданию логических выражений средствами Delphi и реализации разветвляющихся процессов посредством простого оператора IF. Цель второго задания – получение практических навыков по разработке и реализации алгоритмов, описывающих сильно ветвящиийся вычислительный процесс. Цель третьего и четвертого заданий – закрепление полученных знаний.

Варианты заданий приведены в табл.4.

Задание 1. Реализация простых развеветвляющихся вычислительных процессов

Разработать программу, проверяющую попадание точки в указанную область тремя способами: с использованием оператора if с условием; с использованием логической переменной вместо условия в операторе If; вывод значения логической переменной, как результата работы программы.

Разработать проект программы c именем Lab3_1_1 согласно вашему варианту, включая все этапы разработки. Описание модели решения задачи выполните согласно примеру описания модели, приведенному в данной лабораторной работе.

  1. Для определения попадания точки в область использовать оператор IF вида:

IF (логическое выражение, описывающее область) then …..

  1. Выполнить тестирование программы на подготовленных тестах.

  2. Создать копию программы средствами Windows с именем Lab3_1_2.

  3. Внести следующие изменения в код программы Lab3_1_2:

    • объявить логическую переменную;

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

    • заменить логическое выражение в операторе if на логическую переменную;

  1. Выполнить тестирование программы на подготовленных тестах.

  2. Создайть копию программы Lab3_1_2 средствами Windows с именем Lab3_1_3.

  3. Внести новое изменение в программу Lab3_1_3: удалить оператор IF и записать оператор вывода вида Writeln(логическая переменная).

  4. Выполнить тестирование программы на подготовленных тестах.

Пример описания модели задачи

На рис.3. представлена исследуемая область, включающая две области: I – прямоугольник и II - круг радиуса 1 c с центром в точке 4.

Исследование области

Рис.3. Исследуемая область

  • описание каждой области в виде системы отношений (или отдельного отношения) - определение множества точек, удовлетворяющих условию

  • определение логической операции, связывающей отдельные области (пересечение описанных множеств или их объединение)

ИЛИ

  • представление каждой системы отношений в форме логического выражения, описывающего область

I: (-1≤х ) and (x≤ 1) and (-1≤y ) and (y≤ 1)

II: sqr(x)+sqr(y)<1

  • представление выражения, определяющего всю область

(-1≤х ) and (x≤ 1) and (-1≤y ) and (y≤ 1) OR sqr(x)+sqr(y)<1

Пример описания трех способов проверки попадания точки в заданную область

Способ 1. Явно указав в операторе IF логическое выражение, для проверки попадания точки в указанную область

if (x>0) and (x<1) and (y>0) and (y<1) then

writeln(‘ДА’)

Else

Writeln(‘Нет’);

Способ 2. Использование логической переменной t вместо условия оператора IF.

t:= (x>0) and (x<1) and (y>0) and (y<1);

If t then

writeln(‘ДА’)

Else

Writeln(‘Нет’);

Способ 3. Использование значения логической переменной t при выводе результата программы.

t:= (x>0) and (x<1) and (y>0) and (y<1);

writeln(t);

Задание 2. Реализация сильноветвящихся вычислительных процессов с помощью оператора IF

Разработать программу, вычисления значения параметрической функции Y, зависящей от х и а.

  1. Разработайте проект программы согласно вашему варианту, включая все этапы разработки.

  2. На этапе постановки задачи определите область определения функции, внимательно изучив все диапазоны х для вычисления значения параметра а и функции y. Отобразите область допустимых значений х на координатной оси. Определите номер ветви в представлении функции а(х). Например, так

  1. Включите в алгоритм программы блок контроля входных данных на принадлежность х области допустимых значений.

  2. Представьте алгоритм программы в виде блок схемы.

  3. В тексте программы предусмотрите вывод входных данных (согласно тесту), указывая при этом номер теста.

  4. В каждую ветвь оператора IF, представляющего вычисление значения функции а(х) в зависимости от значения х, включите оператор вывода, сообщающий о том какая ветвь отработала в этом тесте

  5. Отладьте программу на подготовленных тестах.

  6. Выполните трассировку программы для контроля правильной работы логики алгоритма при различных данных .

Задание 3. Использование оператора CASE при реализации сильноветвящихся вычислительных процессов

Разработать интерфейс пользователя для программы задания 1, позволяющий пользователю выбрать способ решения задачи.

  1. Создайте программу, которая позволяет пользователю выбрать один из способов решения задачи.

  2. Выполните отладку программы на всех тестах. Тесты должны содержать множество точек, попадающих в область и нет.

Пример программы

Вывод текстового меню для выбора способа решения задачи.

Program P1;

Var

Number:byte;

Begin

Writeln(‘1.Способ_1: IF с условием’);

Writeln(‘2.Способ_2: IF с условием - переменной’);

Writeln(‘3.Способ_3: без использования IF ’);

writeln(‘Выберите способ и введите его номер 1 или 2 или 3’);

Readln(Number);

CASE Number of

1: Writeln(‘Реализация первого способа’);

2: begin

Writeln(‘Реализация второго способа’);

end;

3: begin

Writeln(‘Реализация третьего способа’);

end

ELSE

writeln(‘Ошибка в номере’)

END;

End.

Задание 4. Автоматизация отладки программы

Разработайте программу, обеспечивающую автоматическую отладку алгоритма для всех разработанных вами тестов, так, чтобы при одном запуске программы можно было выполнить отладку на всех тестах и ввести по желанию новые.

  1. Заключите весь алгоритм в управляющую конструкцию – повторение (цикл). Воспользуйтесь для этого оператором цикла While. Количество повторений цикла определяется с помощью счетчика (переменная i) – номера теста и количества введенных тестов (переменная n).

Пример организации цикла

begin

writeln(‘Укажите количество тестов’); Readln(n);

i:=1;

while i<=n do

begin

Вывод номера теста: i

Тестируемый алгоритм

……………………………..

… inc(i) //переход к следующему тесту

end;…………………………..

……………….

end.

  1. Отладьте программу на тестах, подготовленных в задании 2.

  2. Внесите изменения в условие продолжения цикла, так чтобы цикл продолжил выполняться, если пользователь ответил положительно и завершился, если пользователь отказался продолжать тестирование.

Пример алгоритма программы автоматизированной отладки

begin

writeln(‘Укажите количество тестов’); Readln(n);

i:=1;

otvet:= 'Y';

while (i<=n) or (otvet='Y') or( otvet='y') do

begin

Вывод номера теста: i

Тестируемый алгоритм

……………………….

if i>=n then

Begin

writeln('Продолжим тестирование? Y/N');

readln(otvet)

end;

inc(i);

end

end.

  1. Отладьте программу.

  2. Выполните тестирование данной программы: для n тестов .

Таблица 4