- •Как написать простейшую программу
- •1. Описание переменной файлового типа
- •2. Связь переменной файлового типа с конкретным внешним файлом.
- •3. Чтение из файла
- •4. Закрытие файла
- •5. Признак конца файла
- •6. Запись в файл
- •Логическая функция Eoln()
- •Описание данных логического типа
- •Логические операции
- •Стандартные логические функции
- •Решение задач
- •Окно редактора кода
- •Окно вывода
- •Окно ввода
- •Запуск и остановка программы
- •Оператор цикла с предусловием while
- •Оператор цикла с постусловием repeat
- •Решение
- •Параметры процедур и функций
- •Передача параметров
- •Глобальные и локальные переменные
- •Вызов процедуры
- •Вызов функции
- •Операции для данных символьного типа
- •Функции для данных символьного типа
- •Перечисляемый тип
- •Набор операций
- •Стандартные функции
- •Интервальный тип (диапазон)
- •Описание массива
- •Особенность языка Паскаль
- •Заполнение одномерного массива значениями
- •Вывод значений элементов массива на экран
- •Изменение значений некоторых элементов
- •Заполнение массива по заданному правилу
- •Работа с несколькими массивами
- •Вставка одного элемента
- •Вставка нескольких элементов
- •Сортировка массива методом простого выбора
- •Сортировка массива методом простого обмена (методом пузырька)
Логические операции
В языке программирования Паскаль для работы с логическими операндами введены следующие логические операции:
not - отрицание (инверсия);
and - конъюнкция (логическое умножение);
or - дизъюнкция (логическое сложение, объединение);
xor - исключающее или.
Результат работы операций задается следующей таблицей истинности (таблицей значений):
Значение операнда |
Значение операции |
||||
a |
b |
not a |
a and b |
a or b |
a xor b |
false |
false |
true |
false |
false |
false |
false |
true |
true |
false |
true |
true |
true |
false |
false |
false |
true |
true |
true |
true |
false |
true |
false |
false |
Запомнить эту таблицу очень просто. Операция отрицание меняет значение операнда на противоположное.
Для того, чтобы результат операции логического умножения был истинен, все операнды должны быть истинны.
Для того чтобы логическое сложение дало истину, нужно, чтобы хотя бы один операнд был истинен.
Исключающее или дает истину, только если операнды имеют разные значения. Иногда эту операцию называют выбором альтернативы.
Логические операции, операции отношения и арифметические операции часто встречаются в одном выражении. Причем отношения, стоящие слева и справа от знака логической операции, должны быть заключены в скобки, поскольку логические операции имеют более высокий приоритет.
Вообще, в логическом выражении принят следующий приоритет операций:
NOT
AND,*, DIV, MOD
OR, XOR, +, -
операции сравнения
Порядок выполнения операций можно изменить скобками. Например, в логическом выражении A OR B AND NOT(A OR B) сначала выполняется заключенная в скобки операция OR, а затем операции NOT, AND, OR.
Стандартные логические функции
odd(x) = true, если x нечетный (xцелый тип);
eoln(x) = true, если встретился конец строки текстового файла x;
eof(x) = true, если встретился конец файла x.
В остальных случаях эти функции принимают значение false.
В языке Паскаль нет возможности ввода логических данных с помощью оператора read. Однако предусмотрен вывод значений переменных логического типа с помощью оператора write. В этом случае для идентификаторов FALSE и TRUE автоматически отводятся по 6 позиций: две - перед словом TRUE и одна - перед FALSE.
Решение задач
Определить значение логического выражения:(-3>=5) Or Not(7<9) And(0<3)
Чему равны значения переменных a и b после выполнения последовательности действий: a := 15 Div (16 Mod 7); b := 34 Mod a *5 - 29 Mod 5*2; a := 4 * 5 Div 3 Mod 2; b :=4 * 5 Div ( 3 Mod 2); a := a*b; b:= b*b.
Логические выражения в качестве условий применяются в условных операторах (if и case ), а также в операторах цикла.
Об условных операторах узнаем на следующем уроке.
Урок из серии: "Язык программирования Паскаль"
Условные операторы предназначены для выбора одного из нескольких продолжений алгоритма в зависимости от некоторых условий.
В языке Паскаль имеются два условных оператора: if и case. Один оператор if может обеспечит выбор из двух альтернатив, оператор выбора case позволяет сделать выбор из произвольного числа имеющихся вариантов.Условный оператор If (оператор ветвления)
В качесве условия выбора используются логические выражение.
Полный условный оператор if: If <условие> Then <оператор 1> Else <оператор 2>; |
Неполный условный оператор: If <условие> Then <оператор>;
Алгоритм выполнения полного условного оператора:
Проверяется значение логического выражения, записанного в условии после слова If (если). Простые условия записываются в виде равенств или неравенств. Сложные условия составляются из нескольких простых с помощью логических операций.
Если условие истинно, то выполняется оператор 1, указанный после слова Then(то).
Если условие ложно, то выполняется оператор 2, записанный после слова Else (иначе)
В неполном ветвлении ветвь Else отсутствует, в случае невыполнения условия ничего делать не надо. Происходит переход к следующему оператору.
Если в качестве оператора должна выполняться серия операторов, то они объединяются в операторные скобки Begin-End.
Применение условного оператора if рассмотрим на примерах.
Пример 1. С клавиатуры ввести два числа. Найти большее из них и вывести его на экран.
program primer6_1; var a, b, m:integer; begin writeln('Введите два числа: '); readln(a, b); if a>b then m:=a else m:=b; writeln('Большее из них: ', m); end. |
Пример 2. Даны три отрезка. Можно ли из них построить треугольник?
Решение. Для любого треугольника сумма его двух сторон должна быть больше третьей стороны (неравенство треугольника).
Дано: a, b, c – стороны предполагаемого треугольника. Требуется сравнить длину каждого отрезка с суммой двух других. Если хотя бы в одном случае отрезок окажется больше суммы двух других, то треугольник из таких отрезков не построить.
program primer6_2; var a, b, c: integer;
begin write (' Введите длины отрезков: '); readln (a,b,c);
if (a < b+c) and (b < a+c) and (c < a+b) then writeln ('Можно построить треугольник.') else writeln ('Нельзя построить треугольник.');
end. |
Решение задач.
Найти наибольшее из трех данных чисел.
Запишите условный оператор, в котором значение переменной вычисляется по формуле: a + b, если a - нечетное и a*b, если a - четное.
Вывести на экран номер четверти, которой принадлежит точка с координатами (x, y), при условии, что x и y отличны от 0.
После выполнения операторов a := 0; If a<>0 Then; a := 2 значение переменной равно двум. Объясните почему.
Если целое число M делится нацело на целое число N, то вывести на экран частное от деления, в противном случае - сообщение ''M на N нацело не делится''.
Урок из серии: "Язык программирования Паскаль"
В разветвляющихся алгоритмах для выбора продолжения алгоритма наряду с условным оператором if используется оператор выбора case. Если один оператор If может обеспечить выбор из двух альтернатив, то оператор выбора case позволяет сделать выбор из произвольного числа имеющихся вариантов.Оператор выбора case состоит из выражения, называемого селектором (selection - выбор альтернативы) и списка операторов, каждому из которых предшествует список констант выбора (список может состоять из одной константы).
case <выражение -селектор> of <список 1>: <оператор 1;> <список 2>: <оператор 2;> . . . <список n>: <оператор n;> [else <оператор>] end; |
Здесь ветвь else заключается в квадратные скобки, что говорит о том, что эта часть оператора выбора не обязательна.
Алгоритм выполнения оператора выбора:
Вычисляется выражение, которое должно принимать значение, принадлежащее порядковому типу (например, оно не может быть вещественного типа).
В случае если результат вычисления равен одной из перечисленных констант, то выполняется соответствующий оператор. Затем управление передается за пределы оператора выбора.
Если значение выражения не совпадает ни с одной константой, то выполняется оператор, стоящий после else, если он есть, либо управление передается на оператор end и выполнение программы продолжается.
Для одной альтернативы вместо одного оператора можно указать несколько операторов, заключив их в операторные скобки.
Правила использования оператора:
Тип константы должен совпадать с типом выражения
В этой конструкции перед else стоит точка с запятой.
Все константы в альтернативах должны быть уникальны в пределах оператора выбора (т.е. повторение констант в альтернативах не допускается).
Пример1. По введенному номеру дня недели вывести на экран его название.
program primer7_1; var day:byte; begin writeln('Введите номер дня недели: '); readln(day); case day of 1: writeln('Понедельник'); 2: writeln('Вторник'); 3: writeln('Среда'); 4: writeln('Четверг'); 5: writeln('Пятница'); 6: writeln('Суббота'); else writeln('Воскресенье'); end; end. |
Решение задач.
Составьте программу, которая переводила бы арабские цифры в римские.
Составить программу, которая по номеру месяца определяла время года.
До встречи на следующем уроке.
Урок из серии: "Язык программирования Паскаль"
Все примеры программ, приведенные в уроках, выполнены в среде программирования Pascal ABC.
Система Pascal ABC ориентирована на школьников и студентов младших курсов. Это в достаточно простая и дружественная среда программирования. Во время работы используются три основных окна: окно редактора кода, окно ввода и окно вывода.
