Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Алгоритмизация и программирование. Учебное пособие для студентов направления подготовки 09.03.02 Информационные системы и технологии

.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
1 Мб
Скачать
// выход из этого блока case
// выход из этого блока case

Если оператор множественного выбора case не сработал (был выбран символ, не определяющий ни одно из четырёх арифметических действий), то программа должна выдать сообщение: «You entered the expression incorrectly».

Текст программы к задаче 13.

----------------------------------------------------------------------------------------------

#include <cstdint> #include <iostream> int main()

{int64_t a, b; char operation;

printf(" Enter two numbers and an arithmetic operation between them: "); std::cin >> a >> operation >> b;

int64_t result; switch (operation)

{case '+':

{printf(" Result: "); result = a + b;

}

break; case '-':

{printf(" Result: "); result = a - b;

}

break; // выход из этого блока case case '*':

{

printf(" Result: ");

 

result = a * b;

}

 

break; case '/':

{printf(" Result: "); result = a / b;

}

break; // выход из этого блока case

default: // случай, когда ни один case не сработал printf(" You entered the expression incorrectly: ");

}

std::cout << result << "\n";

}

----------------------------------------------------------------------------------------------

В компиляторе языка С++ этот компьютерный код представлен на рис. 47.

61

Рис 47. Программный код задачи 13

Результат реализации программы на рис. 48:

Рис 48. Результат решения задачи 13

Задача 14. Найдите значение функции, если

,

< −1,

?( ) = Esin x ,

−1 ≤ ≤ 1,J

,

> 1.

Результат округлите до третьей цифры после запятой.

(Тест. Провести проверку для = 0.33)

Математическая модель и описание алгоритма решения. Пользователю предлагается

62

ввести аргумент . На экран выводится значение функции, вычисленное по предложенной в условии формуле, с учетом принадлежности к соответствующему интервалу.

Если пользователь вводит < −1, то значение функции вычисляется по первой формуле: ?( ) = x.

Если значение лежит в интервале [-1,1], то используется вторая формула:

?( ) = sin x .

Иначе, для значений > 1 применяется третья формула: ?( ) = .

Подставляя тестовое значение аргумента = 0.33, которое лежит в интервале [-1,1],

получаем значение функции по второй формуле:

?(0.33) = 0"$ |@L4.RR = sin 0.33 ≈ 0.324.

Для решения данной задачи используется оператор множественного выбора case, который проверяет значения в соответствие с интервалами в области определения.

Вычисленный результат округляется до третьего знака после запятой.

Текст программы к задаче 14.

--------------------------------------------------------------------------------------------------

#include <iostream> #include <cmath> #include <iomanip> using namespace std;

int main()

{

float x, y;

cout << " Enter x = ";

cin >> x; // вводим значение икса if (x < -1)

y = x;

else if (x >= -1 && x <= 1) y = sin(x);

else y = x * x;

cout << "y = " << fixed <<setprecision(3)<< y << endl;

}

--------------------------------------------------------------------------------------------------

В компиляторе языка С++ этот компьютерный код представлен на рис. 49.

63

Рис 49. Программный код задачи 14

Результат реализации программы на рис. 50:

Рис 50. Результат решения задачи 14

64

Глава 6. ЦИКЛИЧЕСКИЕ КОНСТРУКЦИИ

И ОПЕРАТОРЫ ПЕРЕХОДА

При решении задач часто приходится выполнять многократные повторяющиеся действия. В программировании для этих целей используют циклические конструкции (операторы повторений) – участки программы, в которых одни и те же вычисления реализуются некоторое конечное количество раз над различными значениями одних и тех же переменных.

Циклы бывают:

обобщенные (параметрические) for;

с предусловием while;

с постусловием do…while.

Влюбом цикле есть четыре части: инициализация, условие, итерация и тело цикла, включающее одно или несколько операторов.

Рассмотрим подробнее каждую циклическую конструкцию.

§ 1. Оператор цикла с параметром (счетчиком) for.

Оператор цикла с параметром (счетчиком) for обычно используется в случае, когда известно точное количество повторов вычислений. Это наиболее общий способ применения цикла.

Структура оператора цикла с параметром:

for (<инициализация>; <условие>; <итерация>) <тело_цикла>;

Вструктуре оператора <инициализация> ‒ это объявление и присваивание начальных значений параметрам, которые используются в цикле; <условие> ‒ логическое выражение; <итерация> ‒ изменение параметра, выполняемое после каждого прохода цикла; <тело_цикла> ‒ операторы, реализуемые в цикле.

Взаголовке цикла задаются начальные значения и изменения управляющей переменной цикла. Действия со всеми остальными переменными описываются до или после цикла или в самом теле цикла в зависимости от условия задачи.

Если одновременно отсутствуют <инициализация>, <условие> и <итерация>, то цикл становится бесконечным. Завершить такой цикл можно, используя оператор прерывания break по какому-либо условию.

В<инициализации> и <итерации> допускается несколько выражений. В этом случае

65

они отделяются друг от друга запятой.

Проверка условия всегда выполняется в начале цикла. Если условие истинно, выполняются операторы тела цикла; если ложно – цикл завершается. В случае вхождения в цикл первый оператор начинает выполняться, когда параметр принимает начальное значение. Цикл заканчивается при невыполнении условия или достижении конечного значения параметра.

Если условие цикла изначально ложное, то операторы тела цикла не выполнятся ни

разу.

Блок-схема цикла с параметром приведена на рис. 51.

Рис 51. Блок-схема цикла с параметром

Приведем случаи применения цикла с параметром в зависимости от разных видов итераций:

уменьшение параметра;

for (j=8; j>0; j--) <тело_цикла>;

изменение шага итераций;

for (i=1; i<20; i+=3) <тело_цикла>;

нестандартное условие;

66

for (n=2; n*n<169; n++) <тело_цикла>;

переход к новой итерации может происходить не только добавлением или вычитанием шага, но и другими арифметическими операциями;

for (m=10; m<200; m*=2) <тело_цикла>;

for (k=1, n=1; n<95; n=4*(k++)+3) <тело_цикла>;

использование нескольких параметров.

for (i=1, j=1; i<25; i++, j+=i) <тело_цикла>;

Рассмотрим пример использования цикла с параметром.

Задача 15. Вычислите сумму

T = + + R + + .

(Тест. Провести проверку: аргумент = 2, степень многочлена $ = 5)

Математическая модель и описание алгоритма решения. В данной задаче под степенью многочлена понимают натуральное значение переменной n. Аргумент может принимать любые вещественные значения.

Пользователю предлагается ввести аргумент и степень многочлена $. На экран выводится значение суммы T , вычисленной по предложенной в условии формуле.

Для тестового значения аргумента = 2 и степени $ = 5 сумма равна:

TN = 2 + 2 + 2R + 2M + 2N = 2 + 4 + 8 + 16 + 32 = 62.

Вычисление значения суммы происходит с использованием цикла, в котором параметром выступает переменная j, изменяющаяся от 1 до n (от наименьшей степени многочлена до наибольшей).

67

Текст программы к задаче 15.

--------------------------------------------------------------------------------------------------

#include <stdio.h>

int main ()

{

float x, Sn, xj; int j, n;

printf(" Enter variable value x = "); scanf("%f", &x);

printf(" Enter the highest natural degree n = "); scanf("%d", &n);

Sn=0; xj=1;

for (j=1; j<=n; j++)

{

xj=xj*x; Sn = Sn+xj;

}

printf(" The Sum is equal to %f", Sn);

return 0;

}

--------------------------------------------------------------------------------------------------

В компиляторе языка С++ этот компьютерный код представлен на рис. 52.

Рис 52. Программный код задачи 15

Результат реализации программы на рис. 53:

68

Рис 53. Результат решения задачи 15

§ 2. Итерационные циклы while.

Оператор цикла while называется циклом с предусловием, потому что логическое выражение, определяющее повторение цикла, проверяется до выполнения операторов тела цикла. При этом число повторений может быть неизвестно.

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

Отличительный признак циклической конструкции с предусловием от цикла с постусловием – выполнение операторов тела цикла может не произойти ни разу. Это возможно если при первой же проверке условия оно окажется ложным.

Структура оператора цикла с предусловием: [<инициализация>; ]

while(<условие>)

{

<тело_цикла>; [<итерация>;]

}

Блок-схема цикла с предусловием приведена на рис. 54.

<условие>

+

тело_цикла

Рис. 54 Блок-схема цикла с предусловием

В структуре оператора <инициализация> и <итерация> необязательны.

69

В операторе цикла с постусловием do…while логическое выражение, которое определяет повторение цикла, проверяется после выполнения операторов тела цикла. Таким образом, тело цикла с постусловием обязательно выполнится хотя бы один раз.

Структура оператора цикла с постусловием: [<инициализация>; ]

do

{

<тело_цикла>; [<итерация>;]

}

while(<условие>);

Блок-схема цикла с постусловием приведена на рис. 55.

тело_цикла

+

<условие>

Рис. 55 Блок-схема цикла с постусловием

Задача 16. Вычислите конечную сумму

T = − 2 + 3R − + (−1) A $

с точностью до V = 0,001. Значения необходимо выбирать из интервала [−1,1]. (Тест. Провести проверку: аргумент = 0.2, степень многочлена $ = 5)

Математическая модель и описание алгоритма решения. Пользователю предлагается ввести аргумент и степень многочлена $. На экран выводится значение суммы T , вычисленной по предложенной в условии формуле.

Для тестового значения аргумента = 0.2 и степени $ = 5, сумма

TN = 0.2 − 4. 7 + 4.R W 4.M X + 4.N Y = 0.2 − 0.02 + 0.0027 − 0.0004 + 0.000064.

70

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