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



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

Задание

1. Напишите программу, используя оператор выбора if … then , которая считывает данные с клавиатуры о температуре и выводит на экран сообщение согласно данным в приведенной ниже таблице:




Температура

Сообщение

<-20oC

Очень холодно

-20 oC<= t<0 oC

Холодно

0 oC<= t<10 oC

Прохладно

10 oC<= t<20 oC

Тепло

20 oC<= t

Жарко

2. Используя, оператор выбора case , перепишите предыдущую программу. Проверьте, что произойдет, если в качестве типа переменной температура взять вещественный тип?



2.6. УЛУЧШЕННЫЙ КАЛЬКУЛЯТОР (ПРОДОЛЖЕНИЕ)




2.6.1. Оператор цикла с постусловием (проверка на ноль)

Вернемся к программе калькулятор. Загрузите ее в интегрированную среду ВР и запустите на выполнение. В качестве исходных данных введите следующие данные:

Число1 – 5;

Знак действия - *;

Число2 – 0.

В результате работы программы будет 0. Действительно, если любое число умножить на ноль в результате получим ноль. Опять запустим программу, но теперь вместо действия умножения предложим программе произвести деление.

Программа выдаст сообщение об ошибке. Действительно делить на ноль нельзя. Что же делать?

Конечно, можно вывести предупреждение в процедуру Init , например


procedure Init;

begin


Writeln('Insert chislo 1');

Readln(Chislo1);

Writeln('Insert Znak');

Readln(Znak);

Writeln('Insert chislo 2');

Readln(Chislo2);

{проверка возможности деления на ноль}

If (Znak=’/’) and (Chislo2=0) then

begin

Writeln(' chislo 2=0,Insert chislo 2<>0');



Readln(Chislo2);

end;


end;
Если выполнятся два условия, то есть знак действия будет равен «/» и значение второго числа будет равно 0, программа выдаст предупредительное сообщение и попросит заново ввести второе число.

Обратите внимание, что для того чтобы программа вывела на экран и предупреждение, и попросила повторить ввод второго числа, эти два действия помещены в операторные скобки:

begin

. . . . . . .



end;

Это позволяет интерпретировать группу операторов как один оператор. Такие операторы называются составными. Операторными скобками мы определяем иерархию (порядок) выполнения действий.

Хорошо если попадется добросовестный пользователь и введет число неравное 0, а если нет? Увы, программа опять покажет ошибку. Как быть? Что нужно сделать, что бы защитить нашу программу?

Понятно, что программа должна в случае с делением повторять ввод данных пока второе число не будет равно 0. Сколько раз программа должна попросить повторить ввод данных, мы заранее незнаем. Но, по крайней мере, хотя бы один раз она должна запросить ввести второе число. Таким образом, мы должны использовать:

а) цикл с нефиксированным количеством действий;

б) цикл с пост условием.


Оператор цикла с постусловием в Паскале имеет следующий формат:

Repeat


{тело цикла}

Действие 1;

Действие 2;

. . . . . . .

Действие N;

Until <условие>;

Как мы знаем, выполнение цикла с постусловием прекращается тогда когда условие является истиной.

В нашем случае одно условие это znak=’/’ и второе условие Chislo2=0.

Составим таблицу истинности

znak=’/’

Chislo2=0

Ожидаемый результат

А and B

Not(A and B)

Истина

Истина

Ложь

Истина

Ложь

Ложь

Истина

Истина

Ложь

Истина

Истина

Ложь

Истина

Ложь

Истина

Ложь

Ложь

Истина

Ложь

Истина

Введем изменения в процедуру Init.

procedure Init;

begin


Writeln('Insert chislo 1');

Readln(Chislo1);

Writeln('Insert Znak');

Readln(Znak);



repeat

Writeln('Insert chislo 2');

Readln(Chislo2);



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




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

    Басты бет