Программирование ветвящихся алгоритмов
Краткие теоретические сведения 1. Логические величины, операции, выражения В Паскале логические значения обозначаются служебными словами False (F) и True (Т), а идентификатор логического типа — Boolean.
Кроме величин (констант и переменных) типа Boolean, логические значения False, True принимают результаты операций отношения.
Операции отношения осуществляют сравнение двух операндов и определяют, истинно или ложно соответствующее отношение между ними.
Примеры записи отношений:
х < у; а + b >= c/d; abs(m - n)<=1.
Примеры вычисления значений отношений:
-
Отношение
| Результат
| 12 >= 12
| True
| 56 > 10
| True
| 11 <= 6
| False
| Логические операции выполняются над операндами булевского типа. Имеются четыре логические операции: Not — отрицание; And — логическое умножение (конъюнкция); Ог — логическое сложение (дизъюнкция). Кроме этих трех обязательных операций, в ТурбоПаскале имеется еще операция «Исключающее ИЛИ», обозначаемая служебным словом Хог. Это двухместная операция, которая в результате дает значение ИСТИНА, если оба операнда имеют разные логические значения.
Логические операции были перечислены в порядке убывания приоритетов. Результаты выполнения логических операций для различных значений операндов приведены в табл. 2.5.
Таблица 2.5
Результаты выполнения логических операций
А
| В
| Not А
| A And В
| А Ог В
| А Хог В
| Т
| Т
| F
| Т
| Т
| F
| Т
| F
| F
| F
| Т
| Т
| F
| F
| Т
| F
| F
| F
| F
| Т
| Т
| F
| Т
| Т
| Операции отношения имеют самый низкий приоритет, поэтому если операндами логической операции являются отношения, их следует заключать в круглые скобки. Например, математическому неравенству 1 < х < 50 соответствует следующее логическое выражение:
(1 <= х) And (х <= 50)
Логическое выражение — это логическая формула, записанная на языке программирования. Логическое выражение состоит из логических операндов, связанных логическими операциями и круглыми скобками. Результатом вычисления логического выражения является булевская величина (False или True). Логическими операндами могут быть логические константы, переменные, функции, операции отношения. Один отдельный логический операнд является простейшей формой логического выражения.
Примеры логических операторов присваивания:
d:= True;
b:= (х > у) And (к <> 0); c:= d Or b And Not(Odd(к) And d).
2. Функции, связывающие различные типы данных
В табл. 2.6 приведен список стандартных функций, обеспечивающих связь между различными типами данных.
В табл. 2.6 приведен список стандартных функций, обеспечивающих связь между различными типами данных.
Таблица 2.6
Стандартные функции, связывающие различные типы данных
Обращение
| Тип аргумента
| Тип результата
| Действие
| Ord (х)
| Любой порядковый
| I
| Дает порядковый номер значения х в его типе
| Pred (х)
| То же
| Тот же, что у х
| Дает предыдущее по отношению к х значение в его типе
| Succ (х)
| »
| Тот же, что у л;
| Дает следующее по отношению к х значение в его типе
| Chr (х)
| Byte
| Char
| Дает символ с порядковым номером х
| Odd (х)
| I
| Boolean
| Дает True, если х — нечетное число, и False, если х —четное
| Функции Ord, Pred и Succ применимы только к порядковым типам данных, т.е. из простых типов данных ко всем, кроме вещественных.
Функция Ord, применяемая к целому числу, дает его собственное значение. Например:
Ord(-35) = -35; Ord(128) = 128
Если аргумент целый, то, например, оператор у := Pred(x) эквивалентен у := х - 1, а оператор у := Succ(x) эквивалентен у := х + 1.
Для аргумента символьного типа эти функции дают соответственно предыдущий и следующий символы в таблице внутренней кодировки. Поскольку латинский алфавит всегда упорядочен по кодам, т.е.
Ord (‘ а ‘) < Ord('b') < ... < Ord (‘ z ‘) ,
то, например, можно записать
Pred(‘b’) = 'a'; Succ('b’) = ‘c’.
То же относится и к цифровым литерам:
Ргеd(‘5’) = '4'; Succ('5') = '6'.
Функция Chr (x) является обратной к функции Ord (х), если х — символьная величина. Например, для кода ASCII справедлива запись:
Ord(‘ а’) = 97; Chr(97) = 'а'.
Эту их «взаимообратность», если х— символьная величина, можно выразить формулой
Chr(Ord(х)) = х.
В некоторых случаях возникает задача преобразования символьного представления числа в числовое. Например, получить из литеры '5' целое число 5 можно следующим образом:
N := Ord(‘5’) - Ord(‘0’).
Здесь N— целая переменная и использован тот факт, что код литеры '5' на пять единиц больше кода '0'.
Булевский тип данных также является порядковым. Порядок расположения двух его значений следующий: False, True. Тогда справедливы следующие отношения:
Ord(False) = 0; Succ(False) = True;
Ord(True) = 1; Pred(True) = False. 3. Программирование ветвящихся алгоритмов
Алгоритмическая структура ветвления программируется в Паскале с помощью условного оператора, имеющего вид
If <Условие> Then <Оператор 1> Else «Оператор 2>;
Кроме того, возможно использование неполной формы условного оператора:
If <Условие> Then <Оператор>;
Условием в условном операторе является логическое выражение, которое вычисляется в первую очередь. Если его значение равно True, то будет выполняться <Оператор 1> (после Then), если ж его значение равно False, будет выполняться <Оператор 2> (после Else) для полной формы или сразу оператор, следующий после условного, для неполной формы (без Else).
Структуру вложенных ветвлений можно программировать одного оператора выбора, имеющегося в языке Паскаль.
Структура оператора выбора:
Case <Селектор> Of
<Константа 1> : <Оператор 1> ;
<Константа 2> : <Оператор 2> ;
…
<Константа n> : <Оператор n> ;
Else <Оператор>
End.
Здесь <Селектор> - это выражение любого порядкового типа, <Константа> - постоянная величина того же типа, что и селектор, а <Оператор> - любой простой или составной оператор.
Выполнение оператора выбора происходит следующим образом: вычисляется выражение – селектор, затем в списках констант находится значение, совпадающее с полученным значение селектора, а далее исполняется оператор, помеченный данной константой. Если такой константы не найдено, происходит переход к выполнению оператора, следующего после Else. Задание к лабораторной работе № 2П
Выписать в отчет по лабораторной работе свой вариант задания из раздела "Варианты Задачи 1 лабораторной работы № 2П" в следующей форме:
Задание к лабораторной работе № 2П.
Вариант № ____ Задача № 1. Вычислить значение функции F по формуле:
(привести формулу для своего варианта).
Составить блок-схему и программу решения Задачи № 1 для своего варианта и занести их в отчет. В программе предусмотреть:
а) ввод нескольких вариантов тестовых исходных данных;
б) вывод результатов вычисления функции для тестовых исходных данных;
в) ввод произвольного значения аргумента и вывод соответствующего результата вычисления функции;
г) в случае получения нуля в знаменателе вывести фразу "Ноль в знаменателе".
Выписать в отчет по лабораторной работе свой вариант задания из раздела "Варианты Задачи 2 лабораторной работы № 2П" в следующей форме:
Задача № 2. Составить программу, которая печатает True, если точка с координатами (х, у) принадлежит заданной заштрихованной области, показанной на рисунке, и False – в противном случае.
(привести рисунок для своего варианта).
Составить блок-схему и программу решения Задачи № 2 для своего варианта и занести их в отчет. В программе предусмотреть:
а) ввод нескольких вариантов тестовых координат (х, у);
б) вывод результатов работы программы для тестовых координат;
в) ввод произвольных координат (х, у) и вывод соответствующего результата работы программы.
Рекомендации.
Для составления программы изучить:
Условные обозначения блоков программ, используемые в блок-схемах, и правила их применения.
Структуру программы.
Оператор присваивания, математические и логические операции, их приоритет.
Операторы ввода-вывода read(ln), write(ln).
Стандартные математические функции Паскаля.
Условный оператор if … then…else.
Оператор выбора case … of…else…end.
При составлении программ использовать Пример выполнения задания к лабораторной работе.
Содержание отчета по лабораторной работе № 2П:
Титульный лист с номером и названием работы.
Краткий конспект теоретической части.
Задание к первой задаче лабораторной работы в соответствии с п. 1) данного описания.
Решение Задачи № 1 в соответствии с п. 2) данного описания.
Задание ко второй задаче лабораторной работе в соответствии с п. 3) данного описания.
Решение Задачи № 2 в соответствии с п. 4) данного описания.
ПРИЛОЖЕНИЯ
Результаты выполнения логических операций
A
| B
| Not B
| A And B
| A Or B
| A Xor B
| T
| T
| F
| T
| T
| F
| T
| F
| F
| F
| T
| T
| F
| F
| T
| F
| F
| F
| F
| T
| T
| F
| T
| T
|
Стандартные функции, связывающие различные типы данных
Обращение
| Тип аргумента
| Тип результата
| Действие
| Ord (x)
| Любой порядковый
| I
| Даёт порядковый номер значения x в его типе
| Pred (x)
| То же
| Тот же, что у x
| Даёт предыдущее по отношению к x значение в его типе
| Succ(x)
| »
| Тот же, что у x
| Даёт следующее по отношению к x значение в его типе
| Chr (x)
| Byte
| Char
| Даёт символ с порядковым номером x
| Odd (x)
| I
| Boolean
| Даёт True, если x – нечётное число, и False, если x - чётное
|
Структура условного оператора:
If < Условие> Then <Оператор 1> Else <Оператор 2>;
неполная форма условного оператора:
If <Условие> Then <Оператор >. Структура оператора выбора:
Case <Селектор> Of
<Константа 1> : <Оператор 1> ;
<Константа 2> : <Оператор 2> ;
…
<Константа n> : <Оператор n> ;
Else <Оператор>
End Лабораторная работа № 3П
|