Условный оператор
Базовые алгоритмические структуры:
В основе структурного программирования лежит теорема, доказанная Эдсгером Дейкстрой в 1969 году. Суть ее в том, что алгоритм для решения любой логической задачи можно составить используя три базовые алгоритмические структуры: следование, ветвление и цикл.
Следование - это линейная последовательность действий: Команда 1 - Команда 2 - и т.д. Команда N.
Ветвление - это алгоритмическая альтернатива. В зависимости от истинности или ложности условия, управление передается одной из команд. Затем происходит выход на общее продолжение программы.
Неполная структура ветвления (отсутствует ветка "нет").
Цикл - повторение некоторой группы действий по условию. Различают два типа цикла: с предусловием (цикл - пока) и с постусловием (цикл - до). Более подробно тема циклы будет рассмотрена далее.
Сложный алгоритм состоит из соединенных между собой базовых структур. Соединяться эти структуры могут двумя способами: последовательным и вложенным.
Структурный подход требует соблюдения стандарта в изображении блок - схем алгоритмов. Чертить их нужно так, как это делалось выше. Каждая структура должна иметь один вход и один выход.
Наглядность структуре программы на Паскале придает структуризация внешнего вида текста программы. Основной используемый для этого прием - сдвиги строк, которые должны подчиняться правилам:
- конструкции одного уровня вложенности записываются на одном вертикальном уровне (начинаются с одной позиции в строке).
- вложенная конструкция записывается смещенной по строке на несколько позиций вправо относительно внешней для нее конструкции.
Структурированное программирование - это не только форма описания алгоритма и программы, но и способ мышления программиста. Размышляя над алгоритмом нужно стремиться составить его из стандартных структур.
Программирование ветвлений.
Пример 1. Требуется перевести пятибальную оценку в ее наименование : 5 - "отлично", 4 - "хорошо", 3 - "удовлетворительно", 2- "неудовлетворительно".
Решение этой задачи можно также запрограммировать с помощью оператора выбора Case.
Оператор выбора имеет следующий формат:
Case (переменная) of
константа 1: оператор 1;
константа 2: оператор 2;
... ..... ...
константа n: оператор n;
else оператор
end;
Константа должна быть одного и того же типа, что и переменная. Оператор может быть как простым так и составным. Выполнение оператора выбора происходит так: вычисляется выражение - переменная, затем в списках констант ищется такое значение, которое совпадает с полученным значением переменной; далее исполняется оператор, помеченный данной константой. Если такой константы не найдено, то происходит переход к выполнению опертора, следующего после слова else.
Пример 2.
Программа сообщает сдал студент экзамен или нет. Если оценка 3, 4, 5 - то экзамен сдан; если оценка 2, то не сдан.
Case N of
3, 4, 5: writeln('Экзамен сдан');
2: writeln (' Экзамен не сдан');
Else writeln(' Нет такой оценки');
end;
Другой способ решить эту задачу - применить сложное условие. Для этого применяются операции логического сложения or (или) и логического умножения and (и).
Программа будет выглядеть т.о.
if (N=3) or (N=4) or (N=5)
then writeln('Экзамен сдан');
else
if (N=2)
then writeln('Экзамен не сдан')
else writeln('Нет такой оценки');
Пример 3. (Задание ЕГЭ 2009)
Составить программу определения принадлежности заданной точки с координатами (х, у) на плоскости области, заштрихованной на рисунке, включая ее границы.
Решение:
1. Запишем систему неравенств, которой удовлетворяют точки, принадлежащие данной области:
y<=1;
y>=sin(x);
x>=0;
x<=pi/2;
2. Напишем программу для решения этой задачи:
Program sssf;
var x,y:real;
Begin
writeln('Введите х,у');
readln(x,y);
if (y<=1) and (y>=sin(x)) and (x>0) and (x<=pi/2)
then write('Yes')
else write('No')
end.
Это интересно
- Какая игра пока не подвластна компьютеру, чтобы он смог обыграть сильнейшего человека?
Из всех популярных в мире настольных игр го остаётся единственной игрой, где компьютер не может победить чемпионов среди людей, играя на уровне любителей. Это объясняется двумя причинами. Во-первых, если сравнивать с шахматами, то в го гораздо больше вариантов ходов. Например, если в шахматах после четвёртого полухода может возникнуть порядка ста тысяч позиций, то в го их число превышает шестнадцать миллиардов. Мощности компьютеров просто не позволяют перебирать все возможные позиции в го в поисках лучшего варианта, как это делают шахматные компьютеры. Вторая причина заключается в сложности составления алгоритмов для оценки позиции. Компьютеру доступны пока только простейшие критерии качества позиции.
Разминка
Найдите ошибку:
if 1<x<2 then
begin
x:=x+1; y:=0
end
else beginx:=0; y:=y+1;end;
Задание в тетради:
1.
Нарисовать блок - схему и написать программу на ЯП Паскаль: выбрать из
двух чисел большее значение. Напишите 2 варианта этой программы: с
полным ветвлением и с неполным.
2. Нарисовать блок - схему и написать на ЯП Паскаль два варианта программы решения задачи: выбрать из трех числовых величин наименьшее значение. Первый вариант с вложенным ветвлением, второй вариант - с последовательным.
Компьютерный практикум (И.Г. Семакин)
Задачи на условный оператор.
1 уровень
1. Даны два угла треугольника (в градусах). Определить, существует ли такой треугольник. Если да, то будет ли он прямоугольным.
2. На плоскости XOY задана своими координатами точка A. Указать, где она расположена: на какой оси или в каком координатном угле.
3. Грузовой автомобиль выехал из одного города в другой со скоростью v1 км/ч. Через t ч в этом же направлении выехал легковой автомобиль со скоростью v2 км/ч. Составить программу, определяющую, догонит ли легковой автомобиль грузовой через t1 ч после своего выезда
4. Написать программу нахождения суммы большего и меньшего из 3 чисел.
5. Написать программу, распознающую по длинам сторон среди всех треугольников прямоугольные. Если таковых нет, то вычислить величину угла C.
6. Найти max{min(a, b), min(c, d)}.
7. Составить программу, осуществляющую перевод величин из радианной меры в градусную или наоборот. Программа должна запрашивать, какой перевод нужно осуществить, и выполнять указанное действие.
2 уровень
8. Заданы размеры A, B прямоугольного отверстия и размеры x, y, z кирпича. Определить, пройдет ли кирпич через отверстие.
9. Составить программу, осуществляющую перевод величин из радианной меры в градусную или наоборот. Программа должна запрашивать, какой перевод нужно осуществить, и выполнять указанное действие.
10. Два прямоугольника, расположенные в первом квадранте, со сторонами, параллельными осям координат, заданы координатами своих левого верхнего и правого нижнего углов. Для первого прямоугольника это точки (x1, y1) и (x2, 0), для второго — (x3, y3), (x4, 0). Составить программу, определяющую, пересекаются ли данные прямоугольники, и вычисляющую площадь общей части, если они пересекаются.
11. В небоскребе N этажей и всего один подъезд; на каждом этаже по 3 квартиры; лифт может останавливаться только на нечетных этажах. Человек садится в лифт и набирает номер нужной ему квартиры M. На какой этаж должен доставить лифт пассажира?
12. Написать программу, которая по заданным трем числам определяет, является ли сумма каких-либо двух из них положительной.
13. Известно, что из четырех чисел a1, a2, a3 и a4 одно отлично от трех других, равных между собой; присвоить номер этого числа переменной n.
14. Составить программу, которая проверяла бы, не приводит ли суммирование двух целых чисел A и B к переполнению (т.е. к результату большему, чем 32767). Если будет переполнение, то сообщить об этом, иначе вывести сумму этих чисел.
3 уровень
15. Заданы координаты (на плоскости) вершин четырехугольника. Определить, является ли он: а) ромбом; б) параллелограммом; в) прямоугольником; г) квадратом.
16. Для двух треугольных пирамид, заданных рёбрами, определить, площадь полной поверхности которой из них больше и на сколько.
17. Дана точка A(x, y). Определить, принадлежит ли она треугольнику с вершинами в точках (x1, y1), (x2, y2), (x3, y3).
18. Написать программу, определяющую, будут ли прямые A1x + B1y + C1 = 0 и A2x + B2y + C2 = 0 перпендикулярны. Если нет, то найти угол между ними.
19. Заданы координаты вершин прямоугольника: (x1, y1), (x2, y2), (x3, y3), (x4, y4). Определить площадь части прямоугольника, расположенной в I-й координатной четверти.
20. Найти координаты точек пересечения прямой y = kx + b и окружности радиуса R с центром в начале координат. В каких координатных четвертях находятся точки пересечения? Если точек пересечения нет, или прямая касается окружности, выдать соответствующее сообщение.
21. Дана точка A(x, y). Определить, принадлежит ли она прямоугольнику с вершинами в точках (x1, y1), (x2, y2), (x3, y3) , (x4, y4).
Задачи на использование оператора выбора
1. Для каждой введенной цифры (0-9) вывести соответствующее ей название на английском языке (0 — zero, 1 — one, 2 — two, …).
2. Составить программу, которая по данному числу (1–12) выводит название соответствующего ему месяца на английском языке.
3. Написать программу, которая по вводимому числу от 1 до 11 (номеру класса) выдает соответствующее сообщение «Привет, k-классник». Например, если k = 1, «Привет, первоклассник»; при k = 4: «Привет, четвероклассник».
4. Составить программу, позволяющую получить словесное описание школьных отметок (1 — плохо, 2 — неудовлетворительно, 3 — удовлетворительно, 4 — хорошо, 5 — отлично).
5. Написать программу, которая бы по введенному номеру единицы измерения (1 — дециметр, 2 — километр, 3 — метр, 4 — миллиметр, 5 — сантиметр) и длине отрезка L выдавала бы соответствующее значение длины отрезка в метрах.
6. Написать программу, которая бы по введенному номеру единицы измерения (1 — килограмм, 2 — миллиграмм, 3 — грамм, 4 — тонна, 5 — центнер) и массе M выдавала бы соответствующее значение массы в килограммах.
7. Даны два действительных положительных числа x и y. Арифметические действия над числами пронумерованы (1 — сложение, 2 — вычитание, 3 — умножение, 4 — деление). Составить программу, которая по введенному номеру выполняет то или иное действие над числами.
8. Написать программу, которая по номеру дня недели (целому числу от 1 до 7) выдает в качестве результата расписание уроков в Вашем классе в этот день.
9. Составить программу, которая по заданному году и номеру месяца определяет количество дней в этом месяце.
10. Пусть элементами круга являются радиус (первый элемент), диаметр (второй элемент) и длина окружности (третий элемент). Составить программу, которая по номеру элемента запрашивала бы его соответствующее значение и вычисляла бы площадь круга.
11. Пусть элементами прямоугольного равнобедренного треугольника являются: 1) катет a; 2) гипотенуза b; 3) высота, опущенная из вершины прямого угла на гипотенузу h; 4) площадь S. Составить программу, которая по заданному номеру и значению соответствующего элемента вычисляла бы значение всех остальных элементов треугольника.
12. В старояпонском календаре был принят 12-летний цикл. Годы внутри цикла носили названия животных: крысы, коровы, тигра, зайца, дракона, змеи, лошади, овцы, обезьяны, курицы, собаки и свиньи. Написать программу, которая вводит номер некоторого года и печатает его название по старояпонскому календарю. (Справка: 1996 г. — год крысы — начало очередного цикла.)
13. Для целого числа k от 1 до 99 напечатать фразу «Мне k лет», учитывая при этом, что при некоторых значениях k слово «лет» надо заменить на слово «год» или «года». Например, 11 лет, 22 года, 51 год.
14. Написать программу, которая по введенному числу от 1 до 12 (номеру месяца) выдает все приходящиеся на этот месяц праздничные дни (например, если введено число 1, то: 1 января — Новый год, 7 января — Рождество).
15. Дано натуральное число N. Если оно делится на 4, вывести на экран ответ N = 4k (где k — соответствующее частное); если остаток от деления на 4 равен 1, N = 4k + 1; если остаток от деления на 4 равен 2, N = 4k + 2; если остаток от деления на 4 равен 3, N = 4k + 3. Например, 12 = 4×3, 22 = 4×5 + 2.
16. Пусть элементами равностороннего треугольника являются: 1) сторона a; 2) площадь S; 3) высота h; 4) радиус вписанной окружности r; 5) радиус описанной окружности R. Составить программу, которая по заданному номеру и значению соответствующего элемента вычисляла бы значение всех остальных элементов треугольника.
Вопросы:
1. Перечислите основные базовые алгоритмические структуры и средства их программирования в ЯП Паскаль.
2. Какой алгоритм называют структурным?
3. Какие операторы используются для программирования ветвящихся алгоритмов?
4. Является ли оператор выбора необходимым для программирования ветвящихся алгоритмов
Домашнее задание:
Жилин А.С. Типовые варианты задач к тематическому разделу "Основы программирования" смотреть