Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Занятие 3. Вложенные условные операторы. Решение задач.




 

При решении задач часто приходится рассматривать не два, а большее количество вариантов. Это можно реализовать, используя несколько условных операторов. В этом случае после служебных слов Then и Else записывается новый условный оператор. Рассмотрим пример.

Задача. Вычислить значение функции:

у=

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

x>0
x<0
x=0
x

Начнем записывать условный оператор:

если х>0

то

вычислить у по формуле у=х-12

иначе

Что же должно выполниться в случае иначе? На эту ветку оператора попадают все не положительные значения х. Если бы для этих чисел нужно было бы выполнить один и тот же оператор (или группу операторов), то проблемы бы не стояло. Но нам нужно этот промежуток разделить еще на две части (отрицательные и ноль), и для части выполнить свой оператор. Поэтому ветка Иначе будет содержать еще один условный оператор и наш вложенный условный оператор будет иметь вид:

если х>0

то

у вычислить по формуле у=х-12

иначе

если х=0

то

у вычислить по формуле у=5

иначе

у вычислить по формуле у=sqr(x);

Тогда фрагмент программы для решения этой задачи будет выглядеть так:

if х>0

then

у:= х-12

else

if х=0

then

у:= 5

else

у:= sqr(x);

Итак, когда оператор if появляется внутри другого оператора if, они считаются вложенными. Такое вложение используется для уменьшения числа необходимых проверок. Этот метод часто обеспечивает большую эффективность, однако одновременно он уменьшает наглядность программы. Не рекомендуется использовать более одного-двух уровней вложения if. За вторым уровнем вложения становится трудно восстановить последовательность проверки условий каждым условным оператором.

Если часть else используется во вложенных if, то каждое else соответствует тому if, которое ему непосредственно предшествует. Таким образом, при определении последовательности выполнения фрагментов нет двусмысленности.

Рассмотрите еще один пример.

Задача. Даны целые числа a, b, c. Если a b c, то все числа заменить их квадратами, усли a>b>c, то каждое число заменить наибольшим из них, в противном случае сменить знак каждого числа.

Для решения этой задачи перепишем условие задачи следующим образом:

a:=a2, b:=b2, c:=c2, если a b c

b:=a, c:=a, если a>b>c

a:=-a, b:=-b, c:=-c, в остальных случаях

Программа для решения этой задачи представлена ниже.

Program Example3;

Var

a, b, c: integer;

Begin

writeln(‘Введите числа a, b, c’);

readln(a,b,c);

if (a<=b) and (b<=c)

Then

Begin

a:=sqr(a);

b:=sqr(b);

c:=sqr(c);

End

Else

if (a>b) and (b>c)

Then

Begin

b:=a;

c:=a;

End

Else

Begin

a:=-a;

b:=-b;

c:=-c;

End

writeln(a,b,c);

readln;

End.

Задание. Найдите в этой программе (если есть) условный оператор, вложенный условный оператор, составной оператор, булево условие.

Внимание! Подчеркнем еще раз один тонкий момент: поскольку каждый из операторов может быть оператором любого типа (в том числе и условным), и в то же время не каждый из "вложенных" условных операторов может иметь часть else, то возникает неоднозначность трактовки условий. Turbo-Pascal решает эту проблему таким радикальным способом: любая встретившаяся часть else соответствует ближайшей к ней части then.

I Выберите с учителем задачи для самостоятельного решения из предложенного списка:

1. Найти наибольшее из трех данных чисел.

2. Вывести на экран номер четверти, которой принадлежит точка с координатами (x,y), при условии, что (x<>0) и (y<>0).

3. Даны три различных числа, найти среднее из них. Средним назовем число, которое больше наименьшего из данных чисел, но меньше наибольшего.

4. Составьте программу нахождения произведения двух наибольших из трех введенных с клавиатуры чисел.

5. Запросить стороны треугольника и определить, является ли он разносторонним, равнобедренным или равносторонним.

Учесть условие: третья сторона не должна превышать сумму двух других, иначе треугольник не существует.

6. Составьте программу для вычисления выражения

а) max (x+y+z,xyz)+3;

b) min (x2+y2,y2+z2)-4;

Значения переменных x, y, z вводятся с клавиатуры.

7. Составьте программу, в которой из трех введенных с клавиатуры чисел возводятся в квадрат положительные, а отрицательные остаются без изменения.

8. Даны действительные числа a, b, c. Вычислить корни уравнения

9. Найти минимальное из трёх чисел.

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

(Sin(x), если х<=a;

z= (Cos(x), если a<x<b;

(Tg(x), если x>=b.

11. Предложите пользователю ввести число с клавиатуры. Если число равно нулю, выведите слово “ноль”; если число положительное, выведите слово “положительное”; если число отрицательное, выведите слово “отрицательное”.

12. Напечатать программу вывода дней недели по номеру.

II Выберите с учителем задачи для самостоятельного решения из предложенного списка:

1. Определить, попадает ли точка "A" с координатами (х,у) внутрь круга радиуса R. Центр круга совпадает с началом координат.

2. Напишите программу "Угадай число". Компьютер "загадывает" число, а пользователь его отгадывает. (random и постепенное угадывание)

3. Найти сумму положительных чисел, больших 20, меньших 100 и кратных 3.

4. Составьте программу для упорядочения трёх чисел a, b, c по возрастанию таким образом, чтобы имени а соответствовало наименьшее число, имени b- среднее, имени с - наибольшее.

5. Запрограммируйте шуточный тест "Проверь свои возможности". Пользователю предлагается ответить на 7 вопросов:

1) Профессор лёг спать в 8 часов, а встал в 9 часов. Сколько часов проспал профессор? (1)

2) На двух руках 10 пальцев. Сколько пальцев на 10?(50)

3) Сколько цифр в дюжине?(2)

4) Сколько нужно сделать запилов, чтобы распилить бревно на 12 частей? (11)

5) Врач сделал три укола в интервале 30 минут. Сколько времени он затратил? (30)

6) Сколько цифр 9 в интервале 1 100? (1)

7) У пастуха было 30 овец. Все кроме одной разбежались. Сколько овец осталось? (1)

Оценка ответов пользователя:

- если 7 правильных, то печатается "Гений";

- если 6 правильных, то печатается "Эрудит";

- если 5 правильных, то печатается "Нормальный";

- если 4 правильных, то печатается "Способности средние";

- если 3 правильных, то печатается "Способности ниже среднего";

- если <2 правильных, то печатается "Вам надо отдохнуть!".

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

Z=x3/y, где y=Sin(nx)+0.5.

6. Составьте программу для упорядочения трех чисел a, b,c по возрастанию таким образом, чтобы имени а соответствовало наименьшее число, имени b - среднее, имени c - наибольшее.

7. Составить программу, которая запрашивает пароль и выводит сообщение правильно ли он введен.

8. Напишите программу, которая преобразовывает римские числа в натуральные числа.

Примечание. Римские числа могут состоять только из символов "X", "V" и "I". Наибольшее число которое может воспринять программа, -это XXXIX, т.е. 39.

9. Дано действительное число а. Вычислить f(a), если

а) f(a)=х2при -2<=х<2,

f(a)=4 в противном случае;

б) f(a)=х2+4х+5 при х<=2

f(a)=1/(х2+4х+5) в противном случае;

в) f(a)=0 при х<=0,

f(a)=х при 0<х<=1,

f(a)=х4в остальных случаях;

г) f(a)=0 при х<=0,

f(a)=х2-х при 0<х<=1,

f(a)=х2-sin П х2в остальных случаях.

10. Даны действительные положительные числа a, b, c, d. Выяснить, можно ли прямоугольник со сторонами a и b уместить внутри прямоугольника со сторонами c и d так, чтобы каждая из сторон одного прямоугольника была

а) параллельна каждой стороне второго прямоугольника;

б) перпендикулярна каждой стороне второго прямоугольника.

11. Даны действительные положительные числа a, b, c, х, у. Выяснить, пройдет ли кирпич с ребрами a, b, c в прямоугольное отверстие со сторонами х, у. Просовывать кирпич в отверстие разрешается только так, чтобы каждое из его ребер было параллельно или перпендикулярно каждой из сторон отверстия.

12. Дано действительное число а. Для функций f(x), графики которых представлены на рисунках, вычислить f(a)

б)

 

в)
г)

 






Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных