Условный оператор. Простые и составные условия. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Условный оператор. Простые и составные условия.



 

Условия, которые мы до сих пор использовали, являются простыми. Если после служебного слова if проверяется только одно условие (а mod 3=0; a>b; k=1), то такое условие будем называть простым условием.

Если после служебного слова if возникает необходимость проверить сразу несколько условий, то группу таких простых условий будем называть составным условием. При написании составных условий, каждое из простых условий, входящих в составное, берётся в скобки. Можно использовать союзы and (и) или or (или).

Рассмотрим следующий пример:

Даны два числа а,b (a,b≠0). Ответить одного ли знака введённые числа.

Разберём данную задачу.

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

A b Ответ:
a>0 a<0 a>0 a<0 b>0 b<0 b<0 b>0 Одного знака Одного знака Разные знаки Разные знаки

program zadacha3_6a;

var a,b:real;

Begin

writeln('Введите два числa');

readln(a,b);

if (a>0) and (b>0) then writeln('числа одного знака');

if (a<0) and (b<0) then writeln('числа одного знака');

if (a>0) and (b<0) then writeln('числа разных знаков');

if (a<0) and (b>0) then writeln('числа разных знаков');

End.

На сегодняшнем занятии мы не просто будем изучать новую тему, но и попробуем уяснить для себя, что хороший программист всегда внимательно обдумывает даже уже написанную и отлаженную программу. Ведь почти всегда можно применить правило: "Любую программу можно переписать так, что она станет более короткой, либо более красивой".

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

 

program zadacha3_6b;

var a,b:real;

Begin

writeln('Введите два числa');

readln(a,b);

if ((a>0)and(b>0)) or ((a<0)and(b<0))

then writeln('числа одного знака')

else writeln('числа разных знаков');

End.

 

Программа стала действительно короче. Но в примере 3_6b составное условие состоит в свою очередь из двух составных условий. Просмотрите, как расставлены скобки.

А можно ли и эту программу сделать более красивой или более короткой? Можно. Приведём новую версию проверки условия для данной программы:

if a*b>0 then writeln('числа одного знака')

else writeln('числа разных знаков');

Замените условие в компьютере и убедитесь, что оно работает верно.

 

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

program zadacha3_7;

var a:integer;

Begin

writeln('Введите натуральное число');

readln(a);

if (a mod 10=a div 10) and (a>9) and (a<=99)

then writeln('является') else writeln('не является');

End.

 

Вопросы для повторения:

49. Что такое составное условие?

50. В чём отличие составного условия от простого?

51. Какие союзы используются при написании составного условия?

52. Зачем в задаче 3_6b используются двойные скобки?

 

Задания для самостоятельной работы:

47. Задано x. Вычислить у

a) б)

 

2. Заданы два числа. Являются ли они оба большими 20?

3. Заданы два числа. Являются ли они оба чётными?

4. Заданы два числа. Является ли хотя бы одно число чётным?

5. Заданы два числа. Является ли хотя бы одно число положительным?

6. Дано двухзначное число. Являются ли обе цифры числа чётными?

7. Дано трехзначное число. Входит ли в него цифра 4?

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

9. Определить, является ли данное целое число N нечетным четырехзначным числом.

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

11. Заданы действительные x и у. Принадлежит ли точка (x, y) заштрихованной части плоскости:

 

 


Дано натуральное число N (N<100), определяющее возраст человека в годах. Дать для этого числа наименование: "год", "года", "лет".

 

Операторные скобки. Составной оператор.

Операторные скобки

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

Begin

 

end;

Группу операторов находящуюся внутри операторных скобок будем называть составным оператором. Фактически, весь раздел операторов, внутри операторных скобок, представляет собой один составной оператор.

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

Даны действительные числа x, y (x≠y). Меньшее из этих двух чисел заменить их суммой, а большее - их произведением.

program zadacha3_8;

var a,b,sa,sb:longint;

Begin

writeln('Введите два числа');

readln(a,b);

sa:=a; sb:=b;

if a>b then

begin

b:=sa+sb;

a:=sa*sb;

end

else

begin

a:=sa+sb;

b:=sa*sb;

end;

writeln ('первоначальные числа a=',sa,' b=',sb);

writeln ('полученные числа a=',a,' b=',b);

End.

Составить программу решающую квадратное уравнение вида ax2+bx+c=0.

program zadacha3_9;

var a,b,c:integer;

x,d,x1,x2:real;

Begin

writeln('введите коэффициенты а,b,c');

readln(a,b,c);

d:=b*b-4*a*c; {вычисление дискриминанта}

 

if d<0 then writeln('уравнение не имеет корней');

 

if d=0 then

begin

writeln('уравнение имеет 1 корень');

x:=-b/(2*a);

writeln('x= ',x);

end;

 

if d>0 then

begin

writeln('уравнение имеет 2 корня');

x1:=(-b+sqrt(d))/(2*a);

x2:=(-b-sqrt(d))/(2*a);

writeln('x1= ',x1);

writeln('x2= ',x2);

end;

End.

Вопросы для повторения:

1. В каких случаях после служебных слов then и else нужно писать begin … end, а в каких нет?

2. Что представляет собой составной оператор?

3. Почему end желательно записывать под begin?

4. Для чего в задаче 3_8 введены переменные sa, sb?

53. В какой из следующих структур допущена ошибка? Какая?

 

Задания для самостоятельной работы:

1. Даны действительные числа x, y (x≠y). Меньшее из этих двух чисел заменить их полусуммой, а большее - их удвоенным произведением.

2. Даны два целых числа M, N. Если M делится нацело на N, то вывести на экран частное от деления, в противном случае - сообщение "M на N нацело не делится".

3. Даны три числа. Удвоить их, если они упорядочены по возрастанию, иначе отрицательные заменить их модулями.

4. Даны три числа. Удвоить их, если они целые, иначе нецелые заменить их целыми частями.

5. Дано натуральное число n (n £ 9999). Если число четырёхзначное, то получите и выведите перевёртыш этого числа (3528 → 8253), иначе выведите ответ "Число не четырехзначное".

6. Дано натуральное число n. Если оно двухзначное, то впишите в середину ноль (для 56 → 506), иначе выведите ответ "Число не двухзначное".

7. * Даны натуральные числа k, l (1£ k, l £ 8). На клетке (k, l) расположена шахматная фигура:

a) конь b) ферзь

Вывести на экран координаты клеток, на которые может походить данная фигура, при этом учитывайте, что нельзя выходить за пределы доски.

Оператор выбора.

Оператор выбора.

Оператор выбора позволяет выбрать одно из нескольких возможных продолжений программы.

Структура оператора выбора такова:

case < ключ выбора > of

< список выбора >

[ else < операторы >]

end;

Рассмотрим несколько примеров:

Вводиться число от 1 до 4, определяющее пору года. Дать название этой поры года (1 - зима, 2 - весна, 3 - лето, 4 - осень).

 

program zadacha3_10;

var

n:byte;

Begin

writeln('Введите номер поры года');

readln(n);

case n of

1: writeln('зима');

2: writeln('весна');

3: writeln('лето');

4: writeln('осень');

else

writeln('неправильно ввели номер поры года');

end;

End.

 

Составим программу "КАЛЬКУЛЯТОР", которая после ввода двух чисел и одного из знаков +, -, *, / произведёт вычисления, а результат выдаст на экран.

 

program zadacha3_11;

var

a,b,s:real;

sim:char;

Begin

writeln('Введите два числа');

readln(a,b);

writeln('Введите знак операции');

readln(sim);

case sim of

'+': s:=a+b;

'-': s:=a-b;

'*': s:=a*b;

'/': s:=a/b;

end;

writeln ('результат ',a,sim,b,' = ',s);

End.

 

В данной программе отсутствует часть else и поэтому, если ввести вместо рассматриваемых арифметических знаков, ввести любой символ, то программа будет работать, но будет работать неверно.

 

 

Вопросы для повторения:

54. Сколько строк может быть записано в списке выбора?

55. Может ли в операторе выбора отсутствовать часть else?

56. Сформулируйте, что может являться ключом выбора?

57. Можно ли оператор выбора заменить условным оператором if … then?

58. Сколько операторов if then понадобилось бы для решения задачи 3_10?

 

Задания для самостоятельной работы:

1. Отредактируйте задачу zadacha3_11 так, чтобы при вводе произвольного символа программа выдавала ответ: "Введена некорректная арифметическая операция";

2. Вводится число от 1 до 10. Дать название этого числа (1 - один, 2 - два, …, 10 - десять);

3. Вводится число от 1 до 7, определяющее день недели. Дать название этого дня (1 - понедельник, 2 - вторник, …, 7 - воскресенье);

4. В спортивных соревнованиях Шарик, кот Матроскин, дядя Фёдор и почтальон Печкин заняли соответственно 1, 2, 3 и 4 места. Составить программу, которая по номеру места выдаёт имя участника соревнований.

5. Вводится число от 1 до 15. Вывести данное число, записанное римскими цифрами (I, II, III, IV, V, VI, …., XV);

6. Вводится число от 1 до 15. Вывести данное число, записанное в двоичной системе счисления (1, 10, 11, 100, 101, …., 1111);

7. Вводится число от 1 до 12, определяющее месяц года. Дать название этого месяца года (1 -Январь, 2 - Февраль, …, 12 Декабрь);

8. Вводится номер месяца. Вывести пору года для этого месяца (1 - зима, …, 3 - весна, …, 8 - лето, …);

9. Вводиться номер поры года. Вывести названия месяцев для этой поры года (1 – декабрь, январь, февраль,...);

10. *Вводится число от 1 до 100. Дать название этого числа (1 - один, 2 - два, …, 100 - сто);

11. Дано натуральное число N (N<20), определяющее сумму денег в рублях. Дать для этого числа наименование: "рубль", "рубля", "рублей";

12. Дано натуральное число N (N<100), определяющее возраст человека в годах. Дать для этого числа наименование: "год", "года", "лет";

Вводится число от 1 до 7, определяющее день недели. Вывести расписание уроков в вашем классе в этот день.



Поделиться:


Последнее изменение этой страницы: 2016-08-15; просмотров: 804; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.116.47.111 (0.032 с.)