Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УЧЕБНИК-Pascal.doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
499.71 Кб
Скачать

Задание

1. Напишите программу, которая считывает с клавиатуры два вещественных числа, находит их сумму и выводит результат на экран.

2. Напишите программу, которая считывает с клавиатуры два вещественных числа, находит их разность и выводит результат на экран.

3. Напишите программу, которая считывает с клавиатуры два вещественных числа, находит их произведение и выводит результат на экран.

4. Что произойдет, если в программе program Primer_4, в качестве типа переменных выбрать вещественный тип:

var

Chislo1,Chislo2,Resultat:real;

А в процедуре work попытаемся определить остаток от деления первого числа на второе:

procedure Work;

begin

resultat:=chislo1 mod chislo2;

end;

Попробуйте объяснить данный результат.

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 раза быстрее, чем предыдущая.