Условный оператор, оператор выбора. Процедуры вводы-вывода. Логические операции в Паскале, таблицы истинности. Лекция 5

Содержание

Слайд 2

Инструкции ввода и вывода Ввод данных

Ввод данных — это передача исходных данных программы

Инструкции ввода и вывода Ввод данных Ввод данных — это передача исходных
в оперативную память компьютера для обработки.
Инструкцию ввода с клавиатуры можно записать в одной из форм:
read(x1, х2, ..., xN);
readln;
readln(x1, x2,...,xN);
где x1, x2, …, xN — список ввода, содержащий имена переменных допустимых типов.
При этом первые две инструкции, выполненные последовательно, эквивалентны третьей.

Слайд 3

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

в одной инструкции read или readln можно записать несколько переменных, разделенных запятыми.
При выполнении программы значения, вводимые с клавиатуры, можно разделять пробелом либо символом табуляции (клавиша <Таb>) или нажимать клавишу после ввода каждого из значений;
инструкция readln; (без переменных) обычно записывается в конце программы и служит для создания паузы, которая длится до нажатия пользователем клавиши ;
тип данных, вводимых во время работы программы, должен соответствовать типу переменной, указанной в инструкции ввода.

Слайд 4

Вывод данных

Вывод данных — это передача данных после обработки из оперативной памяти

Вывод данных Вывод данных — это передача данных после обработки из оперативной
на устройство вывода (экран, принтер, файл на диске).
Инструкция вывода на экран записывается в одной из следующих форм:
write(y1, у2,. . . ,yN) ;
writeln;
writeln(y1, y2,...,yN);
где y1, y2,... ,yN — список вывода.
Первые две инструкции, выполненные последовательно, эквивалентны третьей.

Слайд 5

инструкции write и writeln предназначены для вывода констант различных типов, значений переменных

инструкции write и writeln предназначены для вывода констант различных типов, значений переменных
или выражений. Число параметров — произвольно;
из констант наиболее часто выводятся строки текста (вспомним, что строковые константы заключаются в апострофы);
если в инструкции вывода записано выражение, то сначала будет произведено его вычисление, а затем выполнен вывод полученного результата.
процедура вывода writeln аналогична write. Отличие заключается в том, что после вывода курсор автоматически переходит в начало новой строки;
инструкция writeln (без параметров) переводит курсор в начало следующей строки. Таким способом можно, например, отделять результаты работы программы друг от друга одной или несколькими пустыми строками.

Слайд 6

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

Пример: программа спрашивает имя пользователя и выводит на экран сообщение, что данный
пользователь учит Паскаль.
program p1;
var a:string;
begin
writeln(‘Введите свое имя');
readln(a);
writeln(a,' учит Паскаль');
readln;
end.

Слайд 7

Формат вывода

Вывод значения вещественного типа осуществляется в форме с использованием степени десяти.

Формат вывода Вывод значения вещественного типа осуществляется в форме с использованием степени
Если такой вид результатов не устраивает пользователей, то программисту следует позаботиться о приемлемом формате вывода.
В инструкциях вывода имеется возможность записи выражения, определяющего ширину поля вывода для каждой выводимой переменной или константы:
write (y1: w:d, у2: w: d, . . ., yN: w: d);
writeln (y1: w: d, y2: w: d, . . ., yN: w: d);
где w задает общую ширину поля вывода; d — место под дробную часть; w и d константы или выражения целого типа. Параметр d указывается только для выражений вещественного типа.

Слайд 8

если w, заданное программистом, мало, то при выводе ширина поля будет увеличена.

если w, заданное программистом, мало, то при выводе ширина поля будет увеличена.
Часто задают w = 0 для автоматического подбора ширины поля вывода;
если w, наоборот, слишком велико, то выводимое значение прижимается к правому краю поля вывода, а слева выводятся пробелы;
если мало d, то производится округление.

Слайд 9

Пример. Найти сумму, разность, произведение и частное двух чисел.
program p2;
var a,b,r,s,p:integer; c:real;
begin
writeln('Vvedite

Пример. Найти сумму, разность, произведение и частное двух чисел. program p2; var
dva chisla');
readln(a,b);
r:=a-b; s:=a+b;
p:=a*b; c:=a/b;
writeln('a-b=',r);
writeln('a+b=',s);
writeln('a*b=',p);
writeln('a/b=',c:6:3);
readln;
end.

Слайд 10

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

Оператор if можно записать двумя способами.
Вариант 1
if Условие then
{

Условный оператор IF Оператор if можно записать двумя способами. Вариант 1 if
Действия, которые выполняются, если Условие истинно}
else
{ Действия, которые выполняются, если Условие ложно };
Вариант 2:
if Условие then
{ Действия, которые выполняются, если Условие истинно };
Во втором случае говорят о сокращенной форме условного оператора (алгоритмическая конструкция обход).

Слайд 11

Описание выполнения оператора if
Выполнение условного оператора начинается с вычисления условия. Если оно

Описание выполнения оператора if Выполнение условного оператора начинается с вычисления условия. Если
истинно, то выполняется оператор, стоящий после служебного слова then. Если условие ложно, то выполняется оператор, стоящий после служебного слова else, а в сокращенной форме условного оператора — выполняется следующая по порядку за оператором условия инструкция.

Слайд 12

Следует знать:
при вложенности операторов каждое else соответствует тому then, которое непосредственно ему

Следует знать: при вложенности операторов каждое else соответствует тому then, которое непосредственно
предшествует;
конструкций со степенью вложенности более 2—3 необходимо избегать из-за сложности их анализа при отладке программы;
если в сложном условном операторе проверяемые Условие1, Условие2... не влияют друг на друга, т. е. последовательность их вычисления безразлична, в тексте программы их рекомендуется располагать в определенном порядке. Условие, с наибольшей вероятностью принимающее значение true, должно стоять на первом месте, с меньшей вероятностью — на втором, и т. д. Это ускорит выполнение программы.

Слайд 13

Пример: пользователь вводит возраст, определить совершеннолетний ли он.
program p3;
var a:integer;
begin
writeln('Vvedite vozrast');
readln(a);
if a>=18

Пример: пользователь вводит возраст, определить совершеннолетний ли он. program p3; var a:integer;
then writeln('sovershennoletnij')
else writeln('nesovershennoletnij');
readln;
end.

Слайд 14

Пример: Пользователь вводит число, если оно положительное, то увеличить его в два

Пример: Пользователь вводит число, если оно положительное, то увеличить его в два
раза.
program p4;
var a:integer;
begin
writeln('Vvedite chislo');
readln(a);
if a>0 then a:=a*2;
writeln('chislo=', a);
readln;
end.

Слайд 15

Составной оператор

Составной оператор представляет собой группу из произвольного числа операторов, отделенных друг

Составной оператор Составной оператор представляет собой группу из произвольного числа операторов, отделенных
от друга точками с запятой. Группа ограничена операторными скобками begin и end.
Часто в условных операторах используют составной оператор begin end. Если между begin и end находится только одна инструкция, слова begin и end лучше не писать.
Обратите внимание — при использовании в программе составного оператора обычно стараются слово end располагать строго под словом begin, чтобы легче было проверять соответствие операторных скобок.

Слайд 16

Пример: Пользователь вводит число. Если оно положительное, то уменьшите его в два

Пример: Пользователь вводит число. Если оно положительное, то уменьшите его в два
раза и выведите на экран, в противном случае выведите сообщение, является ли число отрицательным или нулем.
program p5;
var a:real;
begin
writeln('Vvedite chislo');
readln(a);
if a>0 then
begin
a:=a/2;
writeln('chislo=', a:6:3);
end
else if a<0 then writeln('chislo<0')
else writeln('chislo=0');
readln;
end.

Слайд 17

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

case Выражение-селектор of
СписокКонстант1: { Инструкции, которые выполняются
если Выражение-селектор

Оператор выбора case Выражение-селектор of СписокКонстант1: { Инструкции, которые выполняются если Выражение-селектор
совпадает с одной из
констант из СписокКонстант1 };
СписокКонстант2: {Инструкции, которые выполняются
если Выражение-селектор совпадает с одной из констант
из СписокКонстант2 } ;

СписокКонстантN: {Инструкции, которые выполняются
если Выражение-селектор совпадает с одной из констант
из СписокКонстантN };
else { Инструкции, которые выполняются, если
Выражение-селектор не совпало ни с одной из констант }
end;

Слайд 18

Описание выполнения оператора case
Выполнение оператора case начинается с вычисления выражения-селектора. Инструкции, помещенные

Описание выполнения оператора case Выполнение оператора case начинается с вычисления выражения-селектора. Инструкции,
между begin и end, выполняются в том случае, если значение выражения, стоящего после слова case, совпадает с константой из соответствующего списка. Если это не так, то выполняются инструкции, следующие после else, расположенные между begin и end. Если else отсутствует, выполняется оператор программы, следующий за case.
Список констант выбора может состоять из произвольного количества значений или диапазонов, отделенных друг от друга запятыми. Границы диапазона записываются двумя константами через разграничитель "..". Тип констант должен совпадать с типом селектора.
Обратите внимание — в конце оператора case стоит ключевое слово end, для которого нет парного слова begin. Оператор end располагают строго под case.

Слайд 19

Следует знать:
инструкция case является обобщением оператора if и используется для выбора одного

Следует знать: инструкция case является обобщением оператора if и используется для выбора
из нескольких направлений дальнейшего хода программы;
выбор последовательности инструкций программы осуществляется во время ее выполнения в зависимости от текущего значения выражения-селектора.
выражение-селектор должно иметь порядковый тип (чаще всего — integer, реже — char, boolean или один из пользовательских типов). Использование вещественного и строкового типа недопустимо.
константы выбора внутри одного оператора выбора должны быть различны, в противном случае выполняется первая "подходящая" ветвь.
точку с запятой можно не ставить после последнего элемента списка выбора.

Слайд 20

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

Пример: Пользователь вводит номер месяца, необходимо определить и вывести на экран пору
года.
program p6;
var a:byte;
begin
writeln('Введите номер месяца');
readln(a);
case a of
12,1,2:writeln(‘зима');
3..5:writeln(‘весна');
6..8:writeln(‘лето');
9..11:writeln(‘осень');
else writeln(‘нет такого месяца')
end;
readln;
end.

Слайд 21

Логические выражения

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

Операции отношения выполняют сравнение двух операндов и определяют, истинно

Логические выражения Основные операции отношения Операции отношения выполняют сравнение двух операндов и
значение отношения или ложно.
Используя отношения, при помощи знаков логических операций получают более сложные логические выражения. Результат проверки любого условия, каким бы сложным оно ни было, всегда имеет логический тип — boolean.

Слайд 22

Таблицы истинности основных логических операций

Таблицы истинности основных логических операций

Слайд 23

Приоритет операций
Если в логическом (булевском) выражении не использованы круглые скобки, то операции

Приоритет операций Если в логическом (булевском) выражении не использованы круглые скобки, то
выполняются в порядке убывания приоритетов. Операции одинакового приоритета выполняются слева направо. Для задания явного порядка используются круглые скобки.
Обратите внимание, в Pascal логические операции имеют более высокий приоритет, чем операции отношения. Поэтому каждое простое условие в логическом выражении обязательно заключается в скобки.
Например, для целых m, mmax, n, nmax выражение
m > mmax and n > nmax
вызовет сообщение об ошибке, т. к. сначала будет выполняться операция mmax and n. Определим приоритет, расставив скобки, и получим правильное выражение:
(m > mmax) and (n > nmax).

Слайд 24

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

в языке Pascal нельзя записать двустороннее неравенство вида 1 1) and (х
выражением (х>1) and (х<2);
нельзя также записать x=y=z. Необходимо: (х=у) and(x=z);
для записи условия, заключающегося в том, что х не лежит в диапазоне от —2 до 2, можно использовать:
not((х>-2)and(x<2)) ИЛИ (х<=-2)or(х>=2)
условие принадлежности точки кругу единичного радиуса с центром в начале координат: sqr (х) +sqr (у) <1.
Логические выражения могут использоваться в инструкциях присваивания и вывода. Но, конечно, основное назначение логических выражений — организация ветвлений, когда в зависимости от значения логического выражения выполняется та или иная группа операторов.

Слайд 25

Операции div и mod

Целочисленное деление div (от англ. division — деление) отличается

Операции div и mod Целочисленное деление div (от англ. division — деление)
от обычной операции деления тем, что возвращает целую часть частного, а дробная часть отбрасывается. И операнды и результат операции должны быть целочисленные.
Например 13 div 3 = 4.
Взятие остатка от деления mod (от англ. modulus — мера) вычисляет остаток, полученный при выполнении целочисленного деления. И операнды и результат операции должны быть целочисленные.
Например 13 mod 4=1