Лабораторная работа №8
Тема: Программирование циклических алгоритмов
Вариант 10
1. Цель работы
Изучение циклических процессов, получение практических навыков разработки алгоритмов табулирования кусочно-заданных функций и вычисления сумм числовых рядов с использованием различных операторов циклов в языке C.
2. Постановка задачи
Составить блок-схему алгоритма и разработать программу для табулирования функции f(x) на заданном пользователем промежутке [a, b] с заданным шагом h. Для организации вложенных циклов использовать разные операторы.
f(x) = (2 - x)^(2 - x), при x <= 0
f(x) = сумма от k=3 до 9 (x^(-k)), при x > 0
3. Предусловие и постусловие
Предусловие: пользователь вводит a, b и h (где a <= b, h > 0) для табулирования кусочной функции f(x) циклами while и for.
Постусловие: на экран выведена таблица значений аргумента x и функции f(x) на отрезке [a, b] с шагом h.
4. Описание алгоритма
1. Пользователь вводит параметры отрезка [a, b] и величину шага табуляции h.
2. Выполняется проверка корректности исходных данных: шаг h должен быть строго больше нуля, а граница a не должна превышать b.
3. Переменной x присваивается начальное значение левой границы a.
4. Запускается внешний цикл с предусловием while, выполняющийся до тех пор, пока значение x не выйдет за правую границу b.
5. На каждом шаге внешнего цикла проверяется знак текущего аргумента x:
• если x <= 0, то вычисляется значение первой ветки по формуле f(x) = (2 - x)^(2 - x);
• если x > 0, то запускается внутренний цикл с параметром for для счетчика k от 3 до 9, в котором накапливается сумма степеней x^(-k).
6. Полученная пара значений (x, f(x)) форматируется и выводится в консоль в виде строки таблицы.
7. К аргументу x прибавляется шаг h, после чего управление возвращается в заголовок внешнего цикла.
8. После прохождения всего отрезка внешний цикл завершает работу, и программа выходит.
5. Результаты выполнения программы
Тестовые входные данные: a = -2; b = 2; h = 0.5
+---------+-----------+
| x | f(x) |
+---------+-----------+
| -2.0000 | 256.0000 |
| -1.5000 | 80.0526 |
| -1.0000 | 27.0000 |
| -0.5000 | 9.8821 |
| 0.0000 | 4.0000 |
| 0.5000 | 1016.0000 |
| 1.0000 | 7.0000 |
| 1.5000 | 0.5732 |
| 2.0000 | 0.2480 |
+---------+-----------+
6. Вывод
В ходе выполнения лабораторной работы были изучены правила построения циклических алгоритмов и получены практические навыки их реализации. Для табулирования кусочной функции успешно применена комбинация различных операторов: внешний цикл табулирования реализован с помощью while, а внутренний цикл вычисления суммы степеней — с помощью for, что полностью удовлетворяет условию задачи. Программа корректно обрабатывает обе ветки функции, что подтверждено тестовым расчетом.