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



ЗНАЕТЕ ЛИ ВЫ?

Лабораторная работа №2: Программирование разветвляющихся процессов

Поиск

 

Цель работы: изучение логических и побитовых операций, условного оператора, составного оператора и правил программирования разветвляющихся процессов.

 

Методические указания

 

В решении задач, подчас, необходимо вести действия с учётом некоторых условий. Процесс, который в зависимости от определённых условий обеспечивает выбор одного из заранее предусмотренных путей решения задачи, называется разветвляющимся. Алгоритм, реализующий такой вычислительный процесс, называется алгоритмом с разветвляющейся структурой. Каждое отдельное направление вычислений называется ветвью. Выбор той или иной ветви происходит в процессе выполнения алгоритма по результатам проверки некоторого логического условия, зависящего от исходных данных или промежуточных результатов. Для графического изображения ветвления используется блоки, приведённые на рис. 5.1.

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

 

Рис. 5.1. Блок схемы алгоритма принятия решения

 

В качестве условия могут использоваться операции сравнения, логические операции или переменные логического типа Boolean. При истинности условия (True) выполняется оператор(ы) в ветви с надписью "Да". "Оператор(ы) 2" будет выполнен, если условие примет ложное значение (False). На рис. 5.1 (б) при ложности условия не будет выполнен ни один оператор, такой блок часто называют "обход".

В общем случае выполнение разветвляющегося алгоритма можно разбить на ряд этапов (рис.5.2.)

I этап - выполнение операторов, общих для всех ветвей программы (блок 1);

II этап - принятие решений (логический блок 2), проверяется некоторое логическое условие и в зависимости от его значения False (Ложь) или True (Истина) осуществляется выбор одной из ветвей программы;

 

Рис. 5.2. Обобщенная блок-схема разветвляющегося процесса

III этап - реализация одного из выбранных путей решения задачи (блок 3 или 4), которые в свою очередь могут содержать ветвления (сложный разветвляющийся процесс);

IV этап - независимо от пути решения задачи осуществляется возвращение к общему линейному участку 2 (блок 5).

 

5.2. Условный оператор If и составной оператор Begin … End

 

Для записи на языке программирования Pascal ветвящихся вычислительных процессов используется условный оператор:

If <условие> Then <оператор_1> Else <оператор_2>;

где If, Then, Else - служебные слова; <условие> - логическое выражение.

Эта форма условного оператора приемлема для алгоритма изображённого на рис. 5.1 (а). При истинности условия, выполняется <оператор_1>, записанный за служебным словом Then, в противном случае - <оператор_2>, следующий за служебным словом Else.

Допускается использовать сокращённую форму записи условного оператора:

If <условие> Then <оператор>;

Данная форма приемлема для алгоритма изображённого на рис. 5.1 (б). Оператор, следующий за служебным словом Then, будет выполнен при истинном условии, в противном случае управление передаётся на следующий по порядку оператор.

Допускается использование вложенных условных операторов. При этом после служебных слов Then или Else записывается очередной условный оператор. Однако необходимо помнить следующее правило - каждому служебному слову Else соответствует предыдущее служебное слово Then. Степень вложенности неограниченна.

При необходимости выполнить более одного оператора при истинности или ложности условия необходимо использовать составной оператор (его ещё называют операторные скобки). Составной оператор начинается, как и тело программы, служебным словом Begin, заканчивается служебным словом End, за которым ставится "; ", между ними записываются операторы, которые необходимо выполнить. Количество операторов, объединяемых составным оператором неограниченно.

Begin

<Оператор_1>;

<Оператор_2>;

<Оператор_3>;

<Оператор_N>;

End;

 

Логические операции

 

Переменным логического типа можно присвоить результаты операций отношений. Результат операций отношений всегда равен True или False. Как уже было отмечено выше, в качестве условия могут использоваться логические операции. Помимо операций отношений в Pascal существует четыре вида логических операций, которые применимы к переменным логических типов.

Значения логического выражения при использовании бинарной логической операции конъюнкции (And (логическое умножение (И))) приведены в табл. 5.1.

Таблица 5.1

Логическая операция конъюнкция

Значение операндов Результат операции
A B A And B
True (1) True (1) True (1)
True (1) False (0) False (0)
False (0) True (1) False (0)
False (0) False (0) False (0)

Значения логического выражения при использовании бинарной логической операции дизъюнкции (Or (логическое сложение (ИЛИ))) приведены в табл. 5.2.

Таблица 5.2

Логическая операция дизъюнкция

Значение операндов Результат операции
A B A Or B
True (1) True (1) True (1)
True (1) False (0) True (1)
False (0) True (1) True (1)
False (0) False (0) False (0)

 

Значения логического выражения при использовании бинарной логической операции дизъюнкции (Xor (логическое ИЛИ-НЕ (исключающее ИЛИ))) приведены в табл. 5.3.

Таблица 5.3

Логическая операция исключающее ИЛИ

Значение операндов Результат операции
A B A Xor B
True (1) True (1) False (0)
True (1) False (0) True (1)
False (0) True (1) True (1)
False (0) False (0) False (0)

 

Четвёртая унарная логическая операция отрицания (Not (логическое отрицание (НЕ))) инвертирующая (изменяющая на противоположное) значение операнда приведена в табл. 5.4.

Таблица 5.4

Логическая операция отрицания

Значение операндов Результат операции
A Not A
True (1) False (0)
False (0) True (1)

 

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

Например:

1) . При значении переменных A=10, B=15, C=20, D=25 значение всего выражения равно True.

1.1. условие (1) – истинно (True),

1.2. условие (2) – ложно (False),

1.3. условие (3) – истинно (True),

1.4. выражение (4) - ложно (False),

1.5. выражение (5) - истинно (True).

 

2) . При значении переменных A=10, B=15, C=20, D=25 значение всего выражения равно False.

2.1. условие (1) - истинно (True),

2.2. условие (2) - ложно (False),

2.3. условие (3) - истинно (True),

2.4. выражение (4) - истинно (True),

2.5. выражение (5) - ложно (False).

 

3. . При значении переменных A=10, B=15, C=20 значение всего выражения равно False.

3.1. условие (1) - истинно (True),

3.2. условие (2) - ложно (False),

3.3. выражение (3) - ложно (False).

3.4. выражение (4) - ложно (False).

 

4. . При значении переменных A=10, B=15, C=20 значение всего выражения равно True.

4.1. условие (1) - истинно (True),

4.2. условие (2) - ложно (False)

4.3. выражение (3) - истинно (True),

4.4. выражение (4) - истинно (True),

 

В логических выражениях принят следующий порядок выполнения операций:

¨ Not;

¨ And, *, Div, Mod, /;

¨ Or, Xor, +, -;

¨ все операции сравнения.

Операции Not, And, Or, Xor можно использовать для побитовых операций с целыми числами, для которых они имеют следующий смысл.

Not - унарная операция инверсии всех битов целого числа:

A=1011, Not A=0100.

And - побитовая логическая операция И двух целых чисел:

A=3­10=00112, B:=410=01002

Or - побитовая логическая операция ИЛИ двух целых чисел:

A=3­10=00112, B:=410=01002

Xor - побитовая логическая операция ИСКЛЮЧАЮЩЕЕ ИЛИ двух целых чисел:

A=3­10=00112, B:=410=01002

 

Также к этой группе относят операции Shl и Shr.

Shl - операция I Shl J сдвигает содержимое I на J битов влево. Освободившиеся биты заполняются нулями:

A=3­10=00112, B:=4

Shr - операция I Shr J сдвигает содержимое I на J битов вправо. Освободившиеся биты заполняются нулями:

A=4­10=01002, B:=2



Поделиться:


Последнее изменение этой страницы: 2016-12-17; просмотров: 776; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

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