- •3 Программирование разветвляющихся алгоритмов
- •3.1 Понятие разветвляющегося алгоритма и программы
- •3.2 Операторы управления разветвляющимся вычислительным процессом
- •3.2.1 Логические выражения
- •3.2.2 Оператор if
- •If (выражение) оператор1;
- •If (выражение ) оператор1; else опертор2;
- •3.2.3 Примеры программирования
- •Тесты к задаче 1.2
- •3.2.4 Выбор из большого числа вариантов
- •4 Программирование циклических алгоритмов
- •4.1 Понятие цикла
- •Различают циклы с предусловием и циклы с постусловием.
- •В циклах с предусловием условие повторения цикла проверяется раньше, чем выполняется тело цикла, поэтому возможно, что цикл не выполнится ни разу.
- •В циклах с постусловием условие повторения цикла проверяется после выполнения тела цикла и подготовки данных для очередного шага цикла, поэтому цикл выполняется всегда хотя бы один раз.
- •В общем виде циклы с предусловием и постусловием графически можно изобразить, как показано на рис.4.1.
- •4.2 Программирование цикла с заранее известным числом повторений
- •4.3 Программирование цикла с заранее неизвестным числом повторений
- •4.3.1 Оператор цикла while
- •4.3.2 Оператор цикла do-while
- •4.4 Вложенные циклы
Тесты к задаче 1.2
Тест № |
Значение x |
Значение y |
Формула для вычисления y |
Тест 1 |
-7.2 |
-14.4 |
y=2x |
Тест 2 |
0 |
0 |
y=sinx |
Тест 3 |
1.5707968 |
»1 |
y=sinx |
Тест 4 |
5 |
-0.9589 |
y=sinx |
Тест 5 |
6 |
36 |
y=x2 |
Тест 6 |
10 |
20 |
y=2x |
Тест 7 |
11 |
121 |
y=x2 |
3.2.4 Выбор из большого числа вариантов
Выбор из многих вариантов можно сделать с помощью вложенных операторов if - else. Более удобный способ – использование операторов switch и break. Общий вид оператора выбора:
switch (i)
{
case k1 : op1;
[ break;]
case k2 : op2;
[ break;]
…
case kn : opn; Рис.3.6 Структура команды выбора,
[ break;] соответствующая оператору switch с
[ default : opn+1;] оператором break после каждого case
}
Здесь i – любое выражение, дающее целое значение ( в том числе – символьное);
k1, k2, …, kn – константы или константные выражения - возможные значения i (например, 2*g, 'a'-'b', '1") – записываются после слова case;
op1, op2, …, opn, opn+1 – простые или составные операторы языка.
Рассмотрим примеры решения задач с использованием оператора выбора.
Задача 3. Задан номер текущего дня недели. Вывести названия дней, оставшихся до конца недели, включая текущий день.
/* Программа задачи 3 */
#include <stdio.h>
#include <math.h>
main()
{
int k; // Номер дня недели
puts("Введите номер дня недели");
scanf("%d",&k);
printf("До конца недели:\n");
switch (k)
{
case 1: puts("Понедельник ");
case 2: puts ("Вторник ");
case 3: puts ("Среда ");
case 4: puts ("Четверг ");
case 5: puts ("Пятница ");
case 6: puts ("Суббота ");
case 7: puts ("Воскресенье \n");
break;
default: puts ("Неправильно введен номер дня недели");
}
fflush(stdin); getchar();
return(0);
}
Следующий пример показывает, что после case ki : может не быть оператора.
Задача 4. Ввести символ и определить, является ли он цифрой.
Решение. Пусть k – вводимый символ. В программе использованы операторы ввода-вывода в стиле Си.
В задаче 5 используется оператор выбора с оператором break после каждого case ki :
Задача 5. Дано целое число в диапазоне 1 – 5. Вывести строку — словесное описание соответствующей оценки (1 — "плохо", 2 — "неудовлетворительно", 3 — "удовлетворительно", 4 — "хорошо", 5 — "отлично").
Решение. В программе N- число, которое вводится, а затем анализируется. Если ввести, например, 4, то программа выведет слово "Хорошо", а если ввести 7, то программа выведет строку "Нет оценки" и т.д. В программе использованы операторы ввода-вывода в стиле С++.
Программа задачи 4 Программа задачи 5
#include <stdio.h> main() { char k; puts("Введите символ"); k=getchar(); switch (k) { case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': case '0':printf("Это число %c\n",k); break; default: printf("%c-не число\n",k); } fflush(stdin); getchar(); return(0); }
|
#include <stdio.h> #include <iostream.h> main() { int N; cout << "\nВведите число "; cin >> N; switch (N) { case 1: cout << "\nПлохо"; break; case 2: cout << "\nНеуд."; break; case 3: cout << "\nУдовл."; break; case 4: cout << "\nХорошо"; break; case 5: cout << "\nОтлично"; break; default: cout << "\nНет оценки "; } fflush(stdin); getchar(); return(0); } |