Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Разветвляющийся вычислительный процесс




 

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

Условие – это логическое выражение, которое может быть либо истинным, либо ложным.

Условные выражения могут быть простыми и сложными. Простое условие включает в себя два операнда (числа, переменные, выражения), которые сравниваются между собой с использованием операций сравнения (равно =, больше >, меньше < и др.). Например, 5>3, a<b, x=32 и т.д.

Сложное условие – это последовательность простых условий, объединенных между собой знаками логических операций. Например, (a<b) and (x = 32).

Логических операций в Pascal четыре:

- отрицание – not (логическое «не»);

- логическое умножение – and (логическое «и»);

- логическое сложение – or (логическое «или»);

- исключающее «или» - xor.

Приоритеты операций:

1) not; 2) and; 3) or; 4) xor.

Результаты логических операций для различных значений операндов приведены в таблице 4, где использованы обозначения: Т-true (истина), F-false (ложь).

 

Таблица 4 – Результаты логических операций

А В Not A A and B A or B A xor B
F F T T F T F T Т Т F F F T T T F T T T F T T F

 

Примеры логических выражений в Pascal.

1) true; 2) false; 3) A>B; 4) (A=B) and (C<=D).

Операции отношений (=, <>, <=, >=, <, >) имеют более низкий приоритет, чем логические операции, поэтому выражения, содержащие операции отношений, следует заключать в скобки при использовании по отношению к ним логических операций.

В Pascal логические выражения в результате вычисления принимают значения true или false. Операндами логического выражения могут быть логические константы, переменные логического типа.

Идентификатор логического типа в Pascal: boolean.

 

Составной оператор (блок)

Часто бывает необходимо при выполнении какого-либо условия выполнить не один, а несколько отдельных операторов. В этом случае простые операторы объединяются в составной оператор или блок. В начале блока ставится служебное слово begin (“начало”), а в конце слово end (“конец”) и точка с запятой. Раздел операторов программы также представляет собой блок, в конце которого ставится не точка с запятой, а точка.

Слова begin и end называются операторными скобками. Как и при использовании обычных скобок в арифметических выражениях, количеств begin в программе должно строго соответствовать количеству слов end.

Оператор условного перехода

В языке Паскаль существует несколько форм ветвления при выполнении оператора условного перехода. Оформление полного и неполного ветвлений представлено на рисунке 2.

Рисунок 2 – Оператор условного перехода

Оператор безусловного перехода

Синтаксис оператора безусловного перехода:

goto <метка>; перейти к <метка>;
Метка должна быть объявлена в разделе описания данных:
Label <список имен меток>; Метка: <список имен меток>;
Имя метки – это идентификатор, имеющий в составе от одного до четырех символов. Метка в алгоритмическом языке отделяется от выполняемого оператора двоеточием. Например,
Label А1, В2; begin readln (х, у); goto А1; … А1: writeln (х, у); … goto B2; … B2: х:=5; …   end.   Метка: А1, В2; Начало Ввод х, у; Перейти к А1; … А1: вывод х, у; … Перейти к B2; … B2: х:=5; …   конец

А1, В2 – идентификаторы меток.

 

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

Алгоритмическая структура «выбор» применяется для реализации ветвления со многими вариантами выбора. В структуру выбора входят несколько условий, проверка которых осуществляется в строгой последовательности их записи в команде выбора. При истинности одного из условий выполняется соответствующий оператор (рисунок 3).

 

Рисунок 3 – Блок-схема алгоритмической структуры «выбор»

 

Синтаксис полного ветвления процедуры выбора

 

case К of К1: оператор 1; К2: оператор 2; …… else оператор n end;   Выбрать К из К1: оператор 1 К2: оператор 2 …… иначе оператор n;

Синтаксис неполного ветвления процедуры выбора

 

case К of К1: оператор 1; К2: оператор 2; …… Кn: оператор n; end; Выбрать К из К1: оператор 1 К2: оператор 2 …… Кn: оператор n;  

 

К – выражение-селектор, К1, К2 … Kn – возможные его значения. К может иметь только простой порядковый тип (целый, символьный, логический). К1, К2… Kn – константы того же типа, что и селектор, выполняющие роль меток ветвей. Исполнение оператора начинается с вычисления выражения К, полученное значение сравнивается с константами (метками) и выполняется соответствующий оператор. Если ни одна из меток не совпала со значением К, то выполняется оператор после слова else (иначе).

Возможно использование неполного оператора выбора без ветви else (иначе). Метки ветвей К1, К2 могут быть заданы списком или интервалом.

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

Пример 2. Даны три вещественные числа А, В, С. Найти наибольшее среди них.

Решение: 1 способ. Алгоритм решения данной задачи в виде блок-схемы представлен на рисунке 4.

Программа на языке Паскаль выглядит следующим образом:

Program pr2;

var A,B,C, MAX: real;

begin

writeln (‘введите A,B,C’);

readln (А, В, С);

if A>B

then MAX:=А

else MAX:=В;

if С> MAX

then MAX:=С;

writeln (‘MAX =’, MAX:8:4);

end.

2 способ. Решение задачи с помощью вложенных ветвей. Алгоритм решения в виде блок-схемы представлен на рисунке 5.

Программа на языке Паскаль выглядит следующим образом:

 
Program B2;

var A, B,C, MAX: real;

begin

writeln (‘введите A,B,C);

readln (А,В,С);

if A>B

then if A>C

then MAX:=А

else MAX:=С

else if B>C

then MAX:=В

else MAX:=С;

writeln (‘MAX =’, MAX:8:4);

end.

Рисунок 4 – Алгоритм решения задачи первым способом

 

 

Рисунок 5 – Алгоритм решения задачи вторым способом

ВАРИАНТЫ ЗАДАЧ

1. Дано трехзначное число N. Проверить будет ли сумма его цифр четным числом.

2. Определить, является ли натуральное число N четным двузначным числом.

3. Определить какие из заданных целых чисел a, b, с делятся на число k нацело.

4. Написать программу нахождения суммы большего и меньшего из трех заданных чисел.

5. Определить является ли треугольник со сторонами a, b, с равнобедренным.

6. Даны два угла треугольника (в градусах). Определить, существует ли такой треугольник. Если существует, будет ли он прямоугольным.

7. Даны три положительных числа. Определить, можно ли построить треугольник с длинами сторон, равными этим числам.

8. Определить в каком квадранте находится точка M(x, y) и вывести номер квадранта.

9. Дано трехзначное число. Определить, является ли число палиндромом (читается справа налево и слева направо одинаково). Например, число 353 является палиндромом.

10. Даны a, b. Лежит ли точка M(a,b) внутри кольца

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...