Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Условный оператор



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

При решении задач в системе ИнтАл Вы использовали две формы записи команды ветвления: сокращенную и полную. Аналогично обстоит дело в Паскале:

Неполная команда ветвления Полная команда ветвления
IF P THEN S; IF P THEN S1 ELSE S2;
    Рис.3.4.  

Здесь P – условие разветвления (логическое выражение или выражение отношения), S, S1, S2 – выполняемые операторы.

* Условие Р бывает простым (если оно содержит единственное выражение сравнения) и составным (если оно составлено из нескольких выражений сравнения, соединенных логическими операциями). В составных условиях выражения сравнения заключаются в круглые скобки. Примеры простых выражений: a>b, 5+x=3, sqrt (x)<=25. Примеры сложных выражений:

(x+y=5) and (2*x*sin(x)<5.5) à

(x<y) or not (y<z) à

Порядок выполнения операторов приводится на рис. 3.4. Так, в неполной конструкции, если условие Р истинно, выполняется оператор S, а затем – оператор, следующий за оператором if.

Если по одной из ветвей после служебных слов THEN и(ли) ELSE требуется выполнение более одного оператора, их ограничивают операторными скобками BEGIN … END и рассматривают как составной оператор.

Примеры:

Запись на ИнтАле Запись на Паскале
Если a>b То x:=a Иначе x:=b Конец_Если IF a>b THEN x:=a ELSE x:=b;
Если a>b То x:=a k:=1 Иначе x:=b k:=2 Конец_Если IF a>b THEN BEGIN x:=a; k:=1 END ELSE BEGIN x:=b; k:=2 END;
Если a>b То Если a>c То x:=a Конец_Если Конец_Если IF a>b THEN IF a>c THEN x:=a;  
* IF (a>b) and (a>c) THEN x:=a;

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

Пример 1. Моделирование работы пожарного датчика в помещении: программа должна выводить сообщение «Пожароопасная ситуация», если температура в комнате превысит 60° C; если температура не более 60° C, датчик «молчит». Program OGON; Var T: Real; Begin Write ('T='); Readln (T); If T>60 then Writeln ('Пожароопасная ситуация') End.
Пример 2. Реализуем на Паскале полностью алгоритм решения задачи 1 (§ 9): «Определить, на какой высоте и на каком расстоянии от места броска окажется через время t (с) мяч, брошенный под углом α к горизонту с начальной скоростью υ0 (м/с)» (с учетом проверки корректности исходных данных). Напомним, что математическая постановка задачи и описание алгоритма ее решения приводятся в § 9, линейная часть алгоритма реализована на Паскале в § 15. Будем использовать неполную команду ветвления: если требуемые условия не выполняются, программа не совершает никаких действий. Можно предусмотреть вывод сообщения о некорректных данных: If (alfa>0) and (…) … then Begin … End Else Writeln ('Некорректные данные'); Program BROSOK; Const g = 9.8; Var V0, t, alfa, x, y: Real; Begin Write ('введите скорость '); Readln (V0); Write ('введите время '); Readln (t); Write ('введите угол '); Readln (alfa); alfa:=alfa*pi/180; If (alfa>0) and (alfa<=pi/2) and (V0>0) and (V0<=20) and (t>0) Then Begin x:=V0*cos(alfa)*t; y:=V0*sin(alfa)*t-g*t*t/2; Writeln ('x=',x); Writeln (' y=',y) End; End.
Пример 3. Требуется определить, является ли человек, возраст которого x задан, школьником. Задача сводится к проверке условия: 6 ≤ х ≤19 (сравните с решением примера 4 п. 19.1) Program School_1; Var X: Byte; Begin Write ('Возраст='); Readln (X); If X>=6 then if X<=19 then Writeln ('школьник') End. Program School_2; Var X: Byte; Begin Write ('Возраст='); Readln (X); If (X>=6) and (X<=19) then Writeln ('школьник') End.
       

* Пример 4. Требуется написать программу для решения неравенства ax > b (a, b – действительные числа).

Возможны следующие варианты ответа: 1) x > b / a (при a > 0); 2) x < b / a (при a < 0); 3) нет решений (при a = 0, b ≥ 0); 4) x – любое число (при a=0, b<0). Program Neravenstvo; Var a, b: Real; Begin Write ('a='); Readln (a); Write ('b='); Readln (b); If a>0 Then Writeln ('x>',b/a) Else If a<0 Then Writeln ('x<',b/a) Else If b>=0 Then Writeln ('нет решений') Else Writeln ('x-любое число') End.   If a >0 Then Writeln ('x>',b/a); If a <0 Then Writeln ('x<',b/a); If a=0 then If b>=0 Then Writeln ('нет решений') Else Writeln ('x-любое число')

* В случае вложенных ветвлений каждое новое ключевое слово Else следует считать относящимся к ближайшему неиспользованному If. Например,

  If x>-5 Then If x<=6 Then y:=x*x Else y:=x*x*x Else y:=x; Этот фрагмент позволяет вычислить значение y по формуле:

1. Какие значения могут принимать переменные типа Boolean?

2. Какие операции сравнения и логические операции допустимы в языке Паскаль?

3. Что может быть операндом выражений сравнения? логических выражений?

4. Что такое «условный оператор» и когда он применяется?

5. Что может использоваться в качестве условия в условном операторе?

1. Определите, какие значения будут принимать переменные Х и Y после выполнения следующих операторов при:

1) A=5, B=3; 2) A=7, B=7; 3) A=-3, B=-10; 4) A=3, B=0; 5) A=5, B=2:

а) if A=B then X:= A+1; Y:=B+1; б) if A>B then X:=B+1 else Y:=A+1; X:=0;
в) if A=B then Begin X:= A+1; Y:= B+1 End; г) if A>B then Y:=A-1 else Begin X:=B-2; Y:=0 End;
* д) if (A>B) and (A*B>0) then Begin X:=SQRT (A*B); Y:=100 End Else Begin X:=B-A; Y:=A*B End;

2. Определите, какие значения будут иметь переменные a и b после выполнения условного оператора if a>=b then a:=b else b:=a;

если: 1) a=0.9; b=0.7; 2) a=-7.3; b=7.3; 3) b=17; a=17; 4) a=5; b=5;

* 3. Определите, какие из следующих операторов задают вычисления по формуле:

4. Напишите программы решения задач:

1) Найти лучший результат в забеге на 100 м трех спортсменов.

2) Участники забега на 100 м имеют номера 1, 2, 3. Найти номер победителя, если результаты забега известны.

3) Определить длительность звучания музыкальной композиции, если известно время начала и окончания звучания. На экран компьютера требуется вывести только значения времени (часов, минут, секунд), отличные от нуля (например, если время начала – 16 ч 57 м 30 с, а время окончания – 17 ч 14 м 30 с, то длительность звучания составит 17 м).

4) Определить по номеру года, является ли он високосным (год високосный, если его номер делится на 4, кроме тех, которые делятся на 100 и не делятся на 400). Например, 1900 год – не високосный, 2000 год – високосный.

5) Для старшеклассника определены нормальные значения границ кровяного давления: верхняя – не более 100, нижняя – не менее 60 и разница верхней и нижней границ – не менее 30. Определить, является ли давление старшеклассника нормальным, если заданы значения нижней и верхней границ кровяного давления.

* 6) Используя метод Ленуара, определить название дня недели для некоторой даты, которая задается номерами года (g), месяца (m), дня (d):

вначале следует вычислить значение С = [365,25g] + [30,56m] + d +N, где N=1, если месяц – январь или февраль високосного года, N=2, если месяц – январь или февраль невисокосного года, N=0 для остальных месяцев;

затем нужно найти остаток от деления С на 7; если он равен 0, то в качестве ответа выведите «среда», 1 – «четверг», …, 6 – «вторник».

* 7) В финале конкурса «Лучший по профессии» приняли участие два конкурсанта: Петров и Сидоров. Финал предусматривает проведение трех конкурсов, по каждому из которых выставляется число баллов каждому участнику. Победитель должен быть определен по сумме баллов. С клавиатуры вводятся количество баллов, которое набрал каждый участник в каждом конкурсе. Требуется вывести наибольшую сумму баллов и фамилию победителя.

8) Найти решение уравнения ax = b.

9) Решить квадратное уравнение ax 2 + bx + c =0 (а ≠ 0).

* 10) Решить уравнение ax 2 + bx + c =0.

11) Заданы три действительных числа. Выяснить, могут ли они оказаться длинами сторон некоторого треугольника.

* 12) Получить решение системы уравнений:

* 13) На экскурсию в крепость-герой Брест отправляется N человек. Для их перевозки выделены автобусы вместимостью K и M человек. Определить, сколько необходимо автобусов для перевозки всех экскурсантов (не забудьте, что одно место в каждом автобусе занято гидом). Попытайтесь определить вариант с минимальным количеством автобусов.

* 14) При исследовании поверхности планеты Зета обнаружена популяция, развитие которой с момента ее возникновения подчиняется закону, описываемому следующим образом:

где k = 1, 2, 3, … (а i – численность популяции в i -м году). По заданному номеру n года найти численное значение популяции.





Дата публикования: 2014-12-08; Прочитано: 875 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.009 с)...