Lab_rab_6_Uslovny_op_operator_vybora
.docxЛАБОРАТОРНАЯ РАБОТА № 5
Тема лабораторной работы: «Разветвляющиеся алгоритмы»
Цель работы
Получение навыков разработки алгоритмов и программирования разветвляющихся алгоритмов.
3.1. Типы разветвляющихся алгоритмов
Второй типовой структурой алгоритмов является разветвляющийся вычислительный процесс, в котором направление вычислений зависит от результата проверки некоторого условия.
Направления, по которым может следовать вычислительный процесс, называются ветвями. В программах разветвляющихся процессов естественный порядок выполнения операторов нарушается и обеспечивается выполнение той последовательности операторов, которая соответствует выбранным условиям. В языке Паскаль это реализуется специальными управляющими операторами или операторными структурами, которые называются операторами перехода.
Схему алгоритма разветвленной структуры характеризует наличие блока "условие", который имеет два выхода, помеченные словами "да" и "нет". Еще этот блок называют логическим блоком. В этом блоке осуществляется проверка выполнения некоторого логического условия. Если условие "истинно", вычислительный процесс идет по выходу "да", в противном случае - по выходу "нет".
Рассмотрим простейший пример:
Задача: Ввести два целых числа и вывести на экран наибольшее из них.
Идея решения: надо вывести на экран первое число, если оно больше второго, или второе, если оно больше первого.
Особенность: действия исполнителя зависят от некоторых условий
(если … иначе …).
А лгоритмы, в которых последовательность шагов зависит от выполнения некоторых условий, называются разветвляющимися.
Блок «начало»
Полная форма условного оператора
if условие then оператор 1 else оператор 2;
Блок «ввода»
Блок «решение»
program qq;
var a, b, max: integer;
begin
writeln('Введите два целых числа');
read ( a, b );
if a > b then max:=a
else
max:=b;
writeln ('Наибольшее число ', max);
end.
Полная форма ветвления
Блок «вывода»
Блок «конец»
Условие - это логическое выражение, в зависимости от которого выбирается одна из двух альтернативных ветвей алгоритма. Если значение условия истинно (TRUE), то будет выполняться оператор 1, записанный после ключевого слова then. В противном случае будет выполнен оператор 2, следующий за словом else, при этом оператор 1 пропускается. После выполнения указанных операторов программа переходит к выполнению команды, стоящей непосредственно после оператора if.
Необходимо помнить, что перед ключевым словом else точка с запятой никогда не ставится!
Следует помнить, что синтаксис языка допускает запись только одного оператора после ключевых слов then и else, поэтому группу инструкций обязательно надо объединять в составной оператор (заключать в операторные скобки begin ... end). В противном случае возникает чаще всего логическая ошибка программы, когда компилятор языка ошибок не выдает, но программа тем не менее работает неправильно.
Неполная форма условного оператора
if условие then оператор 1;
program qq;
var a, b, max: integer;
begin
writeln('Введите два целых числа');
read ( a, b );
if a > b then max:=a;
writeln ('Наибольшее число ', max);
end.
Оператор выбора
Ч асто возникают ситуации, когда приходится осуществлять выбор одного из нескольких альтернативных путей выполнения программы. Несмотря на то, что такой выбор можно организовать с помощью оператора if .. then, удобнее воспользоваться специальным оператором выбора. Его формат:
case выражение of
вариант : оператор;
...
вариант : оператор;
end;
или
case выражение of
вариант : оператор;
...
вариант : оператор;
else оператор
end;
выражение, которое записывается после ключевого слова case, называется селектором, оно может быть любого перечисляемого типа. вариант состоит из одной или большего количества констант или диапазонов, разделенных запятыми. Они должны принадлежать к тому же типу, что и селектор, причем недопустимо более одного упоминания варианта в записи инструкции case. Из перечисленного множества операторов будет выбран только тот, перед которым записан вариант, совпадающий со значением селектора. Если такого варианта нет, выполняется оператор, следующий за словом else (если он есть).
П ример
case ch of
'A'..'Z', 'a'..'z' : WriteLn('Буква');
'0'..'9' : WriteLn('Цифра');
'+', '-', '*', '/' : WriteLn('Оператор');
else WriteLn('Специальный символ')
end;
Стандартные функции и процедуры
Abs(X) – вычисляет абсолютное значение X;
Exp(X) – основание натурального логарифма; возводит в степень X;
Ln(X) – вычисляет натуральный логарифм X;
Sqr(X) – X возводит в квадрат;
Sqrt(X) – вычисляет квадратный корень из X;
Тrunc(Х) – определяет целую часть числа X, тип результата Longint;
Round(X) – округляет число X до целого;
Chr(I) (I – целое число) – определяет символ, порядковый номер которого равен I;
Ord(I) (I – порядковый) – определяет порядковый номер символа в наборе символов;
Pred(I) (I – порядковый) – находит предшествующий элемент;
Succ(I) (I – порядковый) – находит последующий элемент;
Odd(I) (I – целого типа) – определяет четность числа: если I – нечетный, то результат принимает значение true, если четный – false;
Еoln(F) (F – файловая переменная) – результат принимает значение true, если при чтении текстового файла достигнут конец текущей строки. В остальных случаях результат равен false;
Eof(F) (F – файловая переменная) – результат принимает значение true, если при чтении текстового файла достигнут конец файла. В остальных случаях результат равен false;
Dec(X[,i]) – уменьшает значение X на i, при отсутствии i – на 1;
Inc(X[,i]) – увеличивает значение X на i, при отсутствии i – на 1;
Frac(Х) – определяет дробную часть аргумента;
Int(Х) – определяет целую часть аргумента. Тип результата Real;
Random (X) – равномерное псевдослучайное число 0 < I < Х, при отсутствии X интервал чисел от 0 до 1.
Задание на лабораторную работу
1. Дано натуральное число n (n≤9999). Является ли это число палиндромом (перевертышем) с учетом четырех цифр, как, например, числа 2222, 6116, 0440 и т.д.?
2. Дано натуральное число n (n≤100), определяющее возраст человека (в годах). Дать для этого числа наименования «год», «года», «лет». Например, 1 год, 23 года, 46 лет и т.д.
3. Поле шахматной доски определяется парой натуральных чисел, каждое из которых не превосходит восьми: первое число – номер вертикали (при счете слева направо), второе – номер горизонтали (при чете снизу вверх) Даны натуральные числа k, l, m, n, каждое из которых не превосходит восьми. Требуется выяснить, являются ли поля (k, l) и (m, n) полями одного цвета.
4. Среди целых чисел k, l, m найти пары кратных.
5. Число делится на 3, если сумма его цифр делится на 3. Проверить этот признак на примере заданного трехзначного числа.
6. Элементы окружности пронумерованы следующим образом: 1 – радиус (R), 2 – диаметр (D), 3 – длина (L), 4 – площадь круга (S). Дан номер одного из этих элементов и его значение. Вывести значения остальных элементов данной окружности (в том же порядке). В качестве значения π использовать стандартную константу Pi.
7. Элементы равнобедренного прямоугольного треугольника пронумерованы следующим образом: 1 – катет (a), 2 – гипотенуза (c), 3 – высота, опущенная на гипотенузу (h), 4 – площадь (S). Дан номер одного из этих элементов и его значение. Вывести значения остальных элементов данного треугольника (в том же порядке).
9. Упорядочить три числа x, y, z по возрастанию так, чтобы переменной с именем х соответствовало самое малое из чисел x, y, z, y – среднее, а z – наибольшее.
10. Вычислить корни квадратного уравнения ax2 + bx + c = 0.
11. Определить, попадает ли точка (х, у) в круг радиуса R с центром в точке (а; b). Вывести признак N = 1, если точка находится в круге и N = 0 – в противном случае.
12. Установить, принадлежит ли точка (х, у) кольцу с центром в точке (a, b) и с радиусом R1 = 2, R2 = 4. Если да, то вычислить z = sin(x+y), иначе z = |x×y|. 13. Решить уравнение ax + b = 0, где x – аргумент; a и b – параметры.
14. Найти стоимость покупки с учетом скидки. Величина скидки в y% предоставляется в случае, когда x – сумма покупки больше z рублей.
15. Вычислить расстояние |AB|, |AC|, |BC| между точками A, B, C. Если |AB| > |BC|, то найти |AB| + |AC| + |BC|, иначе вывести значение |AC|.