Учебные материалы по математике | Ветвление на pascal | Matematiku5
Вузы по математике Готовые работы по математике Как писать работы по математике Примеры решения задач по математике Решить задачу по математике online

Ветвление на pascal


Ветвление на Pascal

Алгоритмическая структура «Ветвление» используется в тех случаях, когда для решения задачи необходимо проверить некоторое заданное условие и совершить одни действия при выполненном условии и иные действия при невыполненном условии. На блок-схеме это выглядит следующим образом:

 

нет да

Обе ветки «Да» и «Нет» сходятся в одной точке, называемой концом ветвления.

Соответствующий оператор Pascal:

IF <условие> THEN <блок_1> ELSE <блок-2> ;

В «переводе на русский язык»: если заданное условие выполняется, работают операторы блока_1, в противном случае – операторы блока _2. Блок_1 и блок_2 могут состоять из одного или нескольких операторов (не обязательно линейных, т. е. любой из блоков может содержать новое ветвление или цикл). Если блок_1 или блок_2 состоит из нескольких операторов, то их нужно заключить в операторные скобки Begin end

Данный вариант блок-схемы и оператора соответствует полному ветвлению. Существует также неполное ветвление, в котором отсутствуют операторы блока_2, т. е. фактически производится обход операторов блока_1: если заданное условие выполняется, работают операторы блока_1, в противном случае (по ветке «нет») никакие действия не производятся

Оператор Pascal для неполного ветвления: IF <условие> THEN <блок_1>;

Соответствующий элемент блок-схемы:

Блок-схема: решение: Условие
?

 

. нет да

 

Задача № 6

Даны (вводятся с клавиатуры) коэффициенты a, b, c квадратного уравнения ax2 + bx + c = 0. Найти и вывести на экран монитора действительные корни этого уравнения. Если данное уравнение не имеет действительных корней, вывести на экран монитора сообщение об этом. Как известно, наличие (отсутствие) действительных корней определяется значением дискриминанта d = b2 – 4ac: Если d>=0, то корни существуют.

Овал: Начало

 

Блок-схема алгоритма:

 

Блок-схема:

 

Блок-схема: Нет да

Теперь можно написать программу:

Program korny;

Var a, b, c, d, x1, x2: Real;

Begin

Writeln ( ‘Введите коэффициенты квадр. уравнения’);

Readln(a, b, c);

d:= b*b – 4*a*c;

If d>=0 Then

Begin x1:= (-b + sqrt (d))/(2*a);

x2:= (-b – sqrt (d))/ (2*a);

Writeln (‘x1=’, x1, ‘ x2=’, x2)

End Else Writeln (‘Действительных корней нет’);

Readln; End.

Данная программа – пример полного ветвления. При проверке программы необходимо задать исходные данные (числа a, b и с) так, чтобы: 1) вывелось сообщение «Действительных корней нет», 2) получились одинаковые корни, 3) получились разные корни. SQRT(аргумент) – извлечение квадратного корня.

Рассмотрим пример задачи с неполным ветвлением.

Задача № 7 (для самостоятельной записи блок-схемы и программы)

Даны (вводятся с клавиатуры) три числа (углы треугольника в градусах). Составить программу, которая определяет, существует ли треугольник с такими углами. Вывести на экран монитора соответствующее сообщение.

Задача № 8 (полное ветвление), для самостоятельной записи программы по готовой блок-схеме.

Даны три произвольных числа a, b, c. Вычислить и вывести на экран значения аргумента х и функции y:

X = a + b – c

ì x2 , если х < -3

y = í sinx, если -3=< x <= 3

î x — 10, если х >3

Блок-схема алгоритма:

 

Х = а + b — c

 

Блок-схема: решение: X < -3

 

Нет да

Блок-схема: решение: X <= 3

Y = x2

 

 

Нет да

 

Примечание. При проверке программы задать 3 – 5 вариантов исходных данных (значений a, b, c): 1) чтобы Х получилось меньше -3; 2) X — в диапазоне от -3 до +3; 3) X >3; 4) X = 3; 5) X = -3.

В качестве условия в операторе ветвления может быть задано логическое выражение – совокупность операций отношения (<, <=, >, >=, =, <>) и базовых логических операций. До сих пор в приведенных примерах использовались только операции отношения. Операции отношения, логические операции и логические выражения могут вырабатывать только два значения: True (истина) или False (ложь). Значение истина (True) означает, что условие выполнено, ложь (False) – условие не выполнено.

Базовые логические операции

Операнды

Результат выполнения операции

X

Y

X And Y

X Or Y

Not (X)

X Xor Y

False

False

False

False

True

False

False

True

False

True

True

True

True

False

False

True

False

True

True

True

True

True

False

False

В таблице перечислены результаты четырех логических операций; в качестве операндов этих операций используются операции отношения.

Операции And, Or, Xor являются двуместными (требуют двух операндов), операция Not – одноместной (второй операнд не требуется).

And – логическое умножение (конъюнкция), математические знаки: & и ⋀; операция вырабатывает значение Истина (True) только в том случае, когда оба операнда имеют значение Истина; в противном случае, когда хотя бы один из операндов имеет значение Ложь, операция And вырабатывает значение Ложь. Чтобы легче было понять это, проведем аналогию: Ложь – 0, Истина – 1, тогда:

0 * 0 = 0, 0 * 1 = 0, 1 * 0 = 0, 1 * 1 = 1. Данная операция используется в логических выражениях в тех случаях, когда необходимо проверить одновременное выполнение двух (и более) операций отношения.

Or – логическое сложение (дизъюнкция), математический знак v. Операция Or вырабатывает значение Истина, если хотя бы один из операндов имеет значение Истина, и только в том случае, когда оба операнда имеют значение Ложь, операция Or вырабатывает значение Ложь. Используя аналогию операции And, можно записать: 0 + 0 = 0, 0 + 1 = 1, 1 + 0 = 1, 1 + 1 = 2 (хоть и не 1, но не 0, т. е. истина). Данная операция используется в логических выражениях в тех случаях, когда для выполнения условия достаточно выполнения хотя бы одной операции отношения.

Not – «Не» (отрицание), математический знак — ך. Результат выполнения операции противоположен значению операнда.

Xor – «исключающее или». Результатом выполнения операции является Истина, если операнды имеют разные значения, в противном случае вырабатывается Ложь.

Порядок выполнения операций при вычислении значения логического выражения:

1)  определяется значение операций отношения (операндов логических операций);

2)  если перед операндом стоит операция Not, то определяется ее значение;

3)  And;

4)  Or, Xor;

5)  если логическое выражение заключено в скобки, и перед ними стоит операция Not, то вычисляется содержимое скобок, а потом применяется Not.

Рассмотрим пример логического выражения и попробуем вычислить его значение: Not ((a=b) And (b = c) Or ((d = 60) And (f = 60))) при а = 4, b = 7, c = 9, d = 45, f = 100.

Сначала определяем значение операций отношения, затем выполняем операции логичеcкого умножения And, затем логического сложения Or и отрицания Not:

Not (False And False Or (False And False)) = Not (False Or False) = Not (False) = True.

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

Задача № 9

Даны три произвольных числа a, b, c (вводятся с клавиатуры). Если выполняется соотношение a <= b <= c, заменить числа их квадратами; если выполняется соотношение a >b > c, то числа заменить наименьшим их них (т. е. с); в противном случае изменить знак каждого числа на противоположный. Результаты вывести на экран монитора.

Сначала нарисуем блок-схему:

 

Нет Да

 

Нет Да

 

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

Теперь можно написать программу:

Program Primer;

Var a, b, c: Real;

Begin

Writeln (‘Введите три числа’);

Readln (a, b, c);

If (a <= b) And (b <= c) Then Begin a:= a * a; b:= b * b; c:= c *c; End Else

If (a > b) And (b > c) Then Begin a:= c; b:= c; End Else

Begin a:= — a; b:= — b; c:= -c; End;

Writeln (a, ‘ ‘, b, ‘ ‘, c);

Readln

End.

Задача № 10

С клавиатуры вводятся три произвольных числа x, y, Найти максимальное из следующих чисел: x + y + z, x * y * z, x – y – z. Результат вывести на экран монитора.

Сначала создадим алгоритм в виде блок-схемы:

 

Нет Да

Да Нет

Нет Да

 

Примечание. В блок-схеме алгоритма использованы дополнительные переменные: P – произведение исходных чисел, S – их сумма, R – их разность. Это сделано исключительно для того, чтобы графическое изображение алгоритма не было слишком громоздким. В программе вместо этих величин можно было бы просто писать x * y * z x + y + y x – y – z соответственно.

Теперь можно написать программу:

Program maximum;

Var x, y, z, P, S, R: Real;

Begin

Writeln (‘Введите три числа’); Readln(x, y, z);

P:= x * y * z; S:= x + y + z; R:= x – y – z;

If (P > R) And (P > S) Then Writeln (‘P (произведение) — max’, P) Else

If (S > P) And (S > R) Then Writeln (‘S (сумма) – max’, S) Else

If (R > P) And (R > S) Then Writeln (‘R (разность) – max’, R) Else

Writeln (‘ Максимальное не определено’);

Readln; End.

Задача № 11 (для самостоятельного написания программы по блок-схеме)

C клавиатуры вводятся четыре числа a, b, c, d. Определить является ли число d делителем хотя бы одного из чисел a, b, c. Вывести на экран соответствующее сообщение.

Блок-схема задачи:

Нет Да

Нет Да

Нет Да

Задача № 12 (для самостоятельного написания программы по блок-схеме)

Дано (вводится с клавиатуры) три числа. Определить, могут ли эти числа быть сторонами треугольника, и если да, то какой это треугольник: равносторонний, равнобедренный или прямоугольный. Вывести на экран соответствующее сообщение.

Блок-схемa алгоритма:

 

Нет Да

Нет Да

Нет Да

Нет Да

Подготовка к самостоятельной работе

по основным операторам языка Pascal и ветвлению

1.  Определить, какие операторы вывода записаны с ошибками (синтаксическими или смысловыми), и ответить на вопрос, в чем конкретно заключается ошибка или записать оператор правильно:

a)  Write (“Введите три числа”);

b)  Writeln (‘s=’, ‘p=’,’r=’);

c)  Writeln (‘Cумма=’, S,’ Произведение=’, P, ‘ Разность=’ R);

d)  Wrtln (X,’ ‘Y,’ ‘Z);

2.  Записать следующие числа в обычном виде (без порядка):

3.45690Е+04 1.09876Е+00 6.1407Е-03 5.1198654Е+02 7.9845602Е-02

3. Определить результат последовательного выполнения операций (должны получиться целые числа):

a:=564 div 11 mod 7 * 5; b:= a* 12 mod 10 div 3; c:= a div b * 3;

a:= 381 mod 14 * 10 div 7; b:= a div 5 * 12 mod 4; c:= a mod b * 7;

4. Найти среди перечисленных операторов If правильно записанные операторы полного ветвления:

а) If (x<=0) Then begin y:= x +10; z:= y – x; end Else

begin y:= x – 5; z:= (y + x)/2;

b) If (b + c = a) Or (a + c = b) Or (c + a = b) Then (‘Треугольник не существует’) Else If (b = c) Or (c = a) Or (b = a) Then (‘Треугольник равнобедренный’);

Else If (a = b) And (b = c) Then (‘Треугольник равносторонний’) Else (‘Треугольник, возможно, существует’);

с) If (x + y = z) Then Writeln (Совпадает’) Writeln (‘Не совпадает’);

d) If (a*a + b*b = c*c) Or (b*b + c*c = a*a) Or (c*c + a*a = b*b) Then

Writeln (‘Треугольник — прямоугольный’);

е) If x<0 Then begin k:= k +1; p:=p*x end Else S:= S + x;

5. Выберите из перечисленных ниже операторы неполного ветвления, записанные с ошибками, и перепишите их в правильном варианте, объяснив, что было не так:

а) If c mod d = 0 Then Writeln (‘d – делитель c’) Else

Writeln (‘d не является делителем c’);

b) If (a <= b) And (b <= c) Then Begin a:= a * a; b:= b * b; c:= c *c; End;

c) If d>=0 Then Begin x1= (-b + sqrt (d))/(2*a);

x2= (-b – sqrt (d))/ (2*a);

Writeln (‘x1=’, x1, ‘ x2=’, x2) End;

d) If (a:=0) Or (b:=0) Or (c:=0) Then x=0;

e) If (a<b<c) Then Writeln (‘c – наибольшее’);

6. Что выведется на экран монитора после работы алгоритма, записанного в виде блок-схемы:

 

Нет Да

Определить результат при Х = 735, 386 и 246.

Ответы: 15, S – нечетное число; 17, S – нечетное число; 12, S – четное число.

Что выведется на экран монитора после работы следующей программы:

Program primer;

Var a, b, c, x, y, z: Real;

Begin

Writeln (‘Введите три числа’);

Readln (a, b, c);

X:= a*a – b + c;

If x <=-5 Then y:= x*x -12 Else

If x <=0 Then y:= x Else y:= SQRT (x);

z:= x + y;

Writeln (x,’ ‘, y, ‘ ‘, z);

Readln; End.

Определить результат работы программы при следующих значениях исходных данных:

a) а = -1, b = 7, c = 1

b) а = 2, b = 10, c = -1

c) а = 3, b = 12, c = 2

d) а = -3, b = 12, c = 3

e) а = 5, b = 10, c = -6

Наташа

Автор

Наташа — контент-маркетолог и блогер, но все это не мешает ей оставаться адекватным человеком. Верит во все цвета радуги и не верит в теорию всемирного заговора. Увлекается «нефрохиромантией» и тайно мечтает воссоздать дома Александрийскую библиотеку.

Распродажа дипломных

 Скидка 30% по промокоду Diplom2020