Вложенные операторы If. Сложное условие в операторе. Логические операции. 


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



ЗНАЕТЕ ЛИ ВЫ?

Вложенные операторы If. Сложное условие в операторе. Логические операции.



 

В операторе If после слова then и else может стоять любой оператор Паскаля, в том числе и еще один If.

 

Задача 12.

Составить программу для решения следующей задачи: В компьютер вводится число. Если оно находится в интервале от 28 до 30, то напечатать текст Попал, иначе – Не попал.

 

Программа.

 

VAR а: Real;

BEGIN

WriteLn('Введите число');

ReadLn(a);

If a>28 then If a<30 then WriteLn('Попал')

else WriteLn('Не попал');

else WriteLn('Не попал')

END.

 

На первый взгляд применение If внутри If создает громоздкую, трудную для понимания программу. Однако если аккуратно использовать ступенчатую запись, то программа получится достаточно обозримой.

Чтобы программа со вложенными друг в друга If была короче и понятнее, можно использовать только один If, применяя логические операции AND, OR и NOT.

 

 

AND (читается – "энд"; переводится – "и"), поставленный между двумя условиями, говорит о том, что должны выполняться сразу оба эти условия.

Решение Задачи 11 с применением логической операции AND.

 

VAR а: Real;

BEGIN

WriteLn('Введите число');

ReadLn(a);

If (a>28) AND (a<30) then WriteLn('Попал')

else WriteLn('Не попал')

END.

OR (читается – "о"; переводится – "или"), поставленный между двумя условиями, говорит о том, что достаточно, если будет выполняться хотя бы одно из них.

NOT (читается – "нот"; переводится – "не"), поставленный перед условием, говорит о том, что условие не должно выполняться.

Примеры:

Фрагменты программ Результаты

 

a:=8; b:=6; If (a>b) AND (b>7) then k:=1 else k:=0 k=0

a:=8; b:=6; If (a>b) OR (b>7) then k:=1 else k:=0 k=1

a:=8; b:=6; If (a<b) OR (b>7) then k:=1 else k:=0 k=0

a:=8; b:=6; If NOT (a=8) then k:=1 else k:=0 k=0

Внутри скобок можно писать не только простые, но и сложные условия. Например, фрагмент

If NOT ((a>2) AND (b>3)) then… можно перевести так: Если неправда, что одновременно верны два условия a>2 и b>3, то …

 


Символьный тип данных.

VAR а,b: Char; (читается – "кэр", переводится – "символ")

Это описание означает, что переменные а и b имеют право принимать значения любых символов, имеющихся на клавиатуре. Например: а:='л'; b:='+';

При вводе нескольких символов одним оператором ReadLn все символы набираются на клавиатуре подряд без пробелов.

 

Задача 13.

Написать программу, переворачивающую любое трёхбуквенное слово, введённое человеком с клавиатуры.

 

Программа.

VAR a1,a2,a3: Char;

BEGIN

ReadLn(a1,a2,a3);

WriteLn(a3,a2,a1)

END.

 

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

 

В Паскале есть специальный оператор, который позволяет выбрать одну из нескольких возможностей.

 

Этот оператор называется оператором выбора и имеет следующий вид:

case выражение of

список_значений_1: оператор_1;

список_значений_2: оператор_2;

список_значений_n: оператор_n;

else оператор;

end;

Здесь между зарезервированными словами case и of находится выражение, принимающее значение, которое может присутствовать в одном из списков значений, находящихся слева от двоеточий. Ветвь else, отвечающая всем неперечисленным значениям выражения, необязательна. При выполнении данного оператора вначале вычисляется значение выражения. Затем выбирается тот список значений, в котором находится полученное значение, и выполняется соответствующий ему оператор. Если значение выражения отсутствует в списках значений, ни один из вариантов выполняться не будет. В этом случае выполняется ветвь else оператора case или, если эта ветвь отсутствует, следующий за case оператор.

 

Замечание.

Переменная, стоящая после слова case, должна быть так называемого порядкового типа. Пока мы знаем 3 типа, относящихся к порядковым, - это Integer, LongInt и Char.

 

Задача 14.

Написать программу, спрашивающую у ученика его отметку и реагирующую на неё подходящим текстом.

 

Программа.

 

VAR otmetka: Integer;

BEGIN

WriteLn('Какую отметку ты получил сегодня?');

ReadLn(otmetka);

case otmetka of

1,2: WriteLn('Кошмар!');

3: WriteLn('Неважно');

4: WriteLn('Неплохо');

5: WriteLn('Отлично');

else WriteLn('Таких отметок не бывает');

end

END.

Замечание.

Конструкция 12..16 обозначает то же, что и 12, 13, 14, 15, 16 и называется диапазоном. Такая конструкция служит для сокращения записи.

 

 

 


Самостоятельная работа №3 по теме "Разветвляющиеся программы".

 

I ВАРИАНТ

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

 

  1. Написать программу, которая просит ввести с клавиатуры число x и выводит на экран результат b, который вычисляется по формуле:

 

 

-1

 

  1. Написать программу, которая просит ввести с клавиатуры номер дня недели и выводит на

экран сообщение о том, какой сегодня день – рабочий или выходной.

 

 

II ВАРИАНТ

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

минимальное из этих чисел.

 

 

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

результат c, который вычисляется по формуле:

 

- ,

 

 

3*. Написать программу, которая просит ввести с клавиатуры число, символ арифметического

действия (+,-,*,/) и еще одно число и выводит на экран результат полученного выражения.

 

 


 

 

 


Циклические программы.

 

Цикл представляет собой последовательность операторов, которая выполняется неоднократно.

В языке программирования Паскаль имеется три разновидности цикла:

 

v цикл с предусловием (цикл "пока" – while);

 

v цикл с постусловием (цикл "до тех пор, пока" – repeat…until);

 

v цикл со счётчиком (цикл "для" – for…to/downto);

 

Цикл с предусловием.

Цикл с предусловием имеет вид:

 

While условие do оператор;

(While: читается – "вайл"; переводится – "пока"; do: читается – "ду"; переводится – "делай".)

 

Работает оператор while так:

 

Сначала компьютер проверяет истинность условия, стоящего после слова while. Если условие истинно, то выполняется оператор, стоящий после do. Затем снова проверяется истинность условия и в случае истинности снова выполняется этот оператор и т.д. Если условие ложно, то оператор while прекращает свою работу и компьютер переходит к выполнению следующего оператора.

 

Оператор, стоящий после do называется телом цикла. Телом цикла может быть и составной оператор, т.е. группа операторов, заключённая в операторные скобки begin...end.

 

Задача 15.

Составить программу с использованием оператора while для вычисления квадратных корней из чисел 900, 893, 866 и т.д. до тех пор, пока это можно делать.

 

Программа.

Var a:Real;

BEGIN

a:=900;

while a>=0 do begin

WriteLn('Число=',a:5:0,' Корень=',Sqrt(a):7:2);

a:=a-3;

end;

ReadLn

END.

 

Цикл с постусловием.

Цикл с постусловием имеет вид:

 

Repeat оператор, оператор, …, оператор Until условие;

(Repeat Until условие: читается – "ри'пит…ан'тил"; переводится – "повторяй… до тех пор, пока не выполняется условие.)

 

Работает оператор repeat так:

 

Сначала компьютер по очереди выполняет операторы, стоящие после слова repeat, пока не дойдёт до слова until. Если условие ложно, то компьютер снова по очереди выполняет эти операторы и снова проверяет истинность условия и т.д. Если условие оказывается истинным, то работа оператора repeat прекращается и компьютер переходит к выполнению следующего по порядку оператора.

 

 

Задача 16.

Составить программу с использованием оператора repeat для вычисления квадратных корней из чисел 900, 893, 866 и т.д. до тех пор, пока это можно делать.

 

Программа.

Var a:Real;

BEGIN

a:=900;

repeat

WriteLn('Число=',a:5:0,' Корень=',Sqrt(a):7:2);

a:=a-3;

until a<0;

ReadLn

END.

 



Поделиться:


Последнее изменение этой страницы: 2017-02-07; просмотров: 134; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

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