Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник 357.docx
Скачиваний:
27
Добавлен:
30.04.2022
Размер:
1.75 Mб
Скачать

5.2 Приемы оформления ветвлений

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

Чтобы не запутаться в блоках if, в условных операторах используют абзацные отступы. Прием, известный как лестница if-else-if, позволяет упорядочить вложенные блоки if. Смысл в том, чтобы каждый вложенный блок сдвигать несколько в сторону (используется табуляция \t или обычно 4 пробела).

if (условие) оператор;

else

If (условие) оператор;

else

If (условие) оператор;

.

.

.

else оператор;

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

5.3 Примеры решения задач

Пример 1. Составление программы вычисления значения функции

При составлении программ нельзя прямо использовать двойные неравенства. Так запись типа -3<=x<0 даст неверный ответ. Пусть х=-1, тогда значение выражения(-3<=-1)будет «правильно» , т. е. 1, значит далее вычисляется значение выражения(1<0), которое дает результат – 0. Хотя с точки зрения математической записи этого двойного неравенства должен получиться результат – правильно, т. е. 1.

Поэтому при программировании следует использовать простые операции отношения соединенные логическими функциями, например: (x>=-3)&&(x<0).

void main()

{

double x;

if(x<-3)printf(“Result=%.3f”,-1/x);

if((x>=-3)&&(x<0))printf(“Result=%.3f”,sqrt(-1*x));

if((x>=0)&&(x<1))printf(“Result=%.3f”,x*x);

if((x>=1) printf(“Result=%.3f”,sqrt(x));

}

Пример 2. Составление программы поиска наибольшего значения

Рис.5.2. Поиск наибольшего значения

Шаг 1. Объявление переменных.

Double a, b, res;

Шаг 2. Ввод значений

scanf (“%lf, %lf”, &a, &b);

Шаг 3. Реализация ветвления с помощью конструкции if – else

if (a>b) res=a

else res=b

Шаг 4. Вывод результата

printf (“Наибольшее %lf”, res);

Шаг 3 и 4 можно совместить, выводя результат сразу после сравнения:

if (a>b) printf (“Наибольшее %lf”, a);

else printf (“Наибольшее %lf”, b);

Также можно использовать тернарную операцию:

a>b? printf (“Наибольшее %lf”, a): printf (“Наибольшее %lf”, b);

Пример 3. Программа разделения трехзначного числа на единицы, десятки и сотни.

void main()

{

int num;

puts(“введите трехзначное число”);

scanf (“%d”, &a);

if ((a<0) && (a>999))

{

puts(“число введено не верно”);return;

}

printf(“сотни %d, десятки %d, единицы %d”, num/100, (num/10)%10, num%10);

}

5.4 Практические задания

1. Напишите программу, которая проверяет, является ли введенный год високосным (т.е. кратен 4). Реализуйте ее по шагам:

a. Объявление целой переменной, years;

b. Приглашение к вводу года;

c. Ввод с клавиатуры значений;

d. Вычисление остатка от деления введенного числа на 4;

e. Применение структуры if–else для вывода на экран одного из двух сообщений – «високосный год» и «год не високосный» с использованием функции printf.

f. Вывод на экран – результата в виде: «Год (число) не или високосный».

2. Реализуйте дополнительные проверки високосного года, по следующему правилу: «год является високосным в двух случаях: либо он кратен 4, но при этом не кратен 100, либо кратен 400».

Проверьте правильность работы программы на следующих контрольных значения: 1900 – не високосный, 2000 – високосный, 2100 – не високосный.

3. Организуйте в программе вывод результата с использованием тернарной операции в функции printf:

printf(“%dгод - %s”, years, (yeas%4==0? “високосный”: “не високосный”));

4. Напишите программу для вычислений значения функции F(x, y), где х и y – вещественные числа.

Вариант

F(x, y)

Вариант

F(x, y)

1

7

2

min{x,y}+1

8

max {x+y, x*y};

3

9

4

2*max{x,y}

10

min {x/y, | x-y |};

5

11

6

min{ , }

12

max{ , }

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