- •1. Краткие теоретические сведения
- •1.1. Понятие циклического вычислительного процесса
- •1.2. Типовая блок-схема организация цвп
- •1.3. Классификация цвп
- •Повторений и специальной переменной - счетчиком циклов
- •1.4. Общие сведения об операторах цикла
- •1. Оператор while:
- •2. Оператор do…while:
- •3. Оператор for:
- •1.5. Оператор цикла типа "прогрессия" for
- •1.6. Основные правила и порядок выполнения оператора цикла for:
- •Оператор цикла со спецификацией, заданной скалярным выражением
- •1.7. Оператор цикла while
- •1.5.4.1. Оператор цикла while
- •1.5.4.3. Оператор цикла while
- •1.5.5.4. Оператор цикла while
- •1. Цикл с предусловием:
- •1.5.5.5. Основные правила использования и порядок выполнения оператора цикла while:
- •1.5.5.6. Пример № 1
- •1.8. Оператор цикла do...While
- •1.5.5.1. Оператор цикла do while
- •1.5.5.2. Оператор цикла с постусловием do
- •1.5.5.3. Оператор цикла do while
- •1.5.5.4. Оператор цикла do-while
- •2. Цикл с постусловием:
- •1.9. Табулирование функций
- •1.10. Вычисление конечных сумм и произведений
- •1.11. Правила организации циклических алгоритмов
- •1.12. Операторы перехода и их использование в циклах
- •1.12.1. Оператор прерывания циклов break
- •1.Break – оператор прерывания цикла.
- •1.12.2. Оператор перехода к следующей итерации цикла continue
- •Оператор продолжения continue для циклов do, while, for
- •1.12.3. Оператор перехода goto
- •1.12.4. Оператор возврата из функции return
- •Замечание:
- •2. Задание
- •2.1. Изучить теоретические сведения
- •2.4. Задания для выполнения на занятиях
- •2.4.1. Задание 1. Табуляция неразветвляющейся функции
- •2.4.1.1. Условие задания
- •Варианты заданий
- •2.4.2. Задание 2. Табулирование разветвляющейся функции
- •2.4.2.1. Условие задания
- •2.4.3. Задание 3. Табулирование разветвляющейся функции
- •2.4.3.1. Условие задания
- •2.5. Задания для дома
- •2.5.1. Задание 1. Табулирование неразветвляющейся функции в равноотстоящих точках
- •2.5.1.1. Условие задания
- •2.5.2. Задание 2. Табулирование разветвляющейся функции в равноотстоящих точках
- •2.5.2.1. Условие задания
- •2.5.2.2.Пример программы табулирования функции
- •3. Выводы
- •4. Требование к отчету
- •4. Краткие теоретические сведения.
- •5. Вопросы для самоконтроля
- •Литература
- •1. Краткие теоретические сведения 2
- •1.1. Понятие циклического вычислительного процесса 2
2.5.2.2.Пример программы табулирования функции
Постановка задачи
Написать программу табулирования (печати таблицы значений) кусочно-заданной функции у = f(x) на интервале от хнач до хкон с шагом х. Таблицу снабдить заголовком и шапкой. Вид функции определяется формулой
Если а > 10, то значения функции должны выводиться в виде целых чисел. Значения параметра а, а также хнач, хкон и х вводятся с клавиатуры.
Описание алгоритма решения задачи в словесной форме
В словесной форме алгоритм решения задачи можно сформулировать следующим образом:
1) Ввести с клавиатуры исходные данные: а, хнач, хкон и х.
2) Вывести заголовок и шапку таблицы.
3) Положить х = хнэч.
4) Вычислить значение функции у по вышеприведенной формуле.
5) Если а > 10, то привести значение функции у к целому типу.
6) Вывести на экран строку таблицы значений функции.
7) Увеличить значение х на величину х.
8) Если значение х не превышает хкон, то перейти к пункту 4, иначе закончить выполнение программы.
Так как пункты 4...7 алгоритма выполняются многократно, то для их выполнения необходимо организовать цикл. Напишем два варианта программы с использованием циклов while и for.
Использование цикла while
Ниже представлена программа табулирования функции с использованием цикла while:
#include <conio.h> // подключение библиотеки функций ввода-вывода
#include <iostream.h> // подключение библиотеки потокового ввода-вывода
#include <math.h> // подключение библиотеки математических функций
#include <iomanip.h> // подключение библиотеки средств манипулирования потоками
int main ()
// программа табулирования функции y=f(х)
// на интервале от хn ло xk с шагом dx
{
float а, // параметр
х, // аргумент функции у
хn, // начальное значение аргумента х
xk, // конечное значение аргумента х
dx, // шаг
у; // значение функции у
clrscr ();
// ввод а, хn, xk, dx
cout << "Bвeдите параметр а: "; cin >> a;
cout << "Bвeдите хn: " , cin >> xn;
cout << "Введите xk: ", cin >> xk;
cout << "Bвeдите шаг dx: ", cin >> dx;
// Вывод заголовка и шапки таблицы
cout << " Та6лица значений функции у = f (х) " << endl
<< " |-------------------------- -----------|" << endl
<< " | х | у |" << endl
<< " |-----------------|--------------------|" << endl;
// Табуляция функции у = f (x)
x=xn; // начальное значение аргумента х
{
// Вывод очередной строки таблицы
// Вывод аргумента x
cout << " I " << "x= "<< setw(9) << x << " I ";
// Вычисление значения функции y
(х<0) ? (у=а*а) : ((х<10) ? (у=а*х) : (у=5*а));
// Вывод значения функции y
if (а>10)
//Целочисленное значение у
cout << " " << setw(5) << "y= " << setw(10)<<(int)y << " I " << endl;
else
//Вещественное значение у
cout << " " << setw(5) << "y= " << setw(10)<<y << " I " << endl;
x+=dx; // приращение аргумента x
}
cout << " |-----------------|--------------------|" << endl;
cout << "Нажмите любую клавишу..." ;
getch();
return 0;
}
Поскольку формулы, определяющие функцию у, являются достаточно короткими, то вычисление значения функции у целесообразно осуществлять не с помощью инструкции if … else, а с помощью условного выражения.
Вывод таблицы значений функции осуществляется операторами потокового ввода-вывода.
Использование цикла for
Ниже представлена программа табулирования функции с использованием цикла for:
#include <conio.h> // подключение библиотеки функций ввода-вывода
#include <iostream.h> // подключение библиотеки потокового ввода-вывода
#include <math.h> // подключение библиотеки математических функций
#include <iomanip.h> // подключение библиотеки средств манипулирования потоками
int main ()
// программа табулирования функции y=f(х)
// на интервале от хn ло xk с шагом dx
{
float а, // параметр
х, // аргумент функции у
хn, // начальное значение аргумента х
xk, // конечное значение аргумента х
dx, // шаг
у; // значение функции у
clrscr ();
// ввод а, хn, xk, dx
cout << "Bвeдите параметр а: "; cin >> a;
cout << "Bвeдите хn: " , cin >> xn;
cout << "Введите xk: ", cin >> xk;
cout << "Bвeдите шаг dx: ", cin >> dx;
// Вывод заголовка и шапки таблицы
cout << " Та6лица значений функции у = f (х) " << endl
<< " |-------------------------- -----------|" << endl
<< " | х | f (x) |" << endl
<< " |-----------------|--------------------|" << endl;
// Табуляция функции у = f (x)
cout.precision(3), cout.setf{ios::showpoint);
cout.setf(ios::left,ios::adjustfield);
cout.setf(ios::fixed,ios::floatfield);
for(x=xn;x<=xk;x+=dx)
{
// Вывод очередной строки таблицы
// Вывод аргумента x
cout << " I " << "x= "<< setw(9) << x << " I ";
// Вычисление значения функции y
(х<0) ? (у=а*а) : ((х<10) ? (у=а*х) : (у=5*а));
// Вывод значения функции y
cout << " " << setw(5) << "y= " << setw(10);
// Целочисленное или вещественное у
(а>10) ? cout << {int)y : cout <<y;
cout << " I " << endl;
}
//Целочисленное значение у
cout << " " << setw(5) << "y= " << setw(10)<<(int)y << " I " << endl;
else
//Вещественное значение у
cout << " " << setw(5) << "y= " << setw(10) <<y << " I " << endl;
x+=dx; // приращение аргумента x
}
cout << " |-----------------|--------------------|" << endl;
cout << "Нажмите любую клавишу..." ;
getch();
return 0;
}
В вышеприведенной программе ввод-вывод данных осуществляется с помощью объектов cin и cout. Последовательность инструкций cout.precision(3), cout.setf(ios::showpoint); cout.setf(ios::left,ios::adjustfield); cout.setf(ios::fixed,ios::floatfield);
задает формат для вывода значения аргумента х и значения функции у в строке таблицы. Для установки ширины поля используется манипулятор потока setw. Функция-элемент объекта cout precision позволяет задать точность печатаемого вещественного числа (т.е. число разрядов справа от десятичной точки). Функция-элемент setf используется для управления флагами состояния формата.
Флаг ios: : showpoint устанавливается для вывода чисел с обязательной печатью десятичной точки и нулевых младших разрядов (нулей в конце числа). Так. например, значение 79.0 без установки ios : : showpoint будет напечатано как 79, а с установкой ios : : showpoint — как 79 . 00000 (количество нулей определяется заданной точностью).
Флаги ios : : left и ios : : right содержатся в статическом элементе данных ios : : adjustf ield и позволяют выравнивать печать соответственно по левой или правой границам поля.
Флаги ios : : fixed и ios: : scientific, управляющие форматы вывода вещественных чисел.
cout.setf{ios::scientific, ios::floatfield);
устанавливает экспоненциальный формат вывода вещественных чисел (формат с плавающей точкой). Для отображения чисел в формате с фиксированной точкой следует записать
cout.setf{ios::fixed, ios::floatfield);
Здесь функция-элемент setf объекта cout используется для управления установкой флагов формата вывода вещественных чисел ios: : scientific или ios: : fixed, которые содержатся в статическом элементе данных ios : : f loatf ield.