Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практические работы для ИС-271.doc
Скачиваний:
3
Добавлен:
01.05.2025
Размер:
3.07 Mб
Скачать

Лабораторная работа № 12. Реализация задачи табулирования функции на заданном отрезке в среде Turbo Pascal.

Цель работы:

  • закрепить теоретические знания об условных и циклических операторах

  • научиться использовать возможности языка программирования для реализации задачи табулирования функции на заданном отрезке

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

Оборудование:

  • программная часть – интегрированная среда Turbo Pascal 7.0

  • аппаратная часть - ПЭВМ IBM PC/XT

  • задание на выполнение работы в электронном варианте

Теоретическая часть

Табулирование функции — это вычисление значений функции при изменении аргумента от некоторого начального значения до некоторого конечного значения с определённым шагом. Именно так составляются таблицы значений функций, отсюда и название — табулирование. Необходимость в табулировании возникает при решении достаточно широкого круга задач. Например, при численном решении нелинейных уравнений f(x) = 0, путём табулирования можно отделить (локализовать) корни уравнения, т.е. найти такие отрезки, на концах которых, функция имеет разные знаки. С помощью табулирования можно (хотя и очень грубо) найти минимум или максимум функции. Иногда случается так, что функция не имеет аналитического представления, а её значения получаются в результате вычислений, что часто бывает при компьютерном моделировании различных процессов. Если такая функция будет использоваться в последующих расчётах (например, она должна быть проинтегрирована или продифференцирована и т.п.), то часто поступают следующим образом: вычисляют значения функции в нужном интервале изменения аргумента, т.е. составляют таблицу (табулируют), а затем по этой таблице строят каким-либо образом другую функцию, заданную аналитическим выражением (формулой). Необходимость в табулировании возникает также при построении графиков функции на экране компьютера.

Практическая часть

Пример.

Дана функция . Протабулировать функцию на отрезке [m…n] с шагом h при m=1,2; n=2,5’ b=2; h=0.2.

Каждая пара значений x и y должна быть записана в таблицу результатов счета.

Запишем алгоритм решения задачи.

1. Зададим значение неизменяемым параметрам b, m, n, h.

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

3. Определим начальное m значение переменной x.

4. Вычислим значение функции в этой точке по заданной формуле.

5. Выведем на экран значения x, y.

6. Увеличим значение x на величину шага h.

7. Проверим, достигло ли это значение конечного значения n.

8. Если – нет, то возвращаемся на пункт 4, если – да, то переходим на пункт 9.

9. Конец.

В соответствии с алгоритмом составим программу:

Program LAB12;

Label 1,2;

Const

m=1.2; n=2.5; b=2; h=0.2;

Var

x, y: real;

Begin

writeln (‘x y’);

1: y:=sin(x) + 5*b;

writeln(x:6:1,y:6:1);

x:=x+h;

if x<=n then goto 1 else goto 2;

2: End.

Прокомментируем работу программы:

  • вначале после ключевого слова Program объявляется имя программы, которое обязательно должно начинаться с буквы латинского алфавита или символа _ (в общем случае ключевое слово PROGRAM с именем программы может отсутствовать);

  • в разделе Label опишем используемые в программе метки;

  • в разделе Const задаем значения неизменяемым переменным;

  • в разделе Var описываем тип ля аргумента x и результата y;

  • оператор Write выводит на дисплей в свободном формате символьную константу, которая заключена в апострофы. Эта последовательность символов является наименованием столбцов последующей таблицы результатов;

  • вычисляем значение y по заданной формуле;

  • выводим на экран полученное значение и соответствующее ему значение аргумента;

  • увеличиваем значение аргумента на заданную величину шага;

  • проверяем: достигло ли это значение заданного конечного? Если – да, программа завершает работу, если – нет, то осуществлется переход на метку 1, в строку, где вычисляется очередное значение y.

Задания для самостоятельного выполнения

  1. Ознакомиться с теоретической частью инструкции и рассмотреть пример.

  2. Составить блок-схему решения задачи.

  3. Разработать программу в среде Turbo Pascal 7.0. с реализацией цикла посредством условного оператора.

  4. Организовать вывод значения аргумента и вычисленного значения функции в виде таблицы.

  5. ТАБЛИЦА ФУНКЦИИ Y(X)

X Y

…….. ……..

…….. ……..

  1. Разработать второй вариант программы в среде Turbo Pascal 7.0. с реализацией цикла через циклический оператор (вторым вариантом дополнить текст программы первого варианта).

  2. Проверить работу программы. Проанализировать результаты по вариантам 1,2.

  3. На листе бумаги составить график функции по полученным значениям.

  4. Ответить на контрольные вопросы.

  5. Результаты выполнения лабораторной работы оформить в виде отчета.

Индивидуальные задания:

Вычислить значение функции, заданной в таблице. Осуществить вывод значений вводимых исходных данных и результат вычисления значения функции, сопровождая вывод наименованиями переменных.

Варианты

задания

Функция

Условие

Исходные

данные

Диапазон и шаг

изменения

аргумента

1

2

3

4

5

6

7

8

__

10

11

12

13

14

15

a = 1,2

b = 2

Контрольные вопросы

  1. Какой процесс называют табулированием функции?

  2. Какими способами можно осуществить процесс табулирования функции?

  3. Какие действия выполняются оператором безусловного перехода?

  4. Что такое вычислительный процесс разветвляющейся структуры? Как организовать разветвление вычислений: а) на две ветви; б) на три ветви?

  5. Зачем необходимо при отладке программы тестировать все ветви алгоритма?

  6. Как определить: какой цикл следует использовать в том или ином случае?

  7. Почему при решении данной задачи нельзя использовать цикл For?

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

  9. Почему при решении данной задачи необходимо использовать и условный оператор, и оператор цикла?