Вы - -й посетитель этой странички 

Лабораторные работы по алгоритмизации

Д.П. Береговой

Краснодарский край, станица Каневская

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

Из разговора учителей информатики

Предисловие (для преподавателей)

Предлагаемый комплект лабораторных работ (ЛР) предназначен для изучения простейших технологических приемов построения алгоритмов и выработки основных навыков их реализации на ЭВМ. Стратегической целью этой части курса является формирование у школьников алгоритмического стиля мышления при решении сначала специальных, а впоследствиии общих задач. При подборе заданий лабораторных работ особое внимание уделялось тому, чтобы суть их решения была доступной для понимания. При этом работа должна иллюстрировать тот или иной сугубо технологический способ решения задачи и, соответственно, построения алгоритма.

Каждая работа направлена на освоение одного алгоритмического приема. В соответствии с этим принципом в началах алгоритмизации выделены следующие темы:
— ввод-вывод данных (ЛР № 1);
— разветвляющиеся алгоритмы (ЛР № 2);
— циклические алгоритмы (ЛР № 3);
— алгоритмические модули (ЛР № 4);
— простейшая графика (ЛР № 5);
— элементарная обработка строк символов (ЛР № 6).

Предполагается, что каждая тема осваивается за несколько этапов.

1. Сначала, естественно, изучается теоретический материал.Учащимся объясняются назначение приема, типичные случаиего применения, способы формализации и реализации. Думается, у большинства читателей не возникнет трудностей с источниками информации для подготовки такого сорта урока. Мы же используем учебное пособие [1].Для формализации алгоритмов используется язык блок-схем, который, по мнению автора, является наиболее универсальным и наглядным. Что касается реализации алгоритмов, то, как показала многолетняя практика, выбор языка программирования совершенно не важен, лишь бы он позволял структурировать программу. Поэтому с равным успехом можно пользоваться языками Бейсик, Паскаль или Cи.Собственно, одна из наиболее важных идей, которая должна быть привита учащимся, заключается в том, что основой решения любой задачи является алгоритм (например, в виде его графического выражения — блок-схемы, что, на наш взгляд, предпочтительнее), а его реализация — дело аккуратной техники кодирования с использованием любых доступных средств.

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

3. Третья часть предусматривает самостоятельное решение задач учащимися, но под управлением преподавателя, так как каждая задача требует применения какого-либо технологического нюанса, далеко не всегда очевидного. Как правило, на уроке рассматриваются 1—2 задания. Оставшиеся задания задаются на дом. При этом можно воспользоваться задачами из Приложения 1 * .

4. И, наконец, проводится зачетная работа по изученной теме. Как правило, задание выдается заранее, с расчетом, чтобы отчет был подготовлен учащимися дома. Оценивать работу целесообразно в процессе защиты. То есть после демонстрации результатов работы программы (на подготовленном преподавателем наборе тестовых заданий) учащийся не только представляет отчет (Приложение 3), но и должен ответить на несколько вопросов преподавателя (примерные вопросы даны после каждой работы). Как правило, достаточно 3—5 вопросов. Вопросы выбираются либо по усмотрению преподавателя, либо используется “билетная технология”. Общая оценка, таким образом, отражает как практическую, так и теоретическую подготовку ученика. Отчеты лучше оформлять в отдельной тетради.Нумерация заданий в лабораторных работах сквозная:
первая цифра обозначает номер работы;
вторая — тип работы:1 — демонстрационная,2 — самостоятельная,3 — контрольная;
далее следует литера задачи.
Работы № 5 и № 6 (графика и обработка символов) не содержат контрольной части, так как, по всей видимости, для указанных тем невозможно разработать 20—30 вариантов однотипных и, главное, одноуровневых заданий. Поэтому практическая часть работы оценивается по качеству выполнения самостоятельных заданий и проверке теоретических знаний.

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

Предисловие (для учащихся)

Все вокруг только и говорят о компьютерах, программах истранных людях, которых называют программистами. Хотя, если спросить 100 человек: “Чем занимается программист?” — внятно на этот вопрос ответят не более десяти, а правильно — и того меньше. А между тем, устанавливая на определенное время будильник или составляя свой план действий на ближайшие выходные, мы все становимся программистами. В первом случае мы программируем маленького пластмассово-металлического робота, а во втором — сами себя.Но, оказывается, не так сложно научить программировать и персональный компьютер. Конечно, предлагаемый вам набор лабораторных работ вовсе не предназначен для того, чтобы сделать из вас профессиональных программистов. Это невозможно в рамках средней школы, да и не нужно — школа-то общеобразовательная. Но представление о том, что такое программирование, вы получите. И для этого не нужно быть семи пядей во лбу. Достаточно лишь добросовестности и аккуратности. Каждая работа, которая вам предлагается,состоит из трех частей:
— первая — демонстрационная;
— вторая — самостоятельная;
— третья — контрольная.

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

Лабораторная работа № 1

Организация ввода-вывода данных в алгоритмах

 

Ц е л ь  р а б о т ы . Изучить основные приемы ввода-вывода данных в алгоритмах и технологию организациидиалогового режима работы ЭВМ.

Т е х н и ч е с к о е з а д а н и е 1 . 1 а . Разработать алгоритм организации автоматического ввода строки символов"Hello World!" и вывода этой строки на экран дисплея.

А л г о р и т м 1 . 1 а : Это первый, самый важный для будущего программиста алгоритм. Так сказать, крик новорожденного :-) . Но ничего, кроме ввода и вывода данных, в алгоритме нет, поэтому в нем только два блока: ввод и вывод (не считая начала и конца).

— Для автоматического ввода строки символов используем переменную символьного типа, которой и будет присвоено указанное значение.
— Вывод согласно ТЗ осуществляется на дисплей. Поэтому в алгоритме нужно использовать соответствующий блок-символ, в котором будет указано имя переменной, значение которой выводится на экран.

П р о г р а м м а 1 . 1 а . Для ввода информации в однупеременную используем оператор присваивания. Вначале не забудьте определить переменную как символьную! Для этого используется служебное словоDIM. Объявление переменной выглядит следующим образом:

DIM <идентификатор> AS <тип переменной>

Для символьной переменной, как это имеет место внашем случае, используется служебное слово STRING.

Вывод тоже достаточно прост: блок-символ заменяется на оператор PRINT. Так что первая ваша программа будет выглядеть так, как показано ниже. Кстати, полезно начинать программу с очистки экрана (оператор CLS).

Нельзя заниматься высокоинтеллектуальным трудом (ато, что мы сейчас делаем, без сомнения, является таковым) без предварительной уборки рабочего места. Поздравляю с приобщением к сонму программистов! 

CLS
DIM Message AS STRING
Message =
"Hello World!"
PRINT Message
END

Т е х н и ч е с к о е з а д а н и е   1 . 1 б . Дана группа чисел {—10, 5, 3, 0}. Разработать алгоритм автоматического ввода этой группы чисел в массив. Данные вывести на дисплей: сначала в строку, потом в столбец.

А л г о р и т м 1 . 1 б.   Кроме ввода и вывода данных, взадаче ничего не требуется, так что алгоритм будет состоять из двух операций: автоматического ввода и вывода на дисплей. Особенностью задачи является использование массива.

Поскольку данные в алгоритме должны быть внесеныв массив, он должен быть предварительно определен. Всего нужно ввести четыре числовых значения, соответственно и массив объявляется как числовой, одномерный, размером в 4 элемента. Пусть его имя будет N. Не забудьте, что по умолчанию элементы массива индексируются с 0! Для обозначения автоматического ввода будем использовать стандартный блок-символ, внутри которого запишем имена переменных. Здесь это будут элементы массива.

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

П р о г р а м м а 1 . 1 б. Здесь показаны приемы ввода-вывода данных, которые нужно усвоить, поскольку без этих операций не обходится ни одна программа.

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

Так как все элементы массива являются целыми числами, имеет смысл и массив объявить целочисленным.Тем самым экономится память и автоматически контролируется тип данных. Да и вообще, объявление типа данных — это правило хорошего тона в программировании. В Бейсике для этого используется служебное слово INTEGER или суффикс % у имени массива.

Для автоматического ввода данных в массив можно,конечно, воспользоваться, как и раньше, операцией присвоения. Но для ввода списка в Бейсике (и только в Бейсике) имеется “хитрый” оператор DATA-READ .

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

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

CLS
DIM N(3) AS INTEGER
DATA —10, 5, 3, 0
READ N(0), N(1), N(2), N(3)
PRINT N(0), N(1), N(2), N(3)
PRINT "N(0)="; N(0)
PRINT "N(1)="; N(1)
PRINT "N(2)="; N(2)
PRINT "N(3)="; N(3)
END

 Т е х н и ч е с к о е  з а д а н и е 1 . 1 в . Разработать алгоритм и программу ввода своей фамилии в переменную и вывода ее на экран дисплея в формате:

Моя фамилия: <Фамилия>

А л г о р и т м 1 . 1 в . Здесь также, кроме ввода-вывода данных, ничего нет. Особенностью этой задачи являетсято, что данные вводятся в двух режимах: автоматическом и ручном. Тем самым мы организуем диалоговый режим работы ЭВМ. Она нас спрашивает, а мы ей отвечаем.

По условию задачи нам придется иметь дело с двумя символьными величинами: константой “Моя фамилия” и переменной, в которой будет содержаться конкретная фамилия. Для сообщения введем переменную M, а для ввода фамилии — F.

Так как значение сообщения есть величина неизменяемая, то вводим ее в автоматическом режиме. Фамилия же будет каждый раз изменяться, значение ее заранее неизвестно, так что необходимо организовать ее ручной ввод с клавиатуры. Появляется новый блок-символ, но его легко запомнить. При некотором воображении можно представить, что это вид клавиатуры сбоку. Вывод значений переменных производится все темже оператором PRINT.

П р о г р а м м а 1 . 1 в . В программе используется новый оператор INPUT. Это в переводе на русский означает“ввести”. В данном случае значение переменной с помощью клавиатуры вводится в эту самую переменную. Как мы договорились, сообщение "Моя фамилия" будет находиться в символьной константе. В программе этому соответствует описание

CONST  Message$=  "Моя фамилия: "   

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

CLS
CONST Message$ = " Моя фамилия: "
DIM Family AS STRING
INPUT "Введите фамилию: ", Family
CLS
PRINT Message$; Family
END

Т е х н и ч е с к о е з а д а н и е 1 . 2 а. Постройте алгоритм ввода и вывода на дисплей простейшей адресной книги. Данные должны храниться в двух массивах:
в первом — фамилия и инициалы,
во втором — адрес.
Вывод данных организовать в строку в формате:

   <Фамилия> <Адрес>

Рекомендации. Поскольку задание рассчитано на самостоятельное выполнение, ограничимся несколькими советами.
1. Для начала возьмите адреса нескольких знакомых: 4—5,больше не надо.
2. Помните, что массивы нужно предварительно объявить:они должны быть символьными, одномерными. Если это вас не испугает, можете попытаться организовать более продвинутый вариант, использовав двухмерный массив. В нем будут 4—5 строк (по количеству адресов) и два столбца. В первый столбец записывайте фамилию, во второй — адрес.
3. Ввод организуйте автоматически.
4. Не забудьте синтаксис оператора
PRINT при выводеданных в строку. Здесь лучше всего использовать вывод через запятую, чтобы разделить фамилию и адрес на колонки. Получится что-то вроде таблицы.
5. Сравните свой алгоритм с алгоритмом 1.1б. Внешний вид вашего произведения должен быть точно таким. Поменяется только содержание. То же самое касается и программы.

Т е х н и ч е с к о е з а д а н и е 1 . 2 б .  Разработайте алгоритм расчета длины окружности и площади круга произ-вольного радиуса. Результат вывести на дисплей в формате:

Для радиуса <R> м
Длина окружности
<C> м
Площадь круга
<S> кв. м

Рекомендации. Изюминка задания состоит в том, что, кроме ввода-вывода данных, необходимо еще организовать и расчеты нужных величин. Для тех, кто забыл, напомним:

C окр. = 2pR, S кр. = pR 2 .

1. В расчетах будет фигурировать постоянная — число 

p » 3,14159

Понятно, что ее нужно ввести автоматически. Придумайте ей идентификатор. Рекомендуем использовать имя PI. Объявите эту переменную как константу (см. программу 1.1в).
2. Ключевое слово —
произвольный — должно сразу натолкнуть на мысль, что радиус будет вводиться с клавиатуры в ручном режиме.
3. Структура вашего алгоритма должна быть похожа на алгоритм 1.1в, с той разницей, что между вводом и выводом появится блок расчета
C окр.и S кр . На всякий случай напомним, что в блок-схемах алгоритмов действия обозначаются прямоугольником. Стало быть, все расчетные формулы должны быть записаны в прямоугольниках. В нашем случае в одном прямоугольнике запишутся две формулы.
4. Обратите внимание! При вычислении площади лучше воспользоваться операцией умножения, чем операцией возведения в степень, поскольку операция возведения в степень имеет большую погрешность вычислений.
5. Поэкспериментируйте с числами, символами и знаками препинания, добиваясь красивого оформления результатов расчета. Полезно вернуться к программе 1.1б.

Техническое задание 1.3.  Разработать алгоритм расчета выражения. Вид выражения выбирается из таблицы по номеру своего варианта.

N Выражение N Выражение
1 r = a(b - 4c) 16 r = a + b(-c)
2 r = 3a + bc 17 r = (a + b)c
3 r = -a + 5bc 18 r = 5a + 6bc
4 r = 2ab - 3c 19 r = 3abc
5 r = -6a - 2b + 4c 20 r = -2a + bc
6 r = 5b - 11c 21 r = 3a(b - 2c)
7 r = 3a + 4c 22 r = 2a + 3b + 4c
8 r = 4a - b( -c) 23 r = 6(-a)(b + c)
9 r = 2a + 5b - 3c 24 r = (3a +2b)c
10 r = 7b + 2c 25 r = 7a + 5b - 3c
11 r = - a - b + 3c 26 r = 9a - 5(b + 2c)
12 r = 5a - 4b(-c) 27 r = 3(a + 2b + c)
13 r = 4a + 3b - 2c 28 r = - a - b - c
14 r =  7a  + 2b - c 29 r = 4(a - 2b) + c
15 r =  a - 4b + c 30 r = 6a + b -c

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

Расчет выражения вида R = <вид выражения >.
Значение выражения R при
A =
<значение>
B =
<значение>
C =
<значение>
равно
<результат>
Программа разработана
<Фамилия Имя >

Контрольные вопросы

1. Что такое диалоговый режим работы ЭВМ?
2. Запишите общий вид операции присвоения. Приведите примеры.
3. Какие существуют приемы ввода данных? Чем они различаются?
4. Перечислите основные устройства ввода данных.
5. Изобразите блок-символы различных вариантов ввода данных.
6. Перечислите устройства, на которые возможен вывод данных.
7. Изобразите блок-символы операций вывода данных на различные устройства ЭВМ.
8. В каких случаях используется ручной ввод данных?
9. Что такое оперативный вывод данных?
10. В каких случаях необходимо использовать вывод данных в файл?
11. В каких случаях используется вывод данных на принтер?
12. Что такое дружественный интерфейс?
13. Чем диалоговый режим работы ЭВМ отличается от автоматического?
14. Изобразите общую блок-схему алгоритма, организующего диалоговый режим работы ЭВМ.

Лабораторная работа № 2

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

Ц е л ь р а б о т ы . Изучение простейших приемов использования разветвляющихся алгоритмов при решении задач.

Т е х н и ч е с к о е з а д а н и е 2 . 1 а. Разработать алгоритм расчета выражения

для произвольного значенияx.
Если выражение можно рассчитать, то есть знаменатель не равен 0, вывести на дисплей результат, если нет — вывести сообщение:
 

При x = <введееное значение > R не определено

А л г о р и т м 2 . 1 а . Приведенная задача относится к классу наиболее распространенных — к задаче выбора —и в более общем виде может быть сформулирована так: “В зависимости от некоторого условия надо делать разные действия”.
В нашем случае надо по-разному реагировать в зависимости от того, принадлежит ли данный аргумент области определения функции или нет.Такие задачи решаются только с помощью разветвляющихся алгоритмов. Алгоритм, который мы будем строить сейчас, состоит из трех процедур: ввод исходных данных; преобразование данных нужным образом и вывод результата. Так как в ТЗ сказано, что значение переменной 
xпроизвольное, то, вводить ее нужно в ручном режиме, т.е. с клавиатуры.
Рассматриваемая функция — дробная. У всякой дроби есть знаменатель. Здесь он довольно сложный, и поскольку значение
x произвольное, то невозможно заранее сказать, чему будет равен этот знаменатель. Если же вдруг он окажется равен нулю, то возникнет ошибка Division by zero”, которая вызовет аварийный останов программы . Порядочная программа так работать не должна.

Поэтому, чтобы не утруждать себя решением уравнения третьей степени, просто проверим, чему равен знаменатель, и, если он вдруг окажется нулем, сообщим об этом. Для этого у нас есть такое мощное средство, как разветвляющаяся структура алгоритма. Как уже было сказано, основой разветвления в алгоритме служит условие, то есть логическое высказывание. В нашем случае нужно проверить, является ли истинным утверждение x3 - x2 + 1 = 0 при конкретном значении x . И если оно истинно, то вывести предупреждающее сообщение, в противном случае можно спокойно считать дальше и выводить результат.

Разумеется, проверку истинности утверждения осуществляет сам компьютер.В блок-схеме значение знаменателя присваивается переменной D, которая в дальнейшем и проверяется на равенство нулю. Это удобно для случаев многократной проверки условий.

Программа 2.1а. Для реализации программы используем условный оператор IF — END IF. Сама же программа может быть оформлена, например, следующим образом:

<

CLS
CONST Message$ = " выражение R не определено."
INPUT "Введите x ", x
D = x ^ 3 — x ^ 2 + 1
IF D = 0 THEN
   PRINT "При введенном значении x = ";x; Message$ < BR >  ELSE R = (x ^ 2 + x — 1) / D
   PRINT "При x = "; x; " R ="; R
  END IF
END

Слово “например” написано не случайно, так как конкретный вид программы во многом зависит от того, насколько хорошо программист (то есть вы!) владеет средствами языка. В данном случае, как уже сказано, используется следующая структура условного оператора :

IF<условие> THEN <положительная” ветвь алгоритма >
ELSE  <“отрицательная” ветвь алгоритма>
END IF

— что в переводе на русский язык обозначает:

ЕСЛИ<условие выполняется> ТО
<идем по “положительной” ветви алгоритма>
ИНАЧЕ<идем по “отрицательной” ветви алгоритма>
КОНЕЦ ЕСЛИ

Видно, что ветви алгоритма заключены в так называемыеоператорные скобки IF — END IF. При этом каждая ветвь может содержать любое количество действий (в том числе и условные операторы). Будьте внимательны и не путайте ветви алгоритма: после слова THEN — “положительная” ветвь; после слова ELSE — “отрицательная”.

Т е х н и ч е с к о е  з а д а н и е 2 . 1 б . Разработать алгоритм, который бы по введенному числу из диапазона [1…7] выводил на дисплей название соответствующего дня недели.

А л г о р и т м 2 . 1 б . Предлагаемая задача относится к категории так называемого множественного выбора и, так же как и предыдущая, является достаточно типичной. В более общем виде задача может звучать так: “Имеется некий признак чего-то. Определить, к какому классу это что-то относится”.

В данном случае признаком будет введенный номер, а классом — дни недели. Ниже приведена блок-cхема алгоритма решения задачи. Несмотря на внешнюю громоздкость, по своей сути он ничем не отличается от алгоритма  2.1а — просто больше условий. Обратите внимание, что если введенное пользователем число не попадает в интервал от 1 до 7, то на экран выводится сообщение об ошибке; это —правило хорошего тона: сообщить пользователю о его вольной или невольной ошибке.

П р о г р а м м а 2 . 1 б . В языке Бейсик есть очень удобный оператор, позволяющий реализовать множественный выбор. Оператор этот составной, то есть, так же как и IF — END IF, образован операторными скобками SELECT CASE — END SELECT. Формат оператора приведен ниже:

SELECT CASE <идентификатор>
  
CASE <значение 1><блок операторов >
  
CASE <значение 2><блок операторов >
   [CASE ELSE
<блок операторов > ]
END SELECT

В операторе проверяется значение переменной на соответствие поставленному условию. Здесь <идентификатор> — это имя той самой переменной, значение которой проверяется в CASE. Работа оператора достаточно прозрачна и показана в программе: 

CLS
DIM NumberOfDay AS INTEGER
INPUT "Введите номер дня недели ", NumberOfDay
SELECT CASE NumberOfDay
   CASE 1 PRINT "Это Понедельник"
   CASE 2 PRINT "Это Вторник"
   CASE 3 PRINT "Это Среда"
   CASE 4 PRINT "Это Четверг"
   CASE 5 PRINT "Это Пятница"
   CASE 6 PRINT "Это Суббота"
   CASE 7 PRINT "Это Воскресенье"
   CASE ELSE PRINT "Дня с таким номером в неделе не бывает…"
END SELECT
END

T е х н и ч е с к о е з а д а н и е 2 . 1 в. Задаются три произвольных числа. Построить алгоритм, который проверяет, могут ли эти числа составить длины сторон треугольника.

А л г о р и т м 2 . 1 в. Это еще одна типичная задача на проверку условия. Для построения алгоритма нужно вспомнить, что три отрезка могут быть сторонами треугольника, если сумма длин любых двух больше длины третьего отрезка. То есть для чисел a, b и c нужно проверять следующие условия: a + b > cb + c > a и a + c > b.

Программа 2.1в. Для формулировки условия перехода необходимо сконструировать логическую функцию, объединяющую в единое целое три простых высказывания. Простыми логическими высказываниями,входящими в нее, будут утверждения о том, что сумма любых двух сторон больше третьей. При этом для построения треугольника необходимо, чтобы все три высказывания были истинными одновременно. Этого можно достичь, объединив их союзом “и”. В программе это делается следующим образом:

CLS
INPUT "Введите значения сторон ", a, b, c
  IF a + b > c AND b + c > a AND a + c > b THEN
    PRINT "Треугольник"
  ELSE
    PRINT "Не треугольник"
  END IF
END

Т е х н и ч е с к о е   з а д а н и е  2 . 2 а. Разработать алгоритм и программу, определяющие четность произвольно введенного целого числа.

Рекомендации.

Алгоритм будет содержать всего три операции.
· Ввод произвольного числа. Напоминаем: ключевое словопроизвольный означает ввод данных в ручном режиме, то есть с клавиатуры.
· Анализ четности введенного числа. Для этого есть много способов, один из них заключается в том, чтобы определить знак выражения (—1) n , где n — введенное число.
Если оно четное, то выражение будет положительным, а если число нечетно, то и выражение будет меньше нуля. Получив значение выражения, остается только сравнить его с нулем.
· Вывод сообщения “Четное!” или “Нечетное…”.

 

Т е х н и ч е с к о е з а д а н и е 2 . 2 б.  Разработать алгоритм вычисления выражения вида:

для произвольно введенного значения x. Результат вывести на дисплей. 

Рекомендации. Это тоже очень распространенная задача.Часто возникает ситуация, когда в зависимости от значения исходных данных нужно рассчитывать то или иное выражение. Алгоритм решения подобен алгоритму 2.1б, но значительно проще, так как здесь проверяется всего одно условие: больше или меньше нуля введенное в переменную x значение?

Еще один важный момент в этой задаче — вычисление тригонометрических функций. Во всех языках программирования аргументы тригонометрических функций выражаются в радианной мере, то есть в долях числа p. А человеку понятнее углы в градусах. Что легче ввести: 45 o или 0,7853981...rad? Так что вводить нужно градусы, а потом переводить их в радианы по формулеa = ap/180 (a — угол в радианах; a — в градусах). Константу p = 3,14159 лучше ввести заранее.

Т е х н и ч е с к о е з а д а н и е 2 . 2 в .  С клавиатуры вводится один из символов: “П”, “С”или “Б”. В зависимости от введенного символа алгоритм должен вывести на дисплей числа: 15, 10 и 20 соответственно. Если введен любой другой символ — выдать сообщение об ошибке. 

Рекомендации. Стандартная задача на множественный выбор. Повторяет алгоритм 2.1б с точностью до наоборот (в том смысле, что там вводятся числа и выводятся символы, а здесь вводятся символы и выводятся числа). Не забудьте, что ввод производится в символьную переменную, то есть в программе ее нужно либо объявить символьной, либо снабдить символом “$”. А введенные значения должны сравниваться с символьными же константами — стало быть, их нужно или взять в кавычки, или присвоить символьным переменным.Не забудьте аналогично алгоритму 2.1.б сообщить об ошибке, если введен какой-либо отличный от заданных символ.

Т е х н и ч е с к о е з а д а н и е 2 . 3. Разработать алгоритм и программу, вычисляющие значение выражения (вариант см. в таблице), для произвольно введенных величин. Вывод результата должен быть произведен на дисплей в формате: 

При a = <введенное значение> значение выражения равно <результат>

или

При a = <введенное значениевыражение рассчитано быть не может.

Контрольные вопросы

1. В каких задачах используются разветвляющиеся алгоритмы?
2. Чем линейный алгоритм отличается от разветвленного?
3. Что такое условие разветвления?
4. В каком случае ветвь разветвляющегося алгоритма называется положительной?
5. Изобразите блок-символ операции условного перехода.
6. Изобразите полную блок-схему разветвляющегося алгоритма. Укажите ее основные элементы.
7. Что такое множественный выбор?
8. В каких задачах используется множественный выбор?
 

 Литература

1. Береговой Д.П. Основы информатики: Учебное пособиедля X—XI классов. Краснодар: ОИПЦ, 2001.

2. Зельднер Г.А. Microsoft Basic Professional DevelopmentSystem 7.1. Руководство программиста. М.: ABF, 1994.

* В этом номере публикуются первые две лабораторные работы. Оставшиеся лабораторные работы и приложения будут опубликованы в следующих (декабрьских) номерах.