Учебно-методическое пособие. Алматы, 2017 ббк



бет45/106
Дата03.01.2022
өлшемі483.39 Kb.
#451845
түріУчебно-методическое пособие
1   ...   41   42   43   44   45   46   47   48   ...   106
УЧЕБНИКПаскаль(100217)

2.5. УЛУЧШЕННЫЙ КАЛЬКУЛЯТОР




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

Как вы уже знаете одним из трех основных действий (см ) является «ВЫБОР». "Выбор" того или иного действия происходит при выполнении или невыполнении определенного условия. По этому перед рассмотрением формата операторов выбора применяемых в языке Pascal, рассмотрим два вида операций: Булевские (логические) операции и операции отношения.



Булевские (логические) операции

Результатом выполнения булевских (логических) операций является одно из двух значений: True – истина, False – ложь.

В таблице приведены виды булевских (логических) операций и типы результатов получаемых при различных типах операторов.


Операции

Действие

Тип операндов

Тип результата

Унарная

Not

Логическое отрицание

Булевский

Булевский

Бинарная

And

Логическое И

Булевский

Булевский

Or

Логическое ИЛИ

Булевский

Булевский

Xor

Логическое исключающие ИЛИ

Булевский

Булевский


Операции отношения

Действие операций отношения соответствуют их математическому пониманию. Результатом этих операций является булевское выражение (True, False), например:





Отношение

Результат

3=5

False (ложь)

3<5

True (истина)

3<>5

True (истина)

3>5

False (ложь)


Оператор if … then

Оператор имеет следующий формат

If <условие> then <действие1> else <действие2>;

Как мы уже отмечали, если при невыполнении условия мы не производим никаких действий, то:

If <условие> then <действие1>;

Перед ключевым словом else символ ";" никогда не ставится.


program Primer_5;
var

Chislo1,Chislo2:Integer;

Resultat:Real;

Znak:Char;

procedure Init;

begin


Writeln('Insert chislo 1');

Readln(Chislo1);

Writeln('Insert Znak');

Readln(Znak);

Writeln('Insert chislo 2');

Readln(Chislo2);

end;
procedure Work;

begin


if znak = '+' then resultat:=chislo1 + chislo2;

if znak = '-' then resultat:=chislo1 - chislo2;

if znak = '*' then resultat:=chislo1 * chislo2;

if znak = '/' then resultat:=chislo1 / chislo2;

if znak = 'd' then resultat:=chislo1 div chislo2;

if znak = 'm' then resultat:=chislo1 mod chislo2;

end;
procedure Exi;

begin


writeln(resultat);

end;
begin

Init;

Work;


Exi;

end.
Если вы проведете трассировку данной программы, то вы безусловно заметите, что даже если знаком действия был знак "+" , то программа будут проверять все остальные возможности. То есть вне зависимости от знака программа выполнит 6 действий сравнения. Можно ли уменьшить количество сравнений, то есть увеличить скорость выполнения программы? Оказывается можно. Для этого воспользуемся вложенными операторами выбора. Изменения коснутся только процедуры Work, поэтому текст других процедур приводить не будем.


procedure Work;

begin


if znak = '+' then resultat:=chislo1 + chislo2 else

if znak = '-' then resultat:=chislo1 - chislo2 else

if znak = '*' then resultat:=chislo1 * chislo2 else

if znak = '/' then resultat:=chislo1 / chislo2 else

if znak = 'd' then resultat:=chislo1 div chislo2 else

if znak = 'm' then resultat:=chislo1 mod chislo2;

end;

В данном примере, если znak = '+', то программа просуммирует два числа и прекратит проверку других условий. Если znak <> '+', то программа проверит следующее условие znak = '-'. Проверка условия будет происходить до тех пор пока условие не выполниться. Можно ожидать, что данная программа будет работать в среднем в 2 раза быстрее, чем предыдущая.




Оператор case

Вторым оператором выбора в языке Паскаль является оператор выбора Case. Оператор выбора Case является обобщением оператора if , он дает возможность выполнять один из нескольких действий в зависимости от значения ключа. Основной формат является следующим:


Case <Имя ключа> of

<Первое значение ключа> : <Действие 1>;

<Второе значение ключа > : < Действие 2>;

. . . .


< N-ое значение ключа > : < Действие N>

else < Действие >

end;
Перепишем программу с использованием оператора case, изменения будут затрагивать только процедуру Work:
procedure Work;

begin


case znak of

'+': resultat:=chislo1 + chislo2;

'-': resultat:=chislo1 - chislo2;

'*': resultat:=chislo1 * chislo2;

'/': resultat:=chislo1 / chislo2;

'd': resultat:=chislo1 div chislo2;

'm': resultat:=chislo1 mod chislo2

else resultat:=0;

end;

end;
Проведите трассировку программы, сравните процесс работы с предыдущими программами. Заметьте, что если вы введете знак действия отличный от +,-,/,*,d,m, то программа выдаст результат равный нулю. Сохраните эту программу под именем Primer_6.pas.





Достарыңызбен бөлісу:
1   ...   41   42   43   44   45   46   47   48   ...   106




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет