1. ЛАБОРАТОРНАЯ РАБОТА "РАЗВЕТВЛЯЮЩИЕСЯ ПРОГРАММЫ" Лабораторная работа содержит два задания. В первом задании используется базовая структура ветвления со сложным логическим выражением и оператор безусловного перехода с меткой для органи- зации цикла. Во всех последующих лабораторных работах использо- вание меток запрещается. Варианты заданий определяются по поряд- ковому номеру студента в журнале (списке группы). 1.1. Определение принадлежности точки заданной области 1.1.1. Цель работы Ознакомиться с базовыми структурами структурного програм- мирования, научиться использовать условный оператор для реализа- ции полного ветвления с обеими ветвями, уметь использовать ло- гические операции в сложных условиях. 1.1.2. Методические указания к лабораторной работе В структурном программировании для реализации алгоритма любой сложности достаточно использовать только три управляющие структуры: следование, ветвление и цикл. В программах на Паскале следование реализуется с помощью составного оператора с исполь- зованием операторных скобок begin-end, ветвление - с помощью условного оператора if-then-else, цикл - с помощью операторов цикла с предусловием while, с постусловием repeat-until, с па- раметром for. Возможна реализация цикла с помощью оператора безусловного перехода goto с меткой, но это считается нарушением хорошего стиля структурного программирования. Для определения принадлежности точки, которая задается ее координатами (x, y), необходимо знание канонических уравнений прямой линии y=a*x+b и окружности (x-xc)^2+(y-yc)^2=r^2, а также логических операций and ("и"), которая дает пересечение областей и or ("или"), которая дает сложение областей. 1.1.3. Порядок выполнения работы Нарисовать заданную область. Определить уравнения границ области и логические операции. Написать текст программы и прове- рить его на контрольных примерах. Оформить отчет. Для текста программы и контрольного примера использовать моноширинный шрифт. В отчет по первому заданию лабораторной работы включается: постановка задачи (с чертежом заданной области и логическим выражением); описание программы; схема программы; текст программы; контрольный пример. 1.1.4. Задания Чертежи вариантов областей выдаются отдельно. Границы вклю- чаются в область определения. В программе использовать для определения принадлежности только один условный оператор со сложным логическим выражением. В контрольный пример включить не менее шести точек. Для реализации цикла с запросом обязательно использовать метку и оператор безусловного перехода goto. Варианты запроса для повторения: 1). Повторить? 1 - ДА, 0 - НЕТ 2). Закончить? 1 - ДА, 0 - НЕТ 1.1.5. Контрольные вопросы 1. Синтаксис и семантика условного оператора. 2. Схема программы для ветвления. 3. Условный оператор с одной ветвью. 4. Логические операции и выражения. Задание N 2 на ЛР "Разветвляющиеся программы" В программе организуется цикл с признаком конца с помощью оператора While или Repeat. Метки и массивы не использовать. В конце программы выдать итог: сколько данных обработано. Предус- мотреть реакцию на исключительные ситуации: отсутствие данных и ошибки в данных. Контрольный пример должен проверять все ветви программы. 1. Ввести результаты участников лыжных соревнований (вре- мя старта и финиша). По каждому участнику определить чистое время, выдать все результаты. Ввод завершить, если введенное время старта равно 9999 и выдать в конце программы количество участников, номер и результат победителя. Если у нескольких участников одинаковое время, то победителем считается участник с меньшим номером. Формат итоговой строки: Всего участников 999, победитель номер 999 с результатом 99.99 2. В начале программы ввести сегодняшнюю дату. Для нес- кольких человек ввести дату рождения в формате ДД.ММ.ГГГГ. Вы- дать: ВОЗРАСТ: 9999 лет 99 мес. 99 дн. При определении возраста считать, что в любом месяце 30 дней. Ввод прекратить, если день рождения ДД равен нулю. В конце программы отпечатать номер самого старшего. 3. Ввести для нескольких поездов время отправления и об- щее время в пути (час., мин.). Выдать ПОЕЗД 999 ОТПРАВЛЕНИЕ 99:99 ПРИБЫТИЕ 99:99 ВРЕМЯ В ПУТИ 999:99 Ввод завершить, если время отправления равно 9999. В конце программы выдать номера самого раннего и самого позднего поездов. 4. В начале программы ввести два норматива: "сдано" и "отлично". Ввести несколько результатов сдачи норм (по стрель- бе, подтягиванию и т.д.). Выдать для каждого один из трех ва- риантов РЕЗУЛЬТАТ 999 "ОТЛИЧНО" РЕЗУЛЬТАТ 999 "СДАНО" РЕЗУЛЬТАТ 999 НЕ ЗАЧТЕН Ввод завершить, если результат равен 9999. В конце программы выдать ЛУЧШИЙ РЕЗУЛЬТАТ 999 У УЧАСТНИКА НОМЕР 999 5. Ввести в начале программы рекордные минимальную и мак- симальную температуры. Для нескольких дней ввести температуру воздуха и выдать ее с соответствующим прмечанием ДЕНЬ 99 ТЕМПЕРАТУРА 99.9 БОЛЬШЕ МАКСИМАЛЬНОЙ 99.9 ДЕНЬ 99 ТЕМПЕРАТУРА 99.9 МЕНЬШЕ МИНИМАЛЬНОЙ 99.9 Соответствующее рекордное значение поменять. Ввод завер- шить, если температура равна 9999. В конце программы выдать С ПЛЮСОВОЙ ТЕМПЕРАТУРОЙ 99 ДНЕЙ ИЗ 99 6. Вычислить подоходный налог с начисленных зарплат ра- ботников. Ставка подоходного налога равна 12% при зарплате <=5000 рублей, 20% при >5000 и <=10000 , 25 при >10000. Ввод прекратить, если зарплата равна 99999. По окончании ввода выдать порядковый номер и размер наибольшей из введенных зарплат. 7. Задать требуемый объем цистерны. Вводить значения ра- диуса и высоты, выдавать получаемый объем цистерны с примеча- нием: меньше, больше или равно заданному. Ввод прекратить, ес- ли радиус равен 0. В конце программы выдать номер цистерны, у которой наименьший расход материала (площадь листа) и объем больше или равен заданному. 8. Ввести минимальное и максимальное значения температуры. По каждому замеру ввести фактическое значение температуры боль- ного и выдать ТЕМПЕРАТУРА В ПРЕДЕЛАХ НОРМЫ или ТЕМПЕРАТУРА МЕНЬШЕ НОРМЫ или ТЕМПЕРАТУРАР БОЛЬШЕ НОРМЫ. В конце программы выдать минимальную и максимальную температуру с указанием номе- ров замеров. 9. Ввести для нескольких автобусов время отправления и время прибытия. По каждому автобусу выдать АВТОБУС 999 ОТПРАВЛЕНИЕ 99:99 ПРИБЫТИЕ 99:99 ВРЕМЯ В ПУТИ 999:99 Ввод завершить, если время отправления равно 9999. В конце программы выдать самой длинный рейс. 10. Ввести часовую ставку. По каждому члену бригады ввести количество отработанных часов и зарплату. Показать больше, ра- вен или меньше часовой ставки заработок рабочего за час. Приз- нак конца ввода данных - зарплата равна 0. В конце программы показать для работника, получившего наибольшую зарплату, его номер, зарплату и долю (в процентах) к суммарной зарплате всей бригады. 11. Ввести рекордное значение надоя на одну корову. По каждому хозяйству ввести количество коров и суммарный надой, выдать больше, меньше или равен надой на одну корову рекордно- му. Значение рекорда не изменять. В конце программы выдать МАКСИМАЛЬНЫЙ НАДОЙ НА ОДНУ КОРОВУ 99999 ЛИТРОВ В ХОЗЯЙСТВЕ НОМЕР 999 12. Ввести данные участников соревнований по бегу. По каж- дому участнику выдать СТАЛ ЛИДЕРОМ или ПОВТОРИЛ РЕЗУЛЬТАТ ЛИДЕ- РА или РЕЗУЛЬТАТ ХУЖЕ ЧЕМ У ЛИДЕРА. В конце программы выдать тройку призеров с указанием их номеров и результатов. 13. Ввести минимальное и максимальное значения размера де- тали по чертежу. По каждой изготовленной детали ввести факти- ческое значение размера и выдать РАЗМЕР В ПРЕДЕЛАХ ДОПУСКА или РАЗМЕР МЕНЬШЕ ДОПУСТИМОГО или РАЗМЕР БОЛЬШЕ ДОПУСТИМОГО. В конце программы выдать процент брака.