![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Лабораторная работа № 2. Цель работы: освоить алгоритмическую структуру ветвление, а также работу команды ветвления.
Тема: ОРГАНИЗАЦИЯ ВЕТВЛЕНИ Я Цель работы: освоить алгоритмическую структуру ветвление, а также работу команды ветвления. Образец решения задач. Задача № 1. Напишите программу, анализирующую данные сейсмографа, который выводит сообщение «Опасность землетрясения большой разрушительной силы», если данные превысили 5 баллов по шкале Рихтера. Постановка задачи Для решения данной задачи применим алгоритмическую структуру ветвления, можно использовать как полную форму, так и сокращенную форму. Необходимо учитывать, что при использовании сокращенной формы ветвления в данной задаче, в случае, если количество баллов будет < = 5 баллов по шкале Рихтера, то никакого ответа выдаваться не будет. Поэтому лучше использовать полную структуру ветвления. Входные данные. Количество баллов по шкале Рихтера – ball (тип – дробный). Выходные данные. Результатом будет сообщение (строка), требуемое условием задачи. Алгоритм. · Ввести входные данные. · Проанализировать входные данные. · Вывести соответствующее сообщение. Примечания: Команду ветвления рекомендуется оформлять по образцу, приведенному в примере. Условие записывается в отдельной строке, а вариант «else» располагается с той же позиции, что и зарезервированное слово «if». Это правило позволить легко понять, какой «else» соответствует какому «if». Текст программы. Var ball: real; Begin WriteLn(’Введите количество баллов по шкале Рихтера’); // вывод строки текста на экран ReadLn(ball); // ввод значения переменной ball if ball> 5 then // опасность высока WriteLn(’Опасность землетрясения большой разрушительной силы’) else // опасность не высока WriteLn(’Количество баллов не превышает пяти’) end.
Задача № 2. Вычислить Х для целочисленных данных a и b. Постановка задачи Решение данной задачи предполагает использование алгоритмической структуры ветвления. Для нахождения значения X необходимо проанализировать значения переменных a и b с помощью команды ветвления. В зависимости от того, как эти данные соотносятся – X подсчитывается по той или иной формуле. Входные данные. Неизвестные переменные в выражении – a, b (дробный тип). Выходные данные. Результат вычисления значения выражения – X (дробный тип). Алгоритм. · Ввести входные данные. · Проанализировать входные данные: если a> b тогда // это вариант 1 x= sqr(a)*b+1 иначе // это не вариант 1 если a< b тогда // это вариант 2 x=(a-5)/12 иначе // это вариант 3 x= a/8; · Вывести результат на печать.
Текст программы. Var a, b: real; x: real; Begin WriteLn(’Введите значения а и b’); // вывод сообщения пользователю ReadLn(a, b); // ввод 2-х значений с клавиатуры if a> b then // вариант 1 x: =sqr(a)*b+1 else // вариант 2 или 3 if a< b then // вариант 2 x: =(a-5)/12 else // вариант 3 x: =a/8; writeln(’X= ’, X) // вывод строки ’X=’ и значения переменной X end.
Задача № 3. В компьютер вводится информация: · количество знаков в рекламе и стоимость одного знака; · на какой странице в газете будет печататься (если на первой или четвертой, то предоставляется скидка 50 %, если на 2 или 3, то скидок нет); · количество публикаций (если 2 публикации, то скидка 5%, если 3 публикации, то скидка 10%, если 4 публикации, то скидка 20%, если > 4 публикации, то скидка 25%). Необходимо определить стоимость рекламы с учетом всех скидок. Постановка задачи Для подсчета стоимости рекламы необходимо умножить количество знаков на стоимость одного знака, и этого было бы достаточно, если бы условие задачи не предусматривало различные скидки. В этой связи воспользуемся алгоритмической структурой ветвления для учета всех скидок. Входные данные. · < количество знаков> в рекламе – kol_zn (целое число); · < стоимость знака> – stoim_zn (дробное значение). · < номер страницы>, на которой будет печататься реклама – num_str (целое); · < количество публикаций> – kol_pbl (целочисленное значение);
Выходные данные. < стоимость рекламы> – stoim_rk (дробное). Алгоритм. · Ввести входные данные. · Подсчитать стоимость рекламы по формуле: < стоимость рекламы> = < стоимость знака> *< количество знаков>. · Подсчитать стоимость рекламы с учетом всех скидок: // учитываем скидку за номер страницы если < первая или четвертая страница> тогда // скидка 50 % < стоимость рекламы> = < стоимость рекламы> /2; // учитываем скидки за количество публикаций если < две публикации> тогда // скидка 5% < стоимость рекламы> =< стоимость рекламы> -< стоимость рекламы> *0.05 Иначе если < три публикации> тогда // скидка 10% < стоимость рекламы> =< стоимость рекламы> -< стоимость рекламы> *0.1 Иначе если < четыре публикации> тогда // скидка 20% < стоимость рекламы> =< стоимость рекламы> -< стоимость рекламы> *0.2 иначе // скидка 25% < стоимость рекламы> =< стоимость рекламы> -< стоимость рекламы> *0.25 · Вывести результат на печать. Примечания: Данные, используемые в программе, могут иметь постоянный характер, т.е. они не изменяются после запуска программы. Например, в указанной задаче стоимость знака, очевидно, будет одним и тем же значением при каждом запуске. Рекомендуется все постоянные значения, кроме 0 и 1, оформлять в виде констант. Использование этого правила облегчит в дальнейшем внесение изменений в программу при необходимости. Текст программы. Const stoim_zn=20.50; {стоимость одного знака} Var kol_zn, num_str, kol_pbl: integer; stoim_zn, stoim_rk: real; Begin WriteLn(’Введите количество знаков вашей рекламы’); ReadLn(kol_zn); stoim_rk: = stoim_zn*kol_zn; {стоимость рекламы} WriteLn(’Введите номер страницы, на которой будет размещаться ваша реклама (1-4) ’); ReadLn(num_str); if (num_str=1) or (num_str=4) then // скидка 50% stoim_rk= stoim_rk/2; WriteLn(’Введите количество публикаций вашей рекламы’); ReadLn(kol_pbl); if kol_pbl=2 then // скидка 5% stoim_rk: =stoim_rk-stoim_rk*0.05 Else if kol_pbl=3 then // скидка 10% stoim_rk: =stoim_rk-stoim_rk*0.1 Else if kol_pbl=4 then // скидка 20% stoim_rk: =stoim_rk-stoim_rk*0.2 else // скидка 25% stoim_rk: =stoim_rk-stoim_rk*0.25; WriteLn(’Стоимость вашей рекламы= ’, stoim_rk) end.
Примечание: · Учет скидок за количество публикаций можно выполнить и в другом, более читаемом, виде: if kol_pbl=2 then // скидка 5% stoim_rk: =stoim_rk-stoim_rk*0.05; // или даже как – stoim_rk: =stoim_rk *0.95; if kol_pbl=3 then // скидка 10% stoim_rk: =stoim_rk-stoim_rk*0.1; // аналогично – stoim_rk: =stoim_rk *0.9; if kol_pbl=4 then // скидка 20% stoim_rk: =stoim_rk-stoim_rk*0.2; // аналогично – stoim_rk: =stoim_rk *0.8; if kol_pbl> 4 // скидка 25% stoim_rk: =stoim_rk-stoim_rk*0.25; // аналогично – stoim_rk: =stoim_rk *0.75; · Размеры скидок являются постоянной величиной, следовательно, рекомендуется использование в программе констант (оформить самостоятельно).
Задания для самостоятельного решения. Вариант 1. 1. Напишите программу, анализирующую данные пожарного датчика в помещении, которая выводит сообщение «Пожароопасная ситуация», если температура в комнате превысила 600. 2. Вычислить Х для целочисленных данных a и b. 3. При выплате зарплаты из нее вычитается подоходный налог следующим образом: с зарплаты менее 120 р. подоходный налог не взимается, c зарплаты > 10000 – 20%, с остальных - 12%. Составьте программу, с помощью которой по окладу вычислялся бы подоходный налог и сумма денег к выплате. Вариант 2. 1. Напишите программу, определяющую таможенную пошлину (30% от стоимости товара) на ввозимый в страну товар, если стоимость товара превышает 1000 $. 2. Вычислить Х для целочисленных данных a и b. 3. Составьте программу, реализующую эпизод применения компьютера в книжном магазине. Компьютер запрашивает стоимость книг и сумму денег, внесенную покупателем. Если сдачи не требуется, печатает на экране «Спасибо». Если денег внесено больше, то печатает «Возьмите сдачу» и указывает сумму сдачи. Если денег недостаточно, то печатает об этом сообщение и указывает размер недостающей суммы. Вариант 3. 1. Составьте программу, проверяющую, является ли введенное число четным или нечетным. 2. Вычислить Х для целочисленных данных a и b. 3. Лицензионный сбор взимается в следующих размерах к минимальной месячной оплате труда в зависимости от действия лицензии: до 1 года – 30%, от 1 до 2 лет – 40%, от 2 до 3 – 50%, от 3 до 4 лет – 60%, от 4 до 5 – 70%. В случае утери лицензии сбор 20% от первоначального сбора. Составьте программу определения лицензионного сбора. Вариант 4. 1. Напишите программу, анализирующую данные датчика, который измеряет уровень загрязнения воды и выводит сообщение «Уровень загрязнения превышает норматив», если норма составляет X у.е. 2. Вычислить Х для целочисленных данных a и b. 3. Для определения рентабельности автобусного маршрута вычисляют разницу между сданными деньгами за проезд и затратами на обеспечение маршрута (зарплата + бензин + ремонт). Составьте программу определения самого рентабельного из трех маршрутов в городе. Вариант 5. 1. В компьютер поступила информации о доходе за истекший год двух рынков города. Определите “лидера’, т.е. рынок с наибольшим доходом. 2. Вычислить Х для целочисленных данных a и b. 3. При начислении больничного листа учитывается непрерывный трудовой стаж: до 5 лет – 60%, от 5 до 8 лет – 80%, от 8 и дальше – 100% последнего оклада. Составьте программу начисления больничного листа служащему. Вариант 6. 1. Напишите программу, которая по паролю определят доступность сотрудника к секретной информации в базе данных (есть доступ/нет доступа). 2. Вычислить Х для целочисленных данных a и b. 3. Составьте программу, которая для числа K (от 1 до 99), введенного вами, напечатает фразу «Мне K лет», где K – введенное число, при этом в нужных случаях слово «лет» заменяя на «год» или «года». Например, при K=70 «Мне 70 лет», при K=15 «Мне 15 лет», при K=23 «Мне 23 года», при K=31 «Мне 31 год». Вариант 7. 1. Напишите программу, которая по возрасту человека, введенному с клавиатуры, определяет является ли человек пенсионером или нет. 2. Вычислить Х для целочисленных данных a и b. 3. Даны два действительных положительных числа. Арифметические действия пронумерованы (1-сложение, 2-вычитание, 3- умножение, 4 –деление). Составить программу, которая по введенному номеру выполняет то или иное действие над числами. Вариант 8. 1. Напишите программу, которая по возрасту и полу человека, определяет является ли он военнообязанным (мужчина – военнообязанный; женщина - невоеннообязанная). 2. Вычислить Х для целочисленных данных a и b. 3. В продаже имеются компактные компьютеры марки: TOSHIBA $500; SHARP $900; DELL $1350. Оптовым покупателям (> 10) – скидка 17%. Составьте программу определения стоимости покупки компьютеров в $ и в рублях по курсу. Вариант 9. 1. В компьютер поступила информации о доходе за истекший год двух рынков города. Определите рынок с наименьшим доходом. 2. Вычислить Х для целочисленных данных a и b. 3. Составьте программу, которая по введенному вами K – числу грибов печатает фразу «Мы нашли в лесу K грибов», причем согласовывает окончание слова «гриб» с числом K. Количество грибов может быть любым целым числом: 1, 3, 34, 127 и т.д. Окончание фразы определяется значением последней цифры. Вариант 10. 1. Напишите программу, которая по возрасту человека, введенному с клавиатуры, определяет является ли человек долгожителем или нет (более 90 лет - долгожитель). 2. Вычислить Х для целочисленных данных a и b. 3. В ЭВМ поступают результаты соревнований по плаванию для 3-х спортсменов. Составьте программу, которая выбирает лучший результат и выводит его на экран с сообщением, что это результат победителя заплыва. Контрольные вопросы: 1. В каких случаях используется вложенный оператор ветвления? 2. Что представляет собой составное условие? 3. Когда используется составной оператор? 4. В чем заключается работа оператора ветвления? 5. Как записывается вложенный оператор ветвления? 6. Сколько вложений можно делать в команде ветвления? 7. Каков принцип работы структуры ветвления? Запись на Паскале. 8. В каких случаях используется полная структура ветвления, в каких сокращенная? 9. Найдите ошибки в следующем фрагменте программы: if 1< x< 2 then x: x+1; y: =0; Else x: =0; y: =y+1; 10.Найдите ошибки в следующем фрагменте программы: if 1< x and x< 2 then begin x: x+1; y: =0 end;
|