в каком процессе принимают участие лейкоциты | буферная емкость белковой буферной системы крови больше | остеоид остеома большеберцовой кости | олигофренопедагогика и психология | проблема монти холла | иммунитет первичный и вторичный | барабанная перепонка втянутая | скелет осетровых рыб | пузырно мочеточниковый рефлюкс классификация | экскреторная пиелография это | 9 вакцина культура ослабленных микробов | постановка инсулина шприцом ручкой алгоритм | моча удельный вес 1020 | антацидные средства назначают | во время фазы пд деполяризация происходит | нарушение мышления по содержанию | диф диагностика экзантемы у детей | у человека сводчатая стопа | курсовая токсокароз кошек | метастазирование рака щитовидной железы

Главная | Информатика и информационно-коммуникационные технологии | Планирование уроков и материалы к урокам | 8 классы | Планирование уроков на учебный год | Основы алгоритмизации


Урок 11
Основы алгоритмизации












Алгоритмы


Изучив эту тему, вы узнаете:

- назначение алгоритма и его основные свойства;
- формы представления алгоритма;
- типовые алгоритмические конструкции и виды алгоритмов;
- разновидности циклических алгоритмов и их особенности;
- назначение вспомогательных алгоритмов;
- основные стадии создания алгоритма.

12.4. Линейный алгоритм


В основе линейных алгоритмов лежит структура «последовательность». Покажем это на примерах.

Пример 12.6

В своей книге «Арифметика» Леонтий Филиппович Магницкий привел следующий способ отгадывания задуманного двузначного числа: «Если кто задумает двузначное число, то ты скажи ему, чтобы он увеличил число десятков задуманного числа в 2 раза, к произведению прибавил бы 5 единиц, полученную сумму увеличил в 5 раз и к новому произведению прибавил сумму 10 единиц и числа единиц задуманного числа, а результат произведенных действий сообщил бы тебе. Если ты из указанного тебе результата вычтешь 35, то узнаешь задуманное число».

Представим предлагаемые JI. Ф. Магницким действия в виде алгоритма в словесной форме. В предлагаемом процессе должны участвовать два человека: загадывающий число и отгадывающий его. Поэтому алгоритмов тоже будет два.

Алгоритм для загадывающего число

image


1. Задумайте двузначное число.
2. Умножьте число десятков на 2.
3. К полученному произведению прибавьте 5.
4. Полученную сумму умножьте на 5.
5. К полученному произведению прибавьте 10.
6. К полученной сумме добавьте количество единиц задуманного числа.
7. Сообщите полученное число отгадывающему. Конец алгоритма

Алгоритм для отгадывающего число


1. Отнимите от сообщенного числа 35.
2. Сообщите результат. Конец алгоритма

В этих двух алгоритмах действия выполняются в том порядке, в котором записаны.

Пример 12.7

Требуется найти вес любого продукта, который должен быть закуплен для туристического похода.

Для исходных данных алгоритма будем использовать следующие обозначения:
п — норма расхода продукта на человека в сутки;
k — количество участников похода;
d — количество дней.

Результат работы алгоритма (рассчитанный вес продукта) будет занесен в переменную m (рисунок 12.6).

image

Рис. 12.6. Алгоритм решения задачи «Вес продукта» в двух формах представления: в виде блок-схемы и в виде программы на школьном алгоритмическом языке

Приведенные ранее в п. 12.3 алгоритмы разведения костра, приготовления каши, измерения расстояния до предмета являются линейными или последовательными.

image    Линейный алгоритм — алгоритм, в котором действия выполняются последовательно одно за другим.

12.5. Разветвляющийся алгоритм


image

Вспомним сюжет из русской сказки. Царевич останавливается у развилки дороги и видит камень с надписью: «Пойдешь направо — коня потеряешь, налево — сам пропадешь...»

Подобная ситуация, заставляющая нас принимать решения или делать выводы в зависимости от некоторого условия, постоянно встречается в повседневной жизни. Это отражается и в народных приметах, поговорках и пословицах.
- Если закат красный, то жди ветреной погоды.
- Нет дыма без огня (если есть дым, то ищи источник возгорания).
- Кончил дело — гуляй смело (если работа закончена, то можно отдыхать).
- Если вы нашли в лесу муравейник, то его местоположение относительно дерева указывает на юг.

Здесь условиями, позволяющими делать выводы или влияющими на принятие решений, являются слова, расположенные между «если» и «то»:
- в первом примере — красный закат;
- во втором примере — дым;
- в третьем примере — окончание работы;
- в четвертом примере — муравейник.

Условие может принимать значение «истина», когда оно выполнено, или «ложь», когда оно не выполнено. От значения условия зависит наше дальнейшее поведение. Например, в предложении «Если закат красный, то 'жди ветреной погоды» условие «закат красный» может быть или истинным, или ложным. Если условие истинно, то следует ждать ветреной погоды, иначе (если условие ложно) ничего о погоде сказать нельзя.

В одних случаях анализ ситуации и сам выбор не вызывают затруднений, а в других сделать это очень трудно. Приходится продумывать каждый возможный вариант и последствия принимаемого решения. Шахматист, перед тем как сделать очередной ход, анализирует позицию на несколько ходов вперед. Компьютерные игры также построены на анализе ситуации и выборе действий.

Рассмотрим примеры алгоритмов, содержащих анализ условия.

Пример 12.8

Существует неписанное правило — собранные грибы должен проверить человек, разбирающийся в грибах.

Алгоритм проверки можно записать так:

Если гриб съедобный, то положить его в котелок для варки, иначе — выбросить в костер.

В приведенной записи в зависимости от значения условия выполняется либо действие, указанное после слова «то» — положить гриб в котелок, либо другое действие, указанное после слова «иначе» — выбросить в костер. На рисунке 12.7 представлен фрагмент блок-схемы алгоритма сортировки грибов для варки супа по признаку съедобный-несъедобный.

image

Рис. 12.7. Алгоритм проверки грибов, в котором использована полная форма ветвления

Пример 12.9

Вы идете в гости и вам необходимо перевязать коробку с подарком красивой лентой, длина которой d. Но хватит ли этой ленты?

Представим решение этой задачи на школьном алгоритмическом языке. Исходными данными для решения этой задачи являются размеры коробки и длина ленточки. Примем для них следующие обозначения: а, b, с — соответственно длина, ширина и высота коробки; d — длина ленточки.

алг Подарок

нач вещ a,b,c,d
вывод "Введите размеры коробки" ввод а,b,с
вывод "Введите размеры ленты" ввод d
если (a+b+2*c)*2 <= d то
вывод "Ленты хватит" иначе
вывод "Ленты не хватит" все кон

image

В примерах 12.8 и 12.9 при описании алгоритмов в виде блок- схемы и программы на школьном алгоритмическом языке использовалась конструкция «ветвление».

Различают полную и неполную форму ветвления.

При полной форме ветвления действия выполняются в обоих случаях: и при истинности, и при ложности условия. Вспомните кота из сказки А. С. Пушкина: «идет направо — песнь заводит, налево — сказку говорит ». В рассмотренных выше примерах использовалась полная форма ветвления, которой соответствует выражение
если <условие>, то <действие 1>9 иначе <действие 2>.

Неполной форме ветвления соответствует выражение
если <условие>9 то <действия>

Неполная форма предполагает отсутствие действий в случае невыполнения условия. Например: среднесуточная температура воздуха ниже +8 °С, приступить к протапливанию помещений.

На рисунке 12.8 представлен фрагмент блок-схемы алгоритма, описывающего поведение участников туристского похода, покидающих стоянку: если костер горит, то необходимо залить его водой.

image

Рис. 12.8. Алгоритм тушения костра, в котором используется неполная форма ветвления

Пример 12.10

Известно, что в аэропорту существуют ограничения на бесплатный провоз багажа. Если вес багажа превышает норму, то за каждый килограмм сверх нормы необходимо доплачивать. Исходными данными для решения задачи являются: v — вес багажа; vn — разрешенная норма провоза багажа; st — стоимость килограмма сверх нормы. Результат будем записывать в переменную s — сумму выплат сверх нормы.

Алгоритм «Доплата за багаж» представим на школьном алгоритмическом языке.

алг Доплата за багаж

нач вещ v, vn, st, s
вывод "введите вес багажа, норму, стоимость кг"
ввод v, vn, st
если v>vn
то s:=(v-vn)*st
вывод "Доплата составляет", s
все
кон

Во всех приведенных алгоритмах анализ условия приводит к выполнению тех или иных действий. Если представить алгоритм в виде дороги, ведущей к достижению поставленной цели, то условный блок «если..., то..., иначе...» является развилкой на этой дороге.

image

На приведенных выше блок- схемах хорошо видны подобные развилки. Они создаются при помощи структуры ветвления, имеющей полную и неполную форму. Подобные алгоритмы называются разветвляющимися.

image    Разветвляющийся алгоритм — алгоритм, содержащий структуру ветвления.

12.6. Циклический алгоритм


Общее представление

image

Многие процессы в окружающем мире основаны на многократном повторении одной и той же последовательности действий.

Каждый год наступают весна, лето, осень и зима. Жизнь растений в течение года проходит одни и те же циклы. Подсчитывая число полных поворотов минутной или часовой стрелки, человек измеряет время.

Алгоритмы, которые содержат описания повторяющихся действий, принято называть циклическими.

Циклические алгоритмы могут содержать разные типы циклов. Классификация типов циклов представлена на рисунке 12.9 и подробно рассмотрена далее.

image    Циклический алгоритм — алгоритм, содержащий типовую конструкцию «цикл».

image    Тело цикла — описание действий, повторяющихся в цикле.

image

Рис. 12.9. Типы циклов

Цикл с известным числом повторений

Цикл с известным числом повторений часто называют «циклом ДЛЯ». Рассмотрим примеры циклических алгоритмов с известным числом повторений.

Пример 12.11

В различных журналах приводятся упражнения, которые необходимо повторять заданное число раз. Рассмотрим пример упражнения для глаз. Особенно это полезно тем, кто долго сидит за компьютером. Подобные алгоритмы чаще всего представляются в словесной или графической форме.

Алгоритм «Упражнение для глаз»


1. Возьмите карандаш.
2. Установите его в исходное положение у кончика носа.
3. Повторите 10 раз, следя за движением карандаша:
a. Переместите карандаш на расстояние вытянутой руки;
b. Верните карандаш в исходное положение.
4. Положите карандаш. Конец алгоритма

В этом примере заранее известно число повторений. Цикл закончится, когда действия пунктов а и b повторятся 10 раз. Действия а и Ь, повторяющиеся в цикле, определяют тело цикла.

Пример 12.12

Требуется подвести итоги контрольной работы.

Исходными данными для этой задачи являются:
b — балл теущего ученика;
n — количество учеников.

Расчетные данные:
s — сумма баллов;
sr — средний балл.

Решение этой задачи представим на школьном алгоритмическом языке в таблице 12.3.

Таблица 12.3. Алгоритм «Итоги» на школьном алгоритмическом языке

image

Здесь нц, кц — служебные слова, обозначающие соответстенно начало и конец цикла.

В этом примере повторяются следующие операции:
♦ ввод оценки каждого ученика;
♦ добавление ее к общей сумме.

Эти операции составляют тело цикла. Число повторений в цикле равно количеству учащихся в классе.

Цикл с постусловием

Не всякую циклическую задачу можно решить с помощью цикла с известным числом повторений. В некоторых задачах число повторений заранее неизвестно. Для организации циклической последовательности действий и выхода из нее к другому фрагменту алгоритма используется условие, которое ставится в конце тела цикла.

Цикл с неизвестным числом повторений, в котором выход из цикла осуществляется при выполнении условия, принято называть «циклом с постусловием» или «циклом ПРИ».

Рассмотрим алгоритмы решения циклических задач с неизвестным числом повторений.

Пример 12.13

После соревнований по бегу рекомендуется измерить пульс. Измерение пульса можно описать следующим алгоритмом.

Алгоритм «Пульс»


1. Удобно положите левую руку ладонью вверх.
2. Два пальца правой руки положите на запястье левой руки.
3. Заметьте положение секундной стрелки.
4. Сосчитайте очередной удар.
5. Посмотрите на часы.
6. Если секундная стрелка прошла полный круг, то закончите действия, иначе перейдите к п. 4.

Конец алгоритма

В этом примере действия закончатся, когда секундная стрелка пройдет полный круг, то есть условие «Стрелка прошла полный круг» будет выполнено, в противном случае действия будут продолжаться. На рисунке 12.10 приведена блок-схема этого алгоритма. На блок-схеме видно, что проверка условия стоит в конце цикла.

image

Рис. 12.10. Блок-схема алгоритма «Пульс»

Пример 12.14

Требуется рассчитать время работы батарейки в часах с кукушкой, если известно, что заряда хватает примерно на 1000 звуковых сигналов «ку-ку». Однократный звуковой сигнал звучит, когда минутная стрелка показывает 30 минут. Начало каждого часа сопровождается повторением сигнала столько раз, сколько показывает часовая стрелка (от 1 до 12).

Расчетными данными для этой задачи являются:
t — обозначение текущего часа;
к — количество звуковых сигналов.

Алгоритм «Кукушка» представим на школьном алгоритмическом языке в таблице 12.4.

В этом алгоритме повторяются следующие действия:
♦ определение значения текущего часа;
♦ определение количества звуковых сигналов.

Эти действия составляют тело-цикла.

Цикл заканчивается, если количество поданных звуковых сигналов превысило 1000, что является признаком выработки ресурса батарейки.

Таблица 12.4. Алгоритм «Кукушка» на школьном алгоритмическом языке

image

Из рассмотренных примеров 12.13 и 12.14 видно, что цикл с постусловием имеет следующие особенности:
♦ проверка условия осуществляется в конце цикла, поэтому тело цикла выполняется хотя бы один раз;
♦ цикл заканчивается по выполнению условия.

Цикл с предусловием

Рассмотрим другой тип цикла, в котором проверка условия осуществляется в начале цикла. Для организации циклической последовательности действий и выхода из нее к другому фрагменту алгоритма используется условие, которое ставится в начале тела цикла. Цикл с неизвестным числом повторений, в котором цикл продолжается, пока выполняется условие, принято называть «циклом с предусловием» или «циклом ПОКА».

Пример 12.15

На даче требуется наполнить бочку водой. Действия по наполнению бочки можно описать следующим алгоритмом.

Алгоритм «Бочка»


1. Подойдите к бочке.
2. Если бочка неполная (есть место для воды), то перейдите к п. 3, иначе конец алгоритма.
3. Наберите ведро воды.
4. Вылейте ведро в бочку.
5. Перейдите к п. 2. Конец алгоритма

На блок-схеме (рис. 12.11) видно, что условие проверки стоит в самом начале цикла.

image

Рис. 12.11. Блок-схема алгоритма «Бочка»

Такой цикл получил название цикла с предусловием.

Возможна ситуация, что цикл закончится так и не начавшись, например, если бочка наполнилась из-за прошедшего накануне дождя. В этом цикле при выполнении условия «есть место для воды» действия продолжаются, при невыполнении — заканчиваются.

Пример 12.16

Требуется проверить число на симметричность (примеры симметричных чисел: 12321, 8668).

Исходными данными для этой задачи является введенное число n.

Для промежуточных вычислений будут использоваться переменные:
s — для записи цифр числа п в обратном порядке;
nl — для дублирования введенного числа п.

В алгоритме используются функции:
mod — вычисление остатка от деления на 10;
div — определение целой части числа.

Решение этой задачи представим в виде программы на школьном алгоритмическом языке в таблице 12.5.

Таблица 12.5. Алгоритм «Симметричное число» на школьном алгоритмическом языке

image

В этом алгоритме в цикле получается перевернутое число, которое затем сравнивается с введенным. Если они равны, то введенное число симметрично. Цикл выполняется до тех пор, пока nl при целочисленном делении на 10 не превратится в 0. Если введенное число равно 0, то цикл не выполнится ни разу, но будет выдан ответ «Число симметричное».

Из рассмотренных примеров 12.15 и 12.16 видно, что цикл с предусловием имеет следующие особенности.

- проверка условия осуществляется в начале цикла, поэтому тело цикла может не выполниться ни одного раза;
- цикл заканчивается при невыполнении условия;
- цикл является универсальным, так как с помощью этого цикла можно решить любую циклическую задачу.



Практикум




Линейные алгоритмы


Выполнив задания этой темы, вы научитесь:

- представлять линейный алгоритм в различных формах;
- использовать линейные алгоритмы при решении задач;
- применять переменные для хранения данных; осуществлять ввод-вывод информации.

Как вам уже известно, существуют различные типы алгоритмов и разные формы их представления.

Для представления линейного алгоритма в виде блок-схемы используются блоки ввода-вывода, выполнения действий, вызова вспомогательного алгоритма.

Для представления линейного алгоритма в виде программы используются операторы ввода-вывода, оператор присваивания, оператор вызова вспомогательного алгоритма.

Задание 8.1


Коллекция Эрмитажа содержит более 2 800 ООО единиц хранения. Если у каждого музейного экспоната задержаться всего на 5 минут и проводить в Эрмитаже по 8 часов каждый день, то может не хватить жизни, чтобы ознакомиться со всей коллекцией. Требуется вычислить суммарное время просмотра всей коллекции в минутах, часах, днях, годах, «жизнях», считая, что средняя продолжительность жизни в Роcсии составляет 70 лет.

Словесный алгоритм

Начало алгоритма
1. Введите количество экземпляров коллекции.
2. Рассчитайте время просмотра всех экземпляров:

• в минутах;
• в часах;
• в днях;
• в годах;
• в «жизнях».
3. Выведите результаты расчетов.
Конец алгоритма

image

Алгоритм в виде программы

В табл. 8.1 приведена программа к заданию на школьном алгоритмическом языке Кумир (с пояснениями). В табл. 8.2 приведены тексты программ на языках программирования Паскаль и Visual Basic.

Таблица 8.1. Программа на Кумире с пояснениями (к заданию 8.1)

image

image

Таблица 8.2. Примеры программ на Паскале и Visual Basic (к заданию 8.1)

image

image

Задание 8.2


Требуется рассчитать параметры прямоугольного треугольника с углом 30° по заданному катету, лежащему против угла 30°.

Словесный алгоритм

Начало алгоритма
1. Введите длину катета.
2. Рассчитайте гипотенузу по введенному катету,
исходя из свойств треугольника.
3. Рассчитайте второй катет по теореме Пифагора.
4. Выведите расчеты. Конец алгоритма

image

Алгоритм в виде программы

В табл. 8.3 приведена программа к заданию на школьном алгоритмическом языке Кумир. В табл. 8.4 приведены тексты программ на языках программирования Паскаль и Visual Basic.

Таблица 8.3. Программа на Кумире с пояснениями (к заданию 8.2)

image

Таблица 8.4. Примеры программ на Паскале и Visual Basic (к заданию 8.2)

image

Задание 8.3


На памятнике Пифагору высечен чертеж вписанного в цилиндр шара, так как Пифагор нашел соотношение между их объемами. Современный почитатель гения Пифагора решил создать объемный памятник в честь этого открытия. Городские власти определили статус памятника — скульптура малой формы, и выделили для него небольшую площадь. Требуется рассчитать объем цилиндра и вписанного в него шара по заданной площади основания памятника (цилиндра) и убедиться в правильности выведенного Пифагором соотношения.

Словесный алгоритм

Начало алгоритма
1. Введите значение площади основания цилиндра.
2. Рассчитайте радиус основания цилиндра.
3. Рассчитайте объем цилиндра.
4. Рассчитайте объем шара.
5. Найдите соотношение между объемами цилиндра и шара.
6. Выведите расчеты.
Конец алгоритма

image

Рис. 8.3. К заданию 8.3

Алгоритм в виде программы

В табл. 8.5 приведена программа к заданию на школьном алгоритмическом языке Кумир. В табл. 8.6 приведены тексты программ на языках программирования Паскаль и Visual Basic.

Таблица 8.5. Программа на Кумире с пояснениями (к заданию 8.3)

image

Таблица 8.6. Примеры программ на Паскале и Visual Basic (к заданию 8.3)

image

image

Контрольные вопросы и задания


К заданию 8.1

1. Разработчик алгоритма к заданию 8.1 (рис. 8.1), введя переменную п, хотел придать алгоритму свойство массовости. Какие еще переменные следует ввести, чтобы алгоритм соответствовал этому свойству в полной мере?
2. В приведенном последовательном алгоритме порядок вывода расчетных данных можно изменять. Какие команды в приведенных программах нельзя переставлять? Почему?
3. На блок-схеме представлены два блока вывода информации на экран. В чем их различие?
4. Запишите в тетради имена переменных, которые были использованы в процессе решения задания. Напишите под ними значения переменных, полученные в результате тестирования.
5. Что происходит в результате выполнения блока 3 представленного алгоритма?
6. Добавьте в программу блок вычислений, определяющий, сколько экспонатов в день удастся посмотреть посетителю.

К заданию 8.2

1. Замените в программе формулу расчета катета b = a-j3 и убедитесь, что результат от этого не изменится.
2. Используя готовый каркас блок-схемы, заполните его таким образом, чтобы по новой блок-схеме вычислялись высота и площадь равнобедренной трапеции с углом при основании 45° (рис. 8.5). Задание выполните в тетради.
3. Напишите текст программы на Кумире или другом языке для полученной блок-схемы.
4. Что надо изменить в условии задачи, чтобы расширить границы применимости алгоритма?
5. Из пояснительного рисунка видно, что а > b. Что произойдет, если при вводе а и b это соотношение будет нарушено?

К заданию 8.3

1. При расчетах радиуса и объемов используется константа 3,1415926. Что нужно изменить в программе, чтобы не набирать ее каждый раз заново?
2. В примере программы на языке Кумир тип используемых переменных описан следующим образом: вещ r, s, vshara, veil, k. Что означает эта запись? Почему для переменных выбран такой тип?
3. В формуле вычисления объема шара используется формула V — r3. В примерах программ на разных языках она записана по-разному. Есть ли здесь ошибки? Объясните, что означают разные записи? Придумайте такой вид записи, который будет верен для всех языков.

image

Рис. 8.5. Чертеж для вычисления высоты и площади равнобедренной трапеции

4. Можно ли изменить последовательность операторов расчета?

Разветвляющиеся алгоритмы


Выполнив задания этой темы, вы научитесь:

- использовать различные структуры ветвления;
- использовать простые и сложные условия;
- использовать вложенные ветвления;
- использовать структуру множественного выбора при наличии более чем двух ситуаций;
- тестировать алгоритм в пошаговом режиме для проверки всех его ветвей.

Для представления разветвляющегося алгоритма в виде блок-схемы используются блоки принятия решения. Для представления разветвляющегося алгоритма в виде программы используются условные операторы и операторы выбора (если вариантов выбора больше двух).

Задание 8.4


Требуется разработать алгоритм проверки принадлежности введенного числа данной арифметической прогрессии. Прогрессия задается двумя последовательными членами.

Словесный алгоритм

Начало алгоритма
1. Введите два последовательных члена арифметической прогрессии.
2. Введите произвольное целое число.
3. Найдите разность (d) арифметической прогрессии.
4. Найдите разность между введенным числом и членом арифметической прогрессии.
5. Найдите остаток от деления нацело найденной разности на d.
6. Организуйте проверку остатка:

- если остаток от деления равен 0, выведите сообщение:
«Число принадлежит рассматриваемой арифметической прогрессии»;
- иначе выведите сообщение:
«Число не принадлежит рассматриваемой арифметической прогрессии».
Конец алгоритма

Алгоритм в виде блок-схемы

image

Алгоритм в виде программы

В табл. 8.7 приведена программа к заданию на алгоритмическом языке Кумир. В табл. 8.8 приведены тексты программ на языках программирования Паскаль и Visual Basic.

Таблица 8.7. Программа на Кумире с пояснениями (к заданию 8.4)

image

image

Таблица 8.8. Примеры программ на Паскале и Visual Basic (к заданию 8.4)

image

image

Задание 8.5


Из «Арифметики» таджикского ученого Авиценны (X-XI вв.) известно следующее свойство целых чисел: если число, будучи разделено на 9, дает в остатке 1 или 8, то квадрат этого числа, деленный на 9, даст 1. Требуется подтвердить верность свойства или опровергнуть его.

Словесный алгоритм

Начало алгоритма
1. Введите целое число.
2. Найдите остаток от деления этого числа на 8.
3. Организуйте проверку остатка на равенство 1 или 8:

• если остаток от деления равен 1 или 8, то:

а) найдите квадрат введенного числа;
б) найдите остаток от деления квадрата числа на 9;
в) организуйте проверку остатка от деления:

если остаток равен 1, то выведите сообщение «Свойство верно», иначе выведите сообщение «Свойство не верно»;

• иначе (остаток от деления не равен 1 и остаток от деления не равен 8) выведите сообщение «Остаток от деления < > 1 и Остаток от деления < > 8».
Конец алгоритма

Алгоритм в виде блок-схемы

image

Рис. 8.7. Блок-схема алгоритма (к заданию 8.5)

Алгоритм в виде программы

В табл. 8.9 приведена программа к заданию на алгоритмическом языке Кумир. В табл. 8.10 приведены тексты программ на языках Паскаль и Visual Basic.

Таблица 8.9. Программа на Кумире с пояснениями (к заданию 8.5)

image

image

Таблица 8.10. Примеры программ на Паскале и Visual Basic (к заданию 8.5)

image

image

Задание 8.6


Требуется определить тип треугольника по двум введенным углам. При выполнении задания необходимо учесть ситуации некорректного ввода данных, например: 90, 90 или 120, 80.

Словесный алгоритм

Начало алгоритма
1. Введите два угла треугольника в градусах.
2. Организуйте проверку типа треугольника:

• если сумма двух углов меньше 180°, то вычислите значение третьего угла и рассмотрите три ситуации:

а) если все углы острые, то выведите сообщение «Треугольник остроугольный»;
б) если один из углов равен 90°, то выведите сообщение «Треугольник прямоугольный»;
в) в противном случае выведите сообщение «Треугольник тупоугольный »;

• иначе (если сумма углов больше 180°) выведите сообщение «Некорректный ввод».
Конец алгоритма

Алгоритм в виде блок-схемы

image

Фраза «один из углов равен 90°» в словесном алгоритме понятна человеку. Для компьютера ее следует детализировать, рассмотрев три ситуации (для каждого из углов ul, u2, u3). На алгоритмическом языке эта проверка может выглядеть следующим образом: ((ul = 90) и (и2 о 90) и (иЗ < > 90)) или ((и2 = 90) и (ul о 90) и (u3 < > 90)) или ((иЗ = 90) и (ul < > 90) и (и2 < > 90)).

Чтобы упростить проверку, в алгоритм должен быть введен блок, обеспечивающий условие «сумма углов = 180». После этого достаточно рассмотреть выполнение условия «(ul = 90) или (и2 = 90) или (иЗ = 90)».

Алгоритм в виде программы

В табл. 8.11 приведена программа к заданию на алгоритмическом языке Кумир. В табл. 8.12 приведены тексты программ на языках Паскаль и Visual Basic.

Таблица 8.11. Программа на Кумире с пояснениями (к заданию 8.6)

image

image

Таблица 8.12. Примеры программ на Паскале и Visual Basic (к заданию 8.6)

image

image

Контрольные вопросы и задания


К заданию 8.4

1. Какое сообщение будет получено в результате выполнения алгоритма и программ, если введенное число с будет равно al или а2?
2. Могут ли быть введены различающиеся по знаку или отрицательные числа al и а2?
3. Что надо изменить в блок-схеме и программе, чтобы они работали с тремя последовательными членами геометрической прогрессии (al, а2 — являются членами, с — следует проверить)?
4. Найдите на блок-схеме (см. рис. 8.6) блок ветвления и определите, является ли ветвление полным или нет.

К заданию 8.5

1. Заполните таблицу тестирования для числа 10 (см. табл. 8.9).
2. Почему в 7-й строке табл. 8.9 тестирования (первый тест) ничего нет?
3. Достаточно ли представленных в табл. 8.9 тестов, чтобы проверить все ситуации, которые могут возникнуть при выполнении программ (все ветви алгоритма)?
4. Можно ли объединить оба условия проверки (пп. 5 и 8) в одно сложное условие? Напишите логическое выражение для подобной проверки.
5. Составьте самостоятельно фрагмент блок-схемы алгоритма для приема менеджера на работу по следующим условиям:
• возраст от 30 до 40 лет;
• знание персонального компьютера или стаж работы по специальности не менее 5 лет.

К заданию 8.6

1. Почему при формировании сложного условия (см. табл. 8.11, п. 6) использована логическая связка И, а не ИЛИ?
2. Почему при формировании сложного условия (см. табл. 8.11, п. 8) использована логическая связка ИЛИ, а не И?
3. В алгоритме и программе тупоугольный треугольник определяется по веткам «иначе» (не прямоугольный и не остроугольный). Напишите самостоятельно сложное условие, определяющее, является ли треугольник тупоугольным.
4. Выполните тестирование программы для угла 900.
5. Дополните алгоритм и программу блоком проверки положительных значений углов.

Наверх