Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаба_7_СИ.doc
Скачиваний:
0
Добавлен:
31.12.2019
Размер:
201.22 Кб
Скачать

Лабораторная работа 7

Операторы цикла в языке С

1. Цель работы

     Целью лабораторной работы является получение практических навыков в работе с операторами цикла языка C.

2. Темы для предварительной проработки

  • Операторы цикла языка C. Вложенные циклы.

  • Условный оператор языка C.

3. Задание для выполнения

     Для функции Y = f(X), график которой приведен в Вашем индивидуальном задании, вывести на экран значения Y для Х = 0, 0.25, 0.5, ... 19.75. Необязательное для выполнения дополнительное требование - получить на экране график функции средствами текстового режима.

4. Варианты индивидуальных заданий

Вариант 1

Вариант 2

Вариант 3

Вариант 4

Вариант 5

Вариант 6

Вариант 7

Вариант 8

Вариант 9

Вариант 10

Вариант 11

Вариант 12

Вариант 13

Вариант 14

Вариант 15

Вариант 16

Вариант 17

Вариант 18

Вариант 19

Вариант 20

Вариант 21

Вариант 22

Вариант 23

Вариант 24

Вариант 25

Вариант 26

Вариант 27

Вариант 28

Вариант 29

Вариант 30

5. Пример решения задачи (вариант 30)

5.1. Разработка алгоритма решения.

     5.1.1. Общий метод решения      Из приведенного в индивидуальном задании графика функции видно, что функция является периодической, с периодом 4. В заданный интервал вкладываются 5 периодов функции. Так что, программа может содержать в себе цикл, в котором 5 раз будут выполняться одни и те же вычисления. В каждой итерации этого цикла должны перебираться значения x от 0 до 3.75 с шагом 0.25, т.е., должен быть вложенный цикл. В каждой итерации вложенного цикла вычисляется значение y для текущего x и выводятся результаты.      Анализ приведенного графика показывает, что каждый период его состоит из трех частей: на отрезке 0<=x<=1 график является прямой, на отрезке 1<=x<=3 - дугой, а на отрезке 3<=x<=4 - другой прямой. Следовательно, во вложенном цикле должно быть разветвление, в котором определяется текущее значение x и обеспечиваются вычисления для первого, второго или третьего случая.

     5.1.2. Вычисление функции на отрезке 0 - 1      На этом отрезке функция является функцией прямой. Формула прямой: y=ax+b. Для этого случая a=2, b=-1. Итак, окончательная формула для отрезка 0<=x<=1 такая:      y=2x-1

     5.1.3. Вычисление функции на отрезке 1 - 3      На этом отрезке функция является частью окружности. Формула окружности: (x-x0)2+(y-y0)2=R2, где (x0, y0) - координаты центра окружности, а R - радиус. Отсюда y можно определить как: . В нашем случае R=1, а координаты центра - (2, 1). Извлечение квадратного корня дает два значения - положительное и отрицательное, в нашем случае используется только нижняя полуокружность, так что следует брать только отрицательное значение. Окончательная формула для отрезка 1<=x<=3 такая:      y=2-((1-(x-2)2)

     5.1.4. Вычисление функции на отрезке 3 - 4      Для прямой на этом отрезке a=-2, b=7, окончательная формула:      y=7-2x

     5.1.5. Алгоритм вывода результатов в псевдографической форме      В каждой итерации внутреннего цикла мы получает одну ординату графика. Следовательно, для представления результата в псевдографической форме будет удобно развернуть график на 90о и в каждой строке экрана отображать значения x, y и символ, который изображает одну точку графика, смещение этого символа в строке будет пропорционально значению ординаты. Для отображения этого символа с необходимым смещением нужно преобразовать ординату в целое число (с масштабированием к размеру строки), это число будет количеством пробелов, которое нужно вывести в строке перед символом-"точкой".      В каждый период функции вкладывается 16 итераций внутреннего цикла, т.е. на экран будет выведено 16 строк на период. Целесообразно после вывода каждого периоду (который целиком помещается на экране) делать остановку в программе до команды оператора на продолжение.

     5.1.6. Схема алгоритма      Схема алгоритма показана на рисунке ниже.

5.2. Определение переменных программы

     Для реализации алгоритма понадобятся такие переменные:

n - параметр внешнего цикла, для него достаточно короткого целого значения:

short n;

x - параметр внутреннего цикла и одновременно - текущее значение абсциссы графика. Хотя его точность невелика, объявим его как double, в соответствии с общим стилем программирования на С.

double x;

y - текущее значение ординаты графика:

double y;

h - смещение в строке символа, который означает точку графика. Поскольку смещение не может превышать 80 (размер строки экрана), для этой переменной достаточно будет короткого целого:

short h;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]