Задачи на составление блок-схем алгоритмов
Основные блоки
Примеры определения результата выполнения алгоритма по заданной блок-схеме.
Пример 1. Дана блок-схема алгоритма
Например, при x=16 и y=2
Ввод: х=16 y=2
Пример 2.
Дана блок-схема алгоритма
Определить результат выполнения алгоритма при определённых значениях исходных данных
Например, при x= - 6 или x=0 или x=7
1) Ввод: х=-6
Проверка условия x>0 «Нет» y= -2*(-6)=12
Вывод: y=12
2) Ввод: х=0
Проверка условия x>0 «Нет» y=-2*0=0 Вывод: y=0
3) Ввод: х=7
Проверка условия x>0 «Да» y=2*7=14 Вывод: y=14
Пример 3.
Дана блок-схема алгоритма
Определить результат выполнения алгоритма при определённых значениях исходных данных
Например, при n=15 или n=0 или n=-7
1) Ввод: n=15
Проверка условия n>0 «Да»
Вывод «n-положительное»
2) Ввод: n=0
Проверка условия n>0 «Нет» Проверка условия n<0 «Нет» Вывод «n=0»
3) Ввод: n=-7
Проверка условия n>0 «Нет» Проверка условия n<0 «Да» Вывод «n-отрицательное»
Пример 4.
Дана блок-схема алгоритма
Определить результат выполнения алгоритма при определённых значениях исходных данных
Например, при A=7; B=8; C=9 или A=6; B=6; C=-10 или A=6; B=10; C=-10
1) Ввод: A=7; B=8; C=9
Проверка условия A=B «Нет» Проверка условия B>C «Нет» B=9+8=17; F=7+17=24 Вывод F=24
2) Ввод: A=6; B=6; C=-10
Проверка условия A=B «Да» С=6+6=12; F=6+12=18 Вывод F=18
3) Ввод: A=6; B=10; C=-10
Проверка условия A=B «Нет» Ю Проверка условия B>C «Да» Ю A=6+10=16; F=16+(-10)=6 Вывод F=6
Пример 5.
Дана блок-схема алгоритма
Определить результат выполнения алгоритма при определённых значениях исходных данных
Например, при n=4 или n=1
1) Ввод: n=4
Проверка условия k>2 «Да» S=0+4=4; n=4-1=3
Проверка условия k>2 «Да» S=4+3=7; n=3-1=2
Проверка условия k>2 «Нет» Вывод S=7
2) Ввод: n=1
Проверка условия k>2 «Нет» Вывод S=0
Алгоритм - описанная на некотором языке точная конечная система правил, определяющая содержание и порядок действий над некоторыми объектами, строгое выполнение которых дает решение поставленной задачи.Понятие алгоритма, являющееся фундаментальным в математике и информатике, возникло задолго до появления средств вычислительной техники. Слово «алгоритм» появилось в средние века, когда европейцы познакомились со способами выполнения арифметических действий в десятичной системе счисления, описанными узбекским математиком Муххамедом бен Аль-Хорезми.Слово алгоритм - есть результат европейского произношения слов Аль-Хорезми.Первоначально под алгоритмом понимали способ выполнения арифметических действий над десятичными числами. В дальнейшем это понятие стали использовать для обозначения любой последовательности действий, приводящей к решению поставленной задачи.Любой алгоритм существует не сам по себе, а предназначен для определенного исполнителя (человека, робота, компьютера, языка программирования и т.д.).Значение слова «алгоритм» очень схоже со значениями слов «рецепт», «метод», «процесс». Однако, в отличие от рецепта или процесса, алгоритм характеризуется следующими свойствами:
дискретностью, массовостью, определенностью, результативностью, формальностью.
Дискретность (разрывность) - это свойство алгоритма, характеризующее его структуру: каждый алгоритм состоит из отдельных законченных действий, говорят «Делится на шаги».
Массовость - применимость алгоритма ко всем задачам рассматриваемого типа, при любых исходных данных. Например,алгоритм решения квадратного уравнения в области действительных чисел должен содержать все возможные исходы решения, т.е.,рассмотрев значения дискриминанта, алгоритм находит либо два различных корня уравнения, либо два равных, либо делает вывод о том, что действительных корней нет.
Определенность (детерминированность, точность) - свойство алгоритма, указывающее на то, что каждый шаг алгоритма должен быть строго определен и не допускать различных толкований. Также строго должен быть определен порядок выполнения отдельных шагов.
Результативность - свойство, состоящее в том, что любой алгоритм должен завершаться за конечное (может быть очень большое) число шагов. Формальность - это свойство указывает на то, что любой исполнитель, способный воспринимать и выполнять инструкции алгоритма, действует формально, т.е. отвлекается от содержания поставленной задачи и лишь строго выполняет инструкции. Рассуждать «что, как и почему?» должен разработчик алгоритма, а исполнитель формально (не думая) поочередно исполняет предложенные команды и получает необходимый результат.
1.2.Способы описания (виды) алгоритмов.
Рассмотрим следующие способы описания алгоритма: словесное описание, псевдокод, блок-схема, программа.
Словесное описание представляет структуру алгоритма на естественном языке. Например, любой прибор бытовой техники (утюг,электропила, дрель и т.п.) имеет инструкцию по эксплуатации, т.е.словесное описания алгоритма, в соответствии которому данный прибор должен использоваться. Никаких правил составления словесного описания не существует. Запись алгоритма осуществляется в произвольной форме на естественном, например, русском языке. Этот способ описания не имеет широкого распространения, так как строго не формализуем (под «формальным» понимается то, что описание абсолютно полное и учитывает все возможные ситуации, которые могут возникнуть в ходе решения); допускает неоднозначность толкования при описании некоторых действий; страдает многословностью.
Псевдокод - описание структуры алгоритма на естественном, частично формализованном языке, позволяющее выявить основныеэтапы решения задачи, перед точной его записью на языке программирования. В псевдокоде используются некоторые формальные конструкции и общепринятая математическая символика. Строгих синтаксических правил для записи псевдокода не существует. Это облегчает запись алгоритма при проектировании и позволяет описать алгоритм, используя любой набор команд. Однако в псевдокоде обычно используются некоторые конструкции, присущие формальным языкам, что облегчает переход от псевдокода к записи алгоритма на языке программирования. Единого или формального определения псевдокода не существует, поэтому возможны различные псевдокоды, отличающиеся набором используемых слов и конструкций.
Блок-схема - описание структуры алгоритма с помощью геометрических фигур с линиями-связями, показывающими порядок выполнения отдельных инструкций. Этот способ имеет ряд преимуществ. Благодаря наглядности, он обеспечивает «читаемость»алгоритма и явно отображает порядок выполнения отдельных команд. В блок-схеме каждой формальной конструкции соответствует определенная геометрическая фигура или связанная линиями совокупность фигур.
Описания алгоритма в словесной форме, на псевдокоде или в виде блок-схемы допускают некоторый произвол при изображении команд. Вместе с тем они настолько достаточны, что позволяет человеку понять суть дела и исполнить алгоритм. На практике исполнителями алгоритмов выступают компьютеры. Поэтому алгоритм, предназначенный для исполнения на компьютере, должен быть записан на «понятном» ему языке, такой формализованный язык называютязыком программирования .
Программа - описание структуры алгоритма на языке алгоритмического программирования.
Задание алгоритмов с помощью блок-схем оказалось очень удобным средством изображения алгоритмов и получило широкое распространение.
Блок-схема алгоритма - графическое изображение алгоритма в виде связанных между собой с помощью стрелок (линий перехода) и блоков - графических символов, каждый из которых соответствует одному шагу алгоритма. Внутри блока дается описание соответствующего действия.
В таблице приведены наиболее часто употребляемые символы.
Название символа |
Обозначение и пример заполнения |
Пояснение |
Вычислительное действие или последовательность действий |
||
Проверка условий |
||
Модификация |
Начало цикла |
|
Предопределенный процесс |
Вычисления по подпрограмме, стандартной подпрограмме |
|
Ввод-вывод |
Ввод-вывод в общем виде |
|
Пуск-остановка |
Начало, конец алгоритма, вход и выход в подпрограмму |
|
Документ |
Вывод результатов |
|
Символы блок-схемы |
Блок «процесс » применяется для обозначения действия или последовательности действий, изменяющих значение, форму представления или размещения данных. Для улучшения наглядности схемы несколько отдельных блоков обработки можно объединять в один блок. Представление отдельных операций достаточно свободно.
Блок «решение » используется для обозначения переходов управления по условию. В каждом блоке «решение» должны быть указаны вопрос, условие или сравнение, которые он определяет.
Блок «модификация » используется для организации циклических конструкций. (Слово «модификация» означает «видоизменение, преобразование»). Внутри блока записывается параметр цикла, для которого указываются его начальное значение, граничное условие и шаг изменения значения параметра для каждого повторения.
Блок «предопределенный процесс » используется для указания обращений к вспомогательным алгоритмам, существующим автономно в виде некоторых самостоятельных модулей, и для обращений к библиотечным подпрограммам.
Для примера приведем блок-схемы алгоритма нахождения максимального из двух значений:
Вам понадобится
- - трафарет для черчения блок-схем;
- - механический карандаш;
- - ластик;
- - бумага;
- - компьютер с доступом в интернет.
Инструкция
Начало и конец алгоритма обозначаются овалами. Внутри них помещают, соответственно, слова «Начало» и «Конец». От овала, символизирующего начало алгоритма, исходит одна стрелка вниз, к , символизирующему конец алгоритма, приходит стрелка сверху.
Шаги, соответствующие действиям, не связанным с вводом-выводом, обозначаются при помощи прямоугольников. Пример такого действия - вычисление и присвоение результата той или иной переменной. Стрелка от предыдущего шага приходит к прямоугольнику сверху, а снизу от него исходит стрелка к следующему шагу.
Для обозначения шагов, соответствующих операциям ввода-вывода, используются параллелограммы. Такие операции бывают двух видов: присвоение поступивших откуда-либо данных переменной и вывод данных из переменной в файл, порт, на , принтер и т.п.
Ветвления обозначаются ромбами. В верхний угол ромба приходит стрелка от предыдущего шага, а из его боковых углов исходят стрелки, как «Нет» и «Да». Они приходят, соответственно, к шагам, выполняемым при несоблюдении и соблюдении условия. Нижний угол ромба оставляется свободным. Само (например, равенство, строгое или нестрогое) записывается внутри ромба.
Прямоугольник, боковые стенки которого двойные, олицетворяет переход к подпрограмме. После того как в подпрограмме встретился оператор возврата, продолжается выполнение основной программы. Внутри прямоугольника указывается название подпрограммы. Блок-схемы всех подпрограмм помещаются под блок-схемой основной программы либо на отдельных страницах.
Чертить блок-схемы удобнее всего через специальные трафареты, пользуясь механическим карандашом. Его можно стирать ластиком, аналогично обычному карандашу, но не требуется точить.
Если вы желаете составлять блок-схемы в электронном виде, воспользуйтесь онлайн-приложением под названием Flowchart. При желании можно также освоить особые языки программирования, в которых сам процесс программирования заключается в составлении блок-схемы. Таких языков два: Дракон и HiAsm.
Источники:
- как начертить блок схему
Первое и самое главное умение программиста - составить алгоритм. Знание языка это уже второе дело, их выбор - практически дело вкуса. А вот основы алгоритмизации едины всегда.
Инструкция
Изучите основные элементы и обозначения в алгоритме. Сначала вам может показаться это сложным и неуместным, однако, как только вам понадобится написать что-то действительно объёмное и комплексное, вы сами почувствуете, что канонично изображенный алгоритм легко . Прямоугольником формирование данных и новый процесс, ввод данных – параллелограммом, а ромбом – условие. Цикл начинается шестиугольником, использование подпрограммы – прямоугольником с дополнительными полосами сбоку. Начало и конец – круг. Вывод полученных значений – «оборванный лист», прямоугольник с нижней стороной в форме волны.
Сокращайте! Главным требованием к любому алгоритму является его простота. Чем меньше элементов в вашей конструкции, тем надежнее она будет работать. Более того, приучите себя к тому, что после изначального варианта, наверняка можно будет исключить из него 2-3 лишних шага. Попытайтесь «взять себя на слабо», и воспринимайте процесс сокращения алгоритма как некий вызов, а не раздражитель. Помните – чем короче все выглядит в , тем проще будет программы.
Предпочитайте «отсев» «развилке». Гораздо более удобным с точки зрения программного кода, как правило, является проверка условий. Иными словами, стремитесь к более «прямой» структуре, а не разветвленной. Классическим примером послужит алгоритм задачи «определить четверть плоскости, в которой находится точка, по координатам». В данном случае лучше окажется алгоритм, составленный из условий: «x>0, y>0 –данет», «x<0, y>0 –данет», и т.д. Менее удобным окажется вариант: «если x>0, то…», на большинстве языков он потребует больше шагов для выполнения.
Внимательно изучите доступные библиотеки. Многие начинающие программисты грешат тем, что не знают основных команд даже встроенных библиотек, из-за чего им постоянно приходится изобретать велосипед. Вполне возможно (особенно при работе с текстом, для него существует огромный запас различных команд) что некоторое действие (к примеру сравнение длинны строк) может быть выполнено стандартной подпрограммой. Это сразу исключает 5-7 лишних шагов из вашего алгоритма.
Видео по теме
Обратите внимание
Пишите алгоритм на бумаге. Из-за обилия геометрических фигур это просто удобнее.
Спросите 2-3 человека как бы они решмили поставленную задачу. Вполне возможно вам покажут кардинально иной подход.
Полезный совет
Алгоритм изображается сверху вниз.
Алгоритмирование - наука о создании алгоритмов и процессов, важнейшая компонента структурного программирования. Без алгоритмов не обойдется составление бизнес-плана, разработка приложения для мобильного или компьютерной игры. Умение создавать алгоритмы позволяет делать многие вещи многократно, с минимумом усилий, в автоматическом режиме.
Инструкция
Впервые слово «алгоритм» употребил один из создателей современной алгебры, мудрец и астроном Аль-Хорезми еще в 224 году н.э. в своих фундаментальных трудах. В его понимании алгоритм -
На этом уроке мы на практике разберём: как составлять алгоритмы различных типов , а также как «читать» алгоритм по готовой блок-схеме .
Возможны следующие ситуации: в тот момент, когда мы подошли к дороге горел красный или зелёный свет. Если горел зелёный свет, то можно переходить дорогу. Если же горел красный свет, то необходимо дождаться зелёного - и уже тогда переходить дорогу.
Таким образом, алгоритм имеет следующий вид:
- Подойти к светофору.
- Посмотреть на его свет.
- Если горит зелёный, то перейти дорогу.
- Если горит красный, то подождать, пока загорится зелёный, и уже тогда перейти дорогу.
Блок-схема данного алгоритма имеет вид:
Рис. 3. Блок-схема к примеру 2.
Составление циклических алгоритмов
Рассмотрим пример на составление циклического алгоритма. Мы уже несколько раз обсуждали перевод чисел из десятичной системы в двоичную. Теперь пришло время чётко сформулировать этот алгоритм.
Напомним, что его принцип состоит в делении числа на 2 и записей остатков, получающихся при делении.
Пример 3. Составить алгоритм перевода чисел из десятичной системы в двоичную.
То есть, алгоритм будет выглядеть так:
- Если число равно 0 или 1, то это и будет его двоичное представление.
- Если число больше 1, то мы делим его на 2.
- Полученный остаток от деления записываем в последний разряд двоичного представления числа.
- Если полученное частное равно 1, то его дописываем в первый разряд двоичного представления числа и прекращаем вычисления.
- Если же полученное частное больше 1, то мы заменяем исходное число на него и возвращаемся в пункт 2).
Блок-схема этого алгоритма выглядит следующим образом:
Рис. 4. Блок-схема к примеру 3.
Примечание: подумайте, можно ли как-то упростить приведенную блок-схему.
«Чтение» алгоритмов
Пример 4. По заданной блок-схеме выполнить действия алгоритма для числа 23.
Рис. 5. Блок-схема к примеру 4.
На этом уроке мы разобрали примеры составления алгоритмов, а также пример «чтения алгоритма» по готовой блок-схеме.
На следующем уроке мы обсудим игры и выигрышные стратегии.
Как убить Кощея?
Наверное, все помнят из детства сказку, в которой рассказывается о местонахождении смерти Кощея Бессмертного: «Смерть моя - на конце иглы, которая в яйце, яйцо - в утке, утка - в зайце, заяц в сундуке сидит, сундук на крепкий замок закрыт и закопан под самым большим дубом на острове Буяне, посреди моря-океяна …»
Рис. 6. Кощей Бессмертный и Василиса Премудрая ().
Предположим, вместо Ивана-царевича бороться с Кощеем был брошен Иван-дурак. Давайте поможем Василисе Премудрой составить такой алгоритм, чтобы даже Иван-дурак смог убить Кощея.
- Конечно же, сначала необходимо разыскать остров Буян (на такие вещи, будем считать, Иван-дурак способен).
- Поскольку сундук закопан под самым большим дубом, то сначала необходимо найти самый большой дуб на острове.
- Затем нужно выкопать сам сундук.
- Прежде чем доставать зайца, необходимо сломать крепкий замок.
- Теперь уже можно достать зайца.
- Из зайца нужно достать утку.
- Из утки достать яйцо.
- Разбить яйцо и достать иголку.
- Иголку поломать.
Это тоже линейный алгоритм, хотя и более длинный, чем алгоритм запуска программы Paint.
Его блок-схема выглядит так:
Рис. 7. Блок-схема.
На распутье…
И снова обратимся к сказочным персонажам в поисках примеров различных алгоритмов. Когда речь идёт об алгоритмах с ветвлениями, то, конечно, нельзя не вспомнить о богатыре, стоящем на распутье возле камня.
Рис. 8. Богатырь на распутье ().
На камне написано:
«Направо пойдёшь - коня потеряешь, себя спасёшь; налево пойдёшь - себя потеряешь, коня спасёшь; прямо пойдёшь - и себя и коня потеряешь».
Попробуем составить алгоритм действий, который составил автор надписи на камне для путников?
- Если мы пойдём направо, то потеряем коня. Если же мы не пойдём направо, то у нас остаётся два варианта (мы считаем, что назад возвращаться путник не будет): пойти прямо и налево.
- В случае, если мы пойдём налево, то потеряем себя, а коня спасём.
- Если же мы пойдём прямо, то потеряем и себя, и коня.
Блок-схема этого алгоритма выглядит так:
Рис. 9. Блок-схема.
Репка
Русские народные сказки не оставили нас и без циклического алгоритма. И, как ни странно, спрятался он в одной из самых незамысловатых сказок - «Репке».
Рис. 10. Репка.
Вспомним сюжет сказки: дед тянет-потянет - вытянуть не может. Затем на помощь к деду по очереди подходят новые персонажи - и так до тех пор, пока не приходит мышка.
Попытаемся составить алгоритм действий всех персонажей сказки для того, чтобы они всё-таки смогли вытянуть Репку.
- Изначально к Репке подошёл дед и попытался вытянуть.
- Поскольку вытянуть Репку не получилось, то понадобилась помощь следующего персонажа.
- И так происходит до тех пор, пока не появилась мышка (или, другими словами, до тех пор, пока Репку не вытащили).
В виде блок-схемы этот алгоритм выглядит следующим образом:
Рис. 11. Блок-схема.
- Босова Л.Л. Информатика и ИКТ: Учебник для 6 класса. - М.: БИНОМ. Лаборатория знаний, 2012
- Босова Л.Л. Информатика: Рабочая тетрадь для 6 класса. - М.: БИНОМ. Лаборатория знаний, 2010.
- Босова Л.Л., Босова А.Ю. Уроки информатики в 5-6 классах: Методическое пособие. - М.: БИНОМ. Лаборатория знаний, 2010.
- Интернет портал «Сообщество взаимопомощи учителей» ().
- Интернет портал «Nsportal.ru» ().
- Интернет портал «Фестиваль педагогических идей» ().
- §3.3, 3.4 (Босова Л.Л. Информатика и ИКТ: Учебник для 6 класса);
- Постарайся самостоятельно составить линейный алгоритм из 5-6 фигур;
- Составь блок-схему циклического алгоритма выполнения домашнего задания;
Введение
Составление блок-схемы, соответствующей всем требованиям ГОСТов, – небыстрый и кропотливый процесс. Если у вас возникли проблемы с проектированием блок-схемы или вы запутались в том, какой элемент блок-схемы нужно использовать в конкретном месте, то записывайтесь ко мне на репетиторский урок. На частном занятии вы сможете задать мне абсолютно любой вопрос, касающийся визуализации блок-схемы.
Ключевые элементы блок-схемы
Основные элементы, использующиеся при проектировании блок-схем
№ | Название элемента | Графическое отображение | Функция |
Терминатор или блок начало-конец | Обозначает начало или конец программы. Данный блок отделяет границы программы от внешней среды. Как правило, в данный элемент вписывают фразы «Начало», «Старт» или «Конец», «Финиш». |
||
Блок команды, процесса, действия | Данный блок отвечает за выполнение одной или нескольких операций. Как правило, в данный элемент блок-схемы вписывают команды, которые меняют данные, значения переменных. Например, арифметическая операция над двумя переменными будет записана в данном блоке. |
||
Блок логического условия | Напомню, что результатом логического условия всегда является одно из двух предопределенных значения: истина или ложь. Внутри данного элемента-ромба записывается логическое условие, а из вершин ромба выходят альтернативные ветви решения. Обязательно следует подписывать ветви словами «Да», «Нет», чтобы не вводить в заблуждение читателя блок-схемы. |
||
Предопределенный процесс | Если ваша программа предусматривает наличие подпрограмм: процедур или функций, то вызов подпрограммы записывается внутри данного элемента. |
||
Блок ввода-вывода данных | Отвечает за форму подачи данных, например, за пользовательский ввод данных с клавиатуры или за вывод данных на монитор персонального компьютера. Очень важно понимать, что данный элемент блок-схемы не определяет носителя данных. |
||
Блок цикла со счетчиком | Отвечает за выполнение циклических команд цикла for. Внутри элемента записывается заголовок цикла со счетчиком, а операции тела цикла располагаются ниже элемента. При каждой итерации цикла программа возвращается к заголовку цикла, используя левую стрелку. Выход из цикла for осуществляется по правой стрелке. |
||
Парный блок для циклов с пред- и постусловием | Данный блок состоит из двух частей. Операции тела цикла размещаются между ними. Заголовок цикла и изменения счетчика цикла записываются внутри верхнего или нижнего блока – в зависимости от архитектуры цикла. |
||
Применяется для обрыва линии связи между элементами блок-схемы . Например, если вы строите масштабную блок-схему на листе формата А4, и она не помещается на один лист, то вам придется осуществить перенос блок-схемы на второй лист. В этом случае необходимо будет воспользоваться данным соединителем. Как правило, внутри окружности указываются уникальный идентификатор, который является натуральным числом. |
Мы рассмотрели восемь базовых элементов блок-схемы , оперируя которыми вы сможете без труда реализовать абсолютно любую блок-схему, исходя из требований или вузовской программы.
Если вы хотите углубить познания в области построения блок-схем или не до конца разобрались с каким-либо элементом блок-схемы , то записывайтесь ко мне на индивидуальный урок. На данном уроке мы детально разберем все ваши вопросы, а также проведем составление колоссального количества блок-схем различной степени сложности.