Лабораторный практикум
.pdf
|
Окончание |
|
Рекуррентное выражение |
Другая форма записи |
|
s+=i |
s=s+i |
|
s/=i |
s=s/i |
|
s*=i |
s=s*i |
|
Как видно из таблицы, запись i++ и ++i означает одно и то же: увеличение значения i на единицу. Но если в выражении используется i++, то сначала будет вычислено выражение со значением i, а потом i увеличится на единицу. При использовании ++i в выражении сначала значение i увеличится на единицу и только после этого значение i будет использовано для вычисления выражения. Например, пусть а = 4, а y = а + 2. В в этой записи сначала значение а уменьшится на единицу и станет равным 3, а потом вычислится значение y, которое будет равняться 5. Если выражение для вычисления y записать в виде y = a + 2, то сначала вычислится значение y, и оно будет равно 6, а потом уменьшится значение а на единицу и станет равным 3.
Рассмотрим еще один пример. Пусть имеется следующий текст программы:
#include <iostream> using namespace std; int main()
{
int s = 0, a = 3;
for (int i = 0; i < 3; i++) s = a---i;
cout << "s=" << s << endl; return 0;
}
Определим, что в результате выполнения будет выведено на экран. Значение переменных s и a перед переходом к следующему шагу цикла занесем в таблицу.
Значения переменной |
Значения пере- |
Значения перемен- |
i |
менной s |
ной a |
До цикла |
0 |
3 |
0 |
3 |
2 |
1 |
1 |
1 |
2 |
1 |
0 |
53
Как видно из таблицы, значение s будет равно –1.
Примеры программирования циклических алгоритмов
Пример 1. Вычислить и напечатать множество значений
|
x |
1), |
x 2, |
|
cos( |
|
|
||
4 |
|
|||
y |
|
|
x |
|
|
|
|
|
|
x ln( |
x 4 |
), x 2. |
||
|
|
|
|
на интервале 0,5 ≤ x ≤ 3 c шагом x = 0,1
Текст программы с использованием оператора цикла while:
#include <iostream> #include <iomanip> #include <math.h> using namespace std; void main()
{
setlocale(LC_CTYPE, "Russian"); float x = 0.5, dx = 0.1, y; while (x <= 3)
{
if (x>2) y = cos(x / 4 + 1); else y = x + log(x / (x + 4));
cout << setw(4) << left << x << setw(10) << right << setprecision(2) << y << endl;
x += dx;
}
}
Текст программы с использованием оператора цикла do:
#include <iostream> #include <iomanip> #include <math.h> using namespace std; void main()
{
setlocale(LC_CTYPE, "Russian"); float x = 0.5, dx = 0.1, y;
do
{
if (x>2) y = cos(x / 4 + 1);
54
else |
y = x + log(x / |
(x + |
4)); |
cout |
<< setw(4) << |
left |
<< x << setw(10) |
<<right << setprecision(2) << y << endl;
x+= dx;
}while (x <= 3);
}
Текст программы с использованием оператора цикла for:
#include <iostream> #include <iomanip> #include <math.h> using namespace std; void main()
{
setlocale(LC_CTYPE, "Russian"); float x, dx = 0.1, y;
for( x=0.5;x<=3;x+=dx)
{
if (x>2) y = cos(x / 4 + 1); else y = x + log(x / (x + 4));
cout <<setw(4) << left <<x << setw(10) << right << setprecision(2) << y << endl;
}
}
По я сн е н ия к пр о гр а м м ам . В каждой программе использован тип возвращаемого результата void у функции main - это означает, что функция не возвращает значение и не надо использовать оператор return.
При выводе результатов были использованы манипуляторы, прототипы которых находятся в заголовочном файле iomanip. Назначение каждого манипулятора представлено ниже.
Манипуляторы:
setw(n) - устанавливает ширину n позиций поля вывода; right - выравнивание по правой стороне;
left - выравнивание по левой стороне;
setprecision(n) - устанавливает количество цифр n, отличных от нуля при выводе вещественных чисел.
55
В результате выполнения любой из программ на экран будет выведено множество значений x и y. Каждая пара значений x и у будет выведена в отдельной строке (рис.1).
Рис.1. Результат выполнения программы к примеру 1
Пример 2. Определить рост самого высокого человека среди вводимых с клавиатуры значений. Признаком окончания ввода служит 0.
Текст программы:
#include <iostream> #include <iomanip> #include <math.h> using namespace std; int main()
{
setlocale(LC_CTYPE, "Russian");
56
float n = 0, max = -1; do
{
cout << "Рост>"; cin >> n;
if (n>max)max = n; } while (n>0);
cout<<"Рост самого высокого человека="<<max<<endl;
}
П о я с н е н ия к пр о гр ам м е . До цикла зададим начальные значе-
ния:
для переменной n = 0, т.е. признак окончания ввода данных или самый минимальный рост человека;
для переменной max = 1, пусть значение самого максимального роста будет равно 1.
Далее в цикле, пока не будет введен 0, вводится значение n, и оно сравнивается со значением max. Если текущее значение n будет больше значения max, то в переменную max занесем значение n.
Результат выполнения программы представлен на рис.2.
Рис.2. Результат выполнения программы к примеру 2
Пример 3. Определить среднюю стоимость авторучки среди значений цен, вводимых с клавиатуры. Признаком окончания ввода данных служит 0.
Решение. Для нахождения средней стоимости авторучки воспользуемся формулой определения среднего арифметического значения по-
57
следовательности чисел. Для этого необходимо найти сумму стоимостей всех авторучек и поделить ее на количество авторучек.
Текст программы:
#include <iostream> using namespace std; void main()
{
setlocale(LC_CTYPE, "Russian"); double n = 0, sum = 0.0;
int k = 0; do
{
cout << "Стоимость авторучки>"; cin >> n;
sum += n; k += 1; } while (n>0);
sum /= k;
cout << "Средняя стоимость=" << sum << endl;
}
По я сн е н ия к пр о гр ам м е . В программе объявлены три переменные: n - переменная для хранения текущего значения стоимости авторучки; переменная sum - для вычисления суммы стоимостей всех авторучек и переменная k - для вычисления количества авторучек. В цикле do, пока значение n положительно, а стоимость не может быть выражена отрицательным значением, вводится текущее значение стоимости, это значение прибавляется к имеющемуся значению суммы и увеличивается значение количества авторучек на единицу. После ввода значения «нуль» вычисляется и выводится на экран среднее арифметическое значение, которое и равно средней стоимости ручки. Результат выполнения программы представлен на рис.3.
58
Рис.3. Результат выполнения программы к примеру 3
Порядок выполнения работы
1.Разработать и выполнить программы в соответствии с вариантом задания. В данной работе выполняется два задания.
2.Результаты выполнения программ занести в отчет по работе.
3.Показать результаты работы преподавателю.
Требования к отчету
Отчет должен содержать:
1)наименование лабораторной работы;
2)формулировки заданий;
3)тексты программ для варианта задания;
4)результаты выполнения программ.
59
Варианты заданий
Блок № 1
Написать программу вычисления множества значений функции в соответствии с номером варианта. Номер варианта задания соответствует номеру компьютера в компьютерном классе, на котором выполняется лабораторная работа.
№ |
Задание |
п/п |
|
1 |
|
|
|
sin s |
|
|
|
|
| πs | 3,5 |
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Дано: i = 4; π = 3,14; |
|
|
|
|
|
s |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
y |
3 |
|
|
|
|
|
| πs | 3,5 |
|
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
tgi |
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
s |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
на интервале 1 ≤ s ≤ 1с шагом |
s = 0,1 |
|
|
|
|
|
|
|
|
|||||||||||||||||
2 |
|
|
|
αt 2 ln t |
1 t 2 |
|
|
|
|
|||||||||||||||||
Дано: = – 0,5; b = 2; |
|
|
|
|
|
|
|
|
|
|
|
|
|
t 1 |
|
|
|
|
|
|
|
|||||
|
y 1 |
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
αt |
|
|
|
|
|
|
t 2 |
|
|
|
|
|
|
|
|||||
|
|
|
|
e |
cos bt |
|
|
|
|
|
|
|
|
|||||||||||||
на интервале t[0; 3]с шагом |
t = 0,15 |
|
|
|
|
|
|
|
|
|||||||||||||||||
3 |
|
2 |
|
7 |
|
|
|
|
|
x 1,3 |
|
|
|
|
|
|
|
|
||||||||
|
πx |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
x |
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
7 |
|
|
|
|
|
|
|
|
|
x 1,3 |
|
|
|
|
|
|
|
|
|||||
Дано: a = 1,5; |
|
x |
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
y ax |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lg(x 7 |
|
|
|
x ) |
x 1,3 |
|
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
на интервале x[0,8; 2] с шагом |
|
|
x = 0,1 |
|
|
|
|
|
|
|
|
|||||||||||||||
4 |
|
|
|
|
|
|
|
|
|
|
|
ax2 |
bx c |
|
|
|
x 1,2 |
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
a |
|
|
|
|
|
|
|
|
|
|
|
|||
Дано: a = 2,8; b = –0,3; c = 4; w |
|
|
x |
2 |
1 |
|
|
|
x 1,2 |
|||||||||||||||||
|
|
|
|
|
|
|
||||||||||||||||||||
|
|
|
|
|
||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
x |
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x |
2 |
1 |
x 1,2 |
|||||
|
|
|
|
|
|
|
|
|
|
|
|
(a bx) / |
|
|
||||||||||||
на интервале x[1; 2] с шагом |
x = 0,05 |
|
|
|
|
|
|
|
|
60
Продолжение
№ |
|
|
|
|
|
|
|
|
|
|
Задание |
|
|||||||
п/п |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
|
|
|
|
|
2 |
|
|
|
7 |
|
|
|
|
|
|
x 1,4 |
||
|
|
|
πx |
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
x |
2 |
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3 |
7 |
|
|
|
|
|
|
|
x 1,4 |
||||
|
|
|
|
|
|
|
x |
|
|
||||||||||
|
Дано: a = 1,65; Q ax |
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ln(x 7 |
|
|
| x |
a |) |
x 1,4 |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
на интервале x[0,7; 2] с шагом |
x = 0,1 |
|||||||||||||||||
6 |
|
|
1,5cos 2 x |
|
|
|
|
|
x 1 |
|
|||||||||
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
Дано: a = 2,3; y |
|
|
2) |
|
6 |
1 x 2 |
||||||||||||
|
(x |
|
|
|
|||||||||||||||
|
|
|
3tgx |
|
|
|
|
|
|
|
|
|
|
|
x 2 |
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
на интервале x[0,2; 2,8] с шагом x = 0,2 |
||||||||||||||||||
7 |
|
|
x3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x a |
|
|
|
|
|
|
x a |
|
||||||||
|
Дано: a = 2,5; w |
|
|
|
|
|
|
|
|
|
|
|
|
|
x a |
|
|||
|
x sin ax |
|
|
|
|
|
|
||||||||||||
|
|
|
e ax cos ax |
|
|
|
x a |
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
на интервале x[1; 5] с шагом |
x = 0,1 |
|||||||||||||||||
8 |
|
|
bx lg bx |
|
|
bx 1 |
|
||||||||||||
|
Дано: b = 1,5; Q |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
bx 1 |
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bx |
|
|
|
|
|
|
|
|
bx 1 |
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
на интервале x[1,1; 1] с шагом |
x = 0,1 |
|||||||||||||||||
9 |
|
sin x lg x |
x 3,5 |
|
|
|
|
|
|
|
|
||||||||
|
Дано: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
y |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
cos 2 x |
|
x |
3,5 |
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
на интервале x[2; 5] с шагом |
x = 0,25 |
|||||||||||||||||
10 |
|
|
lg(x 1) |
|
|
x 1 |
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Дано: a = 20,3; y |
|
|
2 |
|
|
|
|
|
|
|
|
|
|
x 1 |
|
|||
|
|
|
sin |
|
|
| ax | |
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
на интервале x[0,5; 2] с шагом |
x = 0,2 |
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
61
Продолжение
№ |
|
|
|
|
|
|
Задание |
|
|
|
|
|
|
|
|
|
|
||||||||||||
п/п |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
11 |
|
(ln3 x x2 ) / |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
x t |
x 0,5 |
|
|
|
|||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
Дано: t = 2,2; |
z x |
t |
|
|
|
|
|
|
|
|
|
|
|
|
|
x 0,5 |
|
|
|
|
||||||||
|
x |
|
|
|
|
|
|
|
|
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
cos x t sin2 x |
|
|
|
|
|
|
x 0,5 |
|
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
на интервале x[0,2; 2] с шагом |
|
|
x = 0,2 |
|
|
|
|
|||||||||||||||||||||
12 |
|
|
|
|
|
|
|
|
|
a b |
|
|
|
|
|
x 2,8 |
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
ex |
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
cos x |
|
|
|
|
|||||||||||||||
|
Дано: a = 2,6; b = 0,39; S (a b) /(x 1) |
2,8 x 6 |
|||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
x |
|
sin x |
|
|
|
|
|
|
|
x 6 |
||||||||||
|
|
|
|
|
|
|
|
|
e |
|
|
|
|
|
|
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
на интервале x[0; 7] с шагом |
x = 0,5 |
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
13 |
|
a lg x 3 |
|
|
|
|
|
|
|
|
x 1 |
|
|
|
|
|
|
|
|
|
|
||||||||
|
| x | |
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
Дано: a = 0,9; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
y |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
2a cos x 3x2 |
|
|
|
x 1 |
|
|
|
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
на интервале x[0,8; 2] с шагом |
|
|
x = 0,1 |
|
|
|
|
|||||||||||||||||||||
14 |
|
|
|
|
|
|
2 |
1 |
|
|
|
|
|
|
|
2 |
1 |
|
|
||||||||||
|
|
|
|
|
a sin( |
i |
|
) |
|
sin( |
i |
|
) 0 |
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
Дано: a = 0,3; n = 10; |
|
|
|
|
n |
|
|
|
|
|
|
|
n |
|||||||||||||||
|
z |
|
|
|
|
|
|
|
|
|
|
|
i2 1 |
|
|||||||||||||||
|
|
|
|
|
cos(i |
1 |
) |
|
sin( |
) 0 |
|||||||||||||||||||
|
|
|
|
|
|
|
|
||||||||||||||||||||||
|
|
|
|
|
|
|
|
n |
|
|
|
|
|
|
|
n |
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
|
на интервале i[0; 10] с шагом |
|
i = 1 |
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
15 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
at 2 |
|
b sin t 1 |
t 0,1 |
|||||||||||||||||||||
|
|
|
|
|
|
|
|||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
Дано: a = 2,5; b = 0,4; |
w |
|
|
|
|
|
|
|
|
|
|
|
|
|
t 0,1 |
|||||||||||||
|
at b |
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
b cos t 1 |
|
t 0,1 |
|||||||||||||||||||
|
|
|
|
|
|
at 2 |
|
|
|||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
на интервале t[ 1; 1] с шагом |
|
t = 0,2 |
|
|
|
|
62