Типовые разветвляющиеся алгоритмы.ppt
- Количество слайдов: 34
ТИПОВЫЕ РАЗВЕТВЛЯЮЩИЕСЯ АЛГОРИТМЫ ПРИМЕРЫ
ТИПОВЫЕ РАЗВЕТВЛЯЮЩИЕСЯ АЛГОРИТМЫ n n n Существует 3 типа задач, решаемых с помощью разветвляющихся алгоритмов: Поиск максимального или минимального значения. Попадание в интервал или исключение из него. Сортировка по возрастанию или убыванию (ранжировка). Первый и третий типы задач могут решаться двумя способами: по переменным и по значению.
Поиск минимума по значению Пример 2. 1. Разделить сумму трех заданных чисел (отличных от нуля) на наименьшее из них.
начало 7 1 5, 6 A, B, C 2 8 Min=A R 3 B
Поиск максимума по переменной Пример 2. 2. По итогам соревнований спортсмены Иванов, Петров и Сидоров набрали неравные количества баллов. Определить победителя.
начало 1 A, B, C 2 Да Нет A>B ^ A>C Да 4 «Петров » 7 конец Нет B>C 6 5 «Иванов » 3 «Сидоров »
Попадание в интервал Пример 2. 3. В зависимости от частоты колебаний звуки делятся на: - слышимый звук с частотой 16 Гц – 20 к. Гц; - инфразвук с частотой < 16 Гц; - ультразвук с частотой >= 20 к. Гц. По известной частоте колебаний определить класс, к которому принадлежит звук.
начало 1 F 2 Да Нет F<16 Да 4 5 «Инфразвук» «Слышимый звук» 7 конец 3 Нет F<=2000 0 6 «Ультразвук»
Сортировка по значению Пример 2. 4. Расположить значения переменных a, b, c по возрастанию.
начало 1 A, B, C 2 A>B Да 3 Нет 4 B>C Да 5 Нет 6 A>B Нет 8 A, B, C 9 конец P=A A=B B=P P=B B=C C=P Да 7 P=A A=B B=P
Сортировка по переменным Пример 2. 5. Отпечатать имена переменных в порядке возрастания значений неравных переменных a, b, c.
начало 1 A, B, C 2 Да A
Сортировка по переменным Пример 2. 5. Три спортсмена во время соревнований набрали неравные количества баллов. Покажите, как расположатся фамилии спортсменов в итоговой таблице соревнований.
начало 1 SA, A, SB, B, SC, C 2 A>B Да 3 Нет 4 B>C Да 5 P=B; SP=SB B=C; SB=SC C=P; SC=SP Нет 6 A>B Нет 8 9 SA, SB, SC конец P=A; SP=SA A=B; SA=SB B=P; SB=SP Да 7 P=A; SP=SA A=B; SA=SB B=P; SB=SP
Алфавит и словарь языка программирования Алфавит языка программирования – это фиксированный набор основных символов, из которых должен составляться любой текст на этом языке. С помощью этих символов могут быть записаны идентификаторы, выражения и операторы языка. В словаре языка программирования различают такие группы: n специальные символы; n составные спецсимволы, которые воспринимаются компилятором как единое целое: <= >= : = (*) (. . ) n зарезервированные (ключевые) слова; n идентификаторы (имена); n неименованные константы; n комментарии и директивы компилятора.
Алфавит и словарь языка программирования n n Символы языка программирования: большие (от A до Z) и маленькие (от a до z) буквы латинского алфавита; десятичные цифры от 0 до 9; символ подчеркивания: «_» ; Разделительный символ пробела (основное назначение – разделение ключевых слов и имен); Управляющие символы (табуляция, символы, замыкающие строку) ; Специальные символы – символы, которые используют при построении разнообразных конструкций языка: + - / * = < > [] () {}, . : ; @ $ #.
Алфавит и словарь языка программирования n n Зарезервированные слова имеют строго определенный смысл. Их назначение не может изменяться. Они используются для обозначения алгоритмических конструкций, разделов программы и т. п. Идентификатор – это имя, значение которого может меняться от программы к программе, а также в пределах одной программы. Различают стандартные идентификаторы и идентификаторы пользователя. Стандартными идентификаторами являются имена встроенных в язык процедур и функций (read, write, sin, cos), типов данных (real, integer) и директив (forward, absolute). Идентификатор пользователя – это имя, которое выбирает программист для обозначения элементов программы (именованных констант, переменных, типов, процедур, функций, программ и. т. п. ).
Алфавит и словарь языка программирования n n n n Правила записи идентификаторов: идентификатор начинается с буквы или символа подчеркивания, только для метки допускается использование целого числа без знака; идентификатор может состоять из букв, цифр, символа подчеркивания; буквы русского алфавита не могут входить в состав идентификатора Pascal, их можно использовать только в строковых константах; идентификатор может иметь произвольную длину, но значащими являются только первые 63 символа; в идентификаторах недопустимо использовать символы пробела, точки и др. символы пунктуации; малые и большие буквы в идентификаторах не различаются; зарезервированные слова не могут использоваться в качестве идентификаторов.
Алфавит и словарь языка программирования n n Например Правильная запись имен metka_13, B 5, Error_Code, delta, Flag Неправильная запись имен 3 DGraph — начинается с цифры; Nomer. Doma — содержит точку; numberX — содержит специальный символ; My Program — содержит пробел; Div — зарезервированное слово.
Константы и переменные n n Переменная — ячейка оперативной памяти компьютера, которой присвоено определенное имя (идентификатор). Содержимое ячейки (значение переменной) может меняться по ходу выполнения программы. Каждое новое значение, записанное в ячейку памяти, "затирает" предыдущее значение, поэтому в любой момент времени переменная имеет только одно, текущее, значение. Значение переменной в определенный момент времени иногда называют состоянием переменной. Константами называются элементы данных, значения которых в процессе выполнения программы не изменяются. Значения констант задаются непосредственно в тексте программы при ее разработке.
Константы и переменные n n Использование переменных в программе позволяет записать алгоритм решения задачи в общем виде и сделать программу пригодной для многократного использования с различными исходными данными. Константы и переменные можно использовать в выражениях. Выражение – это последовательность операций, операндами которой могут быть переменные, константы, вызовы функций и другие выражения. В математике значение переменной в рамках определенной задачи неизменно. Именно поэтому высказывание А : = А + 1 математик сочтет неверным (если знак : = будет трактоваться им как равенство). Для программиста это абсолютно правильная конструкция: она задает вычисление суммы содержимого ячейки А и числовой константы 1 и занесение полученного результата в ту же ячейку А.
Логический тип данных n n n Логический тип имеет всего два значения: true (да — истина, 1) и false (нет — ложь, 0). Над данными логического типа нельзя выполнять обычные арифметические операции, для них определены логические операции и операции сравнения. Логические значения упорядочены, то есть в операциях сравнения true > false.
Логические операции К логическим значениям применяются логические операции: Операция Название Лексема И логическое умножение (конъюнкция) and ИЛИ логическое сложение (дизъюнкция) or НЕ отрицание not Исключающее ИЛИ xor
Логические операции A B A and B A or B A xor B Not A false false true false true true false
Логические операции Таким образом, использование логических операций дает возможность записывать сложные логические выражения. Например, (A > B) ^ (A > C) (A < B) v (C < B) при значениях А=5, В=3, С=1 (5 > 3) ^ (5 > 1) true и true (5 < 3) v (1 < 3) false или true Использование скобок в сложных логических выражениях обязательно. A>B and A>C 5 > 3 and 5 > 1 true and 5>1 ошибка!
МНОГОВАРИАНТНЫЙ ВЫБОР Пример 4. По номеру месяца определить соответствующее ему время года. Переменная Номер месяца Время года Имя N Season Тип Назначение Целый Исходные данные Строковый Результат
начало 1 N Нет 2 Да N 3 12, 1, 2 7 Season= «Не сезон» Season= «Зима» 4 3. . 5 Season= «Весна» 5 6. . 8 Season= «Лето» 8 Season= «Осень» 9 Season 6 9. . 11 конец
Пример 4. Для электроснабжения завода необходимо построить две линии электропередач (ЛЭП): рабочую и резервную от разных подстанций. От подстанции «Северная» можно провести кабельную ЛЭП и воздушную ЛЭП. От подстанции «Южная» также можно провести кабельную и воздушную ЛЭП (стоимость строительства каждого из вариантов ЛЭП известна). Определить минимальный по стоимости вариант электроснабжения завода. Рабочей ЛЭП считать более дешевую. Отпечатать сначала номер рабочей ЛЭП, потом резервной.
начало 1 C 1, C 2 C 3, C 4 2 Да C 1< C 2 3 CMIN 1=C 1 NMIN 1=1 Нет 4 CMIN 1=C 2 NMIN 1=2 5 Да C 3< C 4 6 Нет 7 CMIN 2=C 4 NMIN 2=4 CMIN 2=C 3 NMIN 2=3 CMIN 1
Пример 5. Из пункта А в пункт В необходимо доставить автомобильным транспортом груз. Вес автомобиля с грузом Р (т), высота Н (м), ширина В (м). Возможны три варианта доставки длиной С 1, С 2, С 3 (км), причем С 1>С 2>С 3. На первом маршруте есть мост с допустимой нагрузкой Р 1 (т) и участок узкой дороги шириной В 1 (м). На втором маршруте есть тоннель высотой Н 2 (м) и шириной В 2 (м). На третьем маршруте есть мост с допустимой грузоподъемностью Р 3 (т) и проезд под линией электропередачи высотой Н 3 (м). Определить допустимый маршрут минимальной длины и отпечатать его номер. В случае невозможности доставки груза отпечатать текст «пути нет» .
начало 1 Да Р, Н, В Р 1, В 1 Н 2, В 2 Р 3, Н 3 2 Нет Р<Р 3 ^ Н<Н 3 Да 4 Нет Н<Н 2 ^ В<В 2 Да 3 5 ‘Путь № 3’ 7 ‘Путь № 2’ ‘Путь № 1’ 9 конец 6 Р
Пример 6. Имеются слитки прямоугольной формы одинакового размера из металла А, металла В и сплава этих металлов D с соотношением компонентов 2: 1. Удельный вес металлов А и В известны. Определить по известным линейным размерам и весу слитка G (определенному с точностью до 0, 02 G), из какого он металла, а если слиток состоит из сплава , то определить дополнительно, какого металла в сплаве две части, а какого – одна. Предусмотреть вывод на печать соответствующих признаков.
Таблица имен переменных Назначение Имя Тип Плотность металла А P 1 Плотность металла В Real Назначение Имя Тип Ширина слитка A P 2 Высота слитка B Плотность сплава 2 А+В PS 1 Глубина слитка C Плотность сплава А+2 В PS 2 Объем слитка V Вес слитка G Real
начало 1 Р 1, Р 2 А, В, С G 2 V=A*B*C PS 1=(2 P 1+P 2)/3 PS 2=(P 1+2 P 2)/3 P 1 0. 98 G/ V P 1 1. 02 G/ V Да 3 P 2 0. 98 G/ V P 2 1. 02 G/ V Нет 5 Да PS 1 0. 98 G/ V PS 1 1. 02 G/ V Нет Да 7 Нет Да 4 6 ‘Металл А’ ‘Металл В’ 10 8 ‘Сплав 2 А+В’ 12 конец PS 2 0. 98 G/ V PS 2 1. 02 G/ V ‘Сплав А+2 В’ 9 Нет 11 ‘Неизвестный сплав’


