Урок 4. Блок-схема

Итак, опустив долгие и нудные восхваления Паскаля, которые так любят публиковать в своих статьях редакторы многих сайтов, приступим непосредственно к самому основному – к программированию.
В школах, как правило, изучение Паскаля начинают с решения простейших задач путем составления различных алгоритмов или блок-схем, которое многие так часто игнорируют, считая никому не нужной ерундой. А зря. Я, как и любой другой человек, хоть немного соображающий в программировании (не важно где – в Паскале, Си, Дельфи), могу уверить Вас – умение правильно и быстро составлять схемы является фундаментом, основой программирования.
Блок-схема — графическое представление алгоритма. Она состоит из функциональных блоков, которые выполняют различные назначения (ввод/вывод, начало/конец, вызов функции и т.д.).
Существует несколько основных видов блоков, которые нетрудно запомнить:

Сегодняшний урок я решила посвятить не только изучению блок-схем, но также и изучению линейных алгоритмов. Как Вы помните, линейный алгоритм — наипростейший вид алгоритма. Его главная особенность в том, что он не содержит никаких особенностей. Как раз это и делает работу с ним простой и приятной.
Задача №1: «Рассчитать площадь и периметр прямоугольника по двум известным сторонам».
Данная задача не должна представлять особой трудности, так как построена она на хорошо известных всем нам формулах расчета площади и периметра прямоугольника, поэтому зацикливаться на выведении этих формул мы не будем.
Составим алгоритм решения подобных задач:
1) Прочитать задачу.
2) Выписать известные и неизвестные нам переменные в «дано». (В задаче №1 к известным переменным относятся стороны: a, b ;к неизвестным — площадь S и периметр P)
3) Вспомнить либо составить необходимые формулы. (У нас: S=a*b; P=2*(a+b))
4) Составить блок-схему.
5) Записать решение на языке программирования Pascal.
Запишем условие в более кратком виде.
alt=»Решение задачи №1. Блок-схема» width=»105″ height=»300″ /> Решение задачи №1
Структура программы, решающей данную задачу, тоже проста:
- 1) Описание переменных;
- 2) Ввод значений сторон прямоугольника;
- 3) Расчет площади прямоугольника;
- 4) Расчет периметра прямоугольника;
- 5) Вывод значений площади и периметра;
- 6) Конец.
А вот и решение:
Задача №2: Скорость первого автомобиля — V1 км/ч, второго – V2 км/ч, расстояние между ними S км. Какое расстояние будет между ними через T часов, если автомобили движутся в разные стороны? Значения V1, V2, T и S задаются с клавиатуры.
Решение осуществляем, опять же, следуя алгоритму. Прочитав текст, мы переходим к следующему пункту. Как и во всех физических или математических задачах, это запись условий задачи:
Дано: V1, V2, S, Т
Найти: S1
Далее идет самая главная и в то же время самая интересная часть нашего решения – составление нужных нам формул. Как правило, на начальных стадиях обучения все необходимые формулы хорошо нам известны и взяты из других технических дисциплин (например, на нахождение площади различных фигур, на нахождение скорости, расстояния и т.п.).
Формула, используемая для решения нашей задачи, выглядит следующим образом:
Следующий пункт алгоритма – блок-схема:
alt=»Решение задачи №2.Блок-схема» width=»127″ height=»300″ />Решение задачи №2.
А также решение, записанное в Pascal :
Вам может показаться, что две эти программы правильны, но это не так. Ведь сторона треугольника может быть 4.5, а не 4, а скорость машины не обязательно круглое число! А Integer — это только целые числа. Поэтому при попытке написать во второй программе другие числа выскакивает ошибка:

Обратите внимание в Паскале, как и в любом другом языке программирования десятичная дробь вводится с точкой, а не с запятой!
Чтобы решить эту проблему вам надо вспомнить какой тип в Pascal отвечает за нецелые числа. В этом уроке мы рассматривали основные типы. Итак, это вещественный тип — Real. Вот, как выглядит исправленная программа:

Как видите, эта статья полезна для прочтения как новичкам, так и уже более опытными пользователям Pascal, так как составление блок-схем не только очень простое и быстрое, но и весьма увлекательное занятие.
Здесь понятней чем в школе.
мля… прикиньте, я узнал про этот сайт только ПОСЛЕ того как сделал программу с условием, узнавая все в инструкции
Ребята , вопрос на засыпку, как заставить «,» (введенную пользователем в числе) заменить на «.» внутри программы, что бы не вылетало юхни с ошибкой.
Взять строку введенную пользователем, заменить «,» на «.».
Если совсем гуглить не умеете, то вам сюда — http://www.cyberforum.ru/pascal/thread190664.html
>> скорость машины не обязательно круглое число!
Нет такого понятия, как «круглое число».
Обе ваши блок-схемы не соответствуют ГОСТу (сдать такие на курсовой проект не получится). ГОСТ определяет блоки начала и конца, как «прямоугольник со скругленными краями», а не «скругленными углами».
>> умение правильно и быстро составлять схемы является фундаментом, основой программирования.
Большинство программистов так не считает. Кроме того, попробуйте поспрашивать у программистов «когда они последний раз составляли блок-схему?» — окажется что в ВУЗе (когда с них зачем-то сдирали знание ГОСТа).
>> так как составление блок-схем не только очень простое и быстрое, но и весьма увлекательное занятие.
Очень сложное, долгое и бесполезное занятие. Для хоть сколько-нибудь большой программы (в тысячу строк хотя бы, как курсак) блок-схемы будут огромные и их будут десятки. А что делать если они перестают соответствовать коду? — вот даже в вашей первой задаче надо будет добавить проверку, что юзер не ввел отрицательные значения сторон, что делать? — исправления кода займут 1 минуту, а исправление блок-схем 10 минут, и зачем тогда этим заниматься?
Программист не должен писать блок-схемы (он их должен читать и понимать и при необходимости исправлять). Блок-схемы это графический язык общения, который понимает как программист, так и не программист. Чтобы пользователь не общался с программистом своими «хотелками», типа я хочу, чтобы вот это правильно считалось, и это число складывалось с этим, а потом выводилось сюда (или вообще говорил — хочу что бы работало), а рисовал все в виде блок-схем с четким алгоритмом. Тогда по идее у программиста будет понимание того, что от него хотят (и он через пять минут не забудет все что ему сказали). Либо, когда общаются два программиста пишущих на разных языках программирования (LISP и Java) и одному нужно объяснить как работает его код, что бы другой переписал его на другом языке.
Как объяснить преподавателю как работает программа, если преподаватель не знает языка программирования на котором написана ваша программа? Или как преподавателю объяснить алгоритм задачи студентам пишущим и реализующим этот алгоритм или программу на разных языках программирования? Нужен какой-то универсальный язык общения и обычно это просто текст «что нужно сделать» на русском языке, а не намного облегчающая жизнь программиста блок-схема.
Вам могут сказать — сделай модуль авторизации (ты же знаешь как, ну как всегда и как везде), а могут нарисовать блок-схему модуля авторизации с учетом всех пожеланий, типа того, что пароль должен содержать не менее 6 символов и что нужно делать в противном случае т.д. То есть блок схему должен уметь рисовать тот кто ставит задачу, а не программист. Либо программист (архитектор либо менеджер проекта), который ставит задачу другим программистам.
Вы слишком придирчивы, серьезно (я говорю про последние два пункта). Понятно, что статья (как почти и весь сайт) написана почти только для школьников, которым об этом твердят в школе. Здесь же им просто объясняют те вещи, которые они на учебе недопоняли
Блок схемы всей программы могут не понадобиться. Это же тонны бумаги и много времени. И да, они устаревают и актуализировать их трудоёмко.
Но при обсуждении новых вариантов решения задачи с другими программистами удобно оперировать блоками с криво-косо нарисованными краями и линиями. Начертил на бумаге или доске и все понятно.
На практике я встречал фотографии доски с блок-схемами, прикреплённые к задачам в Jira.
Не по ГОСТу
Спасибо, теперь я напишу программу, которая делает код по блок схеме и наоборот
program Logarifm;
Var
X,y,z:real;
function Lgrfm(A,B:Real):Real;
var
Osn:Real;
begin
Osn:=ln(A)/ln(B);
Lgrfm:=Osn;
end;
begin
Write(‘Введите X = ‘);
ReadLn(X);
Write(‘Введите Y = ‘);
ReadLn(Y);
Z:=Lgrfm(X,2)+Lgrfm(Y,3);
WriteLn(‘Z = ‘,Z:10:3);
ReadLn;
end.
Отличный сайт, мне все нравится все понятно и четко, нашел нужные программы.
В блок-схемах начало и конец алгоритма обозначаются не прямоугольником со скруглёнными краями, а овалом!
Ребята, что сделали сайт молодцы)) Оч полезная инфа, что нужно поправить, чтобы сайт стал еще лучше:
1) мне не хватает структуры уроков порядковой (или хотябы под уроками чтобы была ссылка на следующий), поэтому приходится на другие уроки искать ссылки по сайту и в контексте уроков;
2)нет описания функций используемых в примерах (по крайней мере, возможно по причине отсутствия структуры, я их не нашел), поэтому беру на сторонних ресурсах описания таких функций как dec() inc() sqr() odd().
А вообще как я понял сайт составлялся школьниками «на коленках», поэтому я не придираюсь, а просто говорю им спасибо за их труд. Желаю успехов.
Блок-схемы в Turbo Pascal. Правила оформления алгоритмов по ГОСТУ.
Процесс написания программы в среде Turbo Pascal начинается с составления алгоритма и представления его в формализованной записи в виде блок-схем. Блок-схемы представляют собой совокупность действий или операций, изображенное ввиде геометрических фигур. Переход от одного действия к другому обозначается направленной линией.
При составлении блок-схемы необходимо добавлять элементы сверху вниз последовательно друг за другом. При возникновении условий соблюдать древовидную иерархию. Блок-схема обязательно должна начинаться с элемента «Начало» и заканчиваться элементом «Конец», причем каждый из них должен быть употреблен только по одному разу.
Составление блок-схем регламентируются следующими документами:
ГОСТ 19.701-90. Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения.
ГОСТ 19.002-80. Схемы алгоритмов и программ. Правила выполнения.
ГОСТ 19.003-80. Схемы алгоритмов и программ. Обозначения условные графические
Исходя из этих документов основными элементами блок-схемы являются:
Обозначает начало или конец программы. Выделяет границы взаимодействия с внешней средой. Используется обычно с надписями «Начало»,»Конец» либо «Пуск»,»Остановка» строго по одному разу.
Выполнение некоторой операции (арифметической, логической либо инойдругой), в результате которой каким-либо образом изменяются данные. Возможно объединение нескольких операций в один блок.
Выбор одного из двух возможных решений алгоритма. Внутри элемента расположено условие. Из углов ромба выходят возможные пути, обозначающиеся как «да»,»нет» либо «истина»,»ложь». В целях удобства чтения блок-схемы направление, отвечающее условию («да»/»истина»)выходит из нижнего угла ромба, противоположное из бокового. Возможно использования элемента для обозначения цикла epeat..until и while..do.
Модификация
Выполнение циклических команд for. Операции и действия цикла располагаются ниже элемента. При каждом шаге цикла программа возвращается к заголовку по левой стрелке. Выход из цикла производится по правой боковой стрелке.
Предопределенный процесс
Обозначение процедуры, функции, модуля (части программы вне текущего последовательного кода).
Осуществление обмена данными (ввод-вывод). Обобщенное представление обмена информацией без определенного типа носителя.
Вывод данных на бумажный носитель (печать на принтере).
Ручной ввод
Неавтономный ввод данных с помощью клавиатруы.
Ввод-вывод данных с перфокарты.
Ввод-вывод данных с перфоленты.
Запоминающее устройство с последовательным доступом
Обмен данными с магнитной лентой.
Запоминающее устройство с прямым доступом
Обмен данными с магнитным барабаном.
Магнитный диск
Ввод-вывод данных, носителем которых является магнитный диск.
Оперативная память
Обмен данными с оперативно-запоминающим устройством (ОЗУ).
Ручное управление
Отображение процесса, выполняемого человеком.
Сохраненные данные
Обмен данными при использовании запоминающего устройства, управляемого непосредственно процессором.
Отображение данных на мониторе, визуальных индикаторах.
Выделение одного или несколько множеств из другого множества.
Объединение одного или несколько множеств в общее множество.
Группировка
Объединение множеств с выделением некоторых других.
Упорядочивание множеств по заданному признаку.
Соединитель
Используется для обрыва линия связи в одном месте и продолжения в другом. Внутри элемента блок-схемы вводится уникальный идентификатор.
Межстраничный соединитель
Аналогичен предыдущему элементу блок-схемы, переносит линии связи с конца одной страницы в начало другой.
Комментарии
Пометка неактивной части программы.
Линия потока
Отображает пото данных, с возможным указанием направления их передачи. Объединяет между собой элементы блок-схемы.
Пунктирная линия
Альтернативная связь между объектами. Используется также для обведения комментариев.
Параллельные действия
Синхронизация нескольких операций в программе единовременно.
Канал связи
Передача по каналам связи.
Пропуск элементов блок-схемы. Используется когда можно оставить часть программы без внимания.
Как правило, при составлении блок-схем используются только часть этих элементов, пренебрегая такими элементами как «ручной ввод», «дисплей» и им подобные, используя наиболее общее обозначение «данные».
Блок — схемы алгоритмов
При обучении программированию используется графическое описание алгоритма решения задачи в виде блок — схемы. Такое представление алгоритма достаточно удобно и наглядно показывает последовательность выполнения операторов программы. Приведем основные обозначения, применяемые в блок — схемах.

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

В соответствии с используемыми в программе операторами различают следующие типы алгоритмов: линейный, ветвящийся, циклический, комбинированный.
Приведем пример блок — схемы комбинированного алгоритма для расчета суммы положительных S1 и отрицательных S2 чисел из N случайных чисел от -100 до 100.
Блок-схема и программа Паскаль
Блок-схема – это графический метод представления алгоритма, в котором его шаги изображаются в виде определенных блоков разной формы, соединенных между собой стрелками.
Введение
В шестидесятых годах двадцатого века, началась работа по созданию нового языка программирования и уже к началу семидесятых специалисты закончили работу над первым вариантом языка Pascal и его программой компиляции. Затем фирма Borland International существенно улучшила исходную версию этого языка и выпустила в свет новую среду программирования, названную Turbo Pascal. Этот вариант программы раздвинул границы её применения и создал основу для её дальнейших модификаций. Программные приложения, сформированные на Паскале, проходят следующие основные шаги:
- Процесс занесения и редакции текстового варианта программы.
- Выполнение транслятором перевода программы в машинные коды.
- Процедура отладки программного приложения.
Все вышеперечисленные операции осуществляются при помощи предназначенных для этого средств:
- Программа, предназначенная для коррекции текстов (текстовый редактор).
- Программа, которая осуществляет процесс компиляции. В её составе есть программа компоновки, которая предназначена для создания программного объекта компьютера.
- Отладочная программа, которая применяется программистом для обнаружения и исправления ошибок.
Блок-схема и программа Паскаль
Проектирование программного продукта в Турбо Паскале следует начинать с формирования алгоритма и отображения его в формальной записи в формате блок-схемы. Блок-схема является набором процедур или операций, которые представлены в виде геометрических фигур. Очерёдность действий, то есть завершение одного действия и начало другого, следует обозначать линией, имеющей направление. При формировании блок-схемы следует прибавлять компоненты сверху вниз поочерёдно один за другим. Если необходимо выполнять проверку условий, то следует соблюсти древовидность иерархии. Блок-схема обязана начинаться компонентом «Начало» и оканчиваться компонентом «Конец», при этом они должны обязательно присутствовать в единственном числе. Сформированная блок-схема должна соответствовать всем ГОСТ и другим регламентирующим документам. В частности, это ГОСТ 19.003-80, который регламентирует формат схем алгоритмов и программ, а также условные графические обозначения.
Согласно этим документам главными компонентами блок-схемы являются следующие:

Рисунок 1. Терминатор. Автор24 — интернет-биржа студенческих работ
Терминатор. Он призван обозначить начало или окончание программы. А также определяет зону взаимообмена с окружающим пространством. Применяется, как правило, с командами, записанными внутри, «Начало», «Конец», или «Пуск» и «Стоп», и обязательно только один раз.

Рисунок 2. Процесс. Автор24 — интернет-биржа студенческих работ
Процесс. Обозначает какую-либо функцию или операцию. Это может быть арифметическая, логическая или какая-либо другая операция, которая в итоге как-то изменяет данные. Допускается соединение операционного набора в одном блоке.

Рисунок 3. Решение. Автор24 — интернет-биржа студенческих работ
Решение. Осуществляется выбор одного из допустимых продолжений алгоритма. В компоненте располагается проверяемое условие, которое определяет дальнейшее направление алгоритма. Этих направлений всего два и они выходят в виде стрелок, обозначенных как «Да» и «Нет», то есть проверяемое условие истинно или ложно. Чтобы было удобно читать блок-схему, путь, отвечающий истинности условия, должен выходить снизу ромба, а путь «нет» должен выходить из бокового. Данные компонент применяется для задания некоторых циклов, таких как, repeat..until и while..do.

Рисунок 4. Модификация. Автор24 — интернет-биржа студенческих работ
Модификация. Служит для осуществления команд цикла типа for. Команды и функции цикла должны располагаться под элементом. После каждого прохождения цикла выполняется возврат программы к началу по стрелке, расположенной слева. Цикл заканчивается выходом в направлении стрелки, расположенной справа.

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

Рисунок 6. Данные. Автор24 — интернет-биржа студенческих работ
Данные. Выполнение информационного обмена, то есть ввода или вывода данных. Служит обобщённым отображением информационного обмена без указания конкретного вида носителя.

Рисунок 7. Документ. Автор24 — интернет-биржа студенческих работ
Документ. Является обозначением вывода данных на печать.

Рисунок 8. Обозначение ручного ввода. Автор24 — интернет-биржа студенческих работ
Обозначение ручного ввода. Подразумевается ввод информации с клавиатуры.

Рисунок 9. Перфокарта. Автор24 — интернет-биржа студенческих работ
Перфокарта. Обозначение чтения или записи данных с перфокарт.

Рисунок 10. Перфолента. Автор24 — интернет-биржа студенческих работ
Перфолента. Обозначение чтения или записи данных с использованием перфоленты.

Рисунок 11. Устройство памяти, имеющее последовательный доступ. Автор24 — интернет-биржа студенческих работ
Устройство памяти, имеющее последовательный доступ. Предполагается информационный обмен с носителями на магнитной ленте.

Рисунок 12. Устройство памяти, имеющее прямой доступ. Автор24 — интернет-биржа студенческих работ
Устройство памяти, имеющее прямой доступ. Имеется в виду информационный обмен с магнитным барабаном.

Рисунок 13. Магнитный диск. Автор24 — интернет-биржа студенческих работ
Магнитный диск. Информационный обмен с носителем на магнитном диске.

Рисунок 14. Оперативная память. Автор24 — интернет-биржа студенческих работ
Оперативная память. Предполагается информационный обмен с оперативным запоминающим устройством.

Рисунок 15. Режим ручного управления. Автор24 — интернет-биржа студенческих работ
Режим ручного управления. Отображается процесс, который выполняет человек.

Рисунок 16. Сохранение данных. Автор24 — интернет-биржа студенческих работ
Сохранение данных. Информационный обмен с применением устройства памяти, которое управляется напрямую процессором.

Рисунок 17. Монитор. Автор24 — интернет-биржа студенческих работ
Монитор. Вывод информации на дисплей, визуальные индикаторы.

Рисунок 18. Извлечь. Автор24 — интернет-биржа студенческих работ
Извлечь. Выделить одно или набор множеств из определенного множества.

Рисунок 19. Слияние. Автор24 — интернет-биржа студенческих работ
Слияние. Соединение одного или набора множеств в единое множество.

Рисунок 20. Группирование. Автор24 — интернет-биржа студенческих работ
Группирование. Слияние множеств и выделение каких-либо других.

Рисунок 21. Выполнение сортировки. Автор24 — интернет-биржа студенческих работ
Выполнение сортировки. Осуществление упорядочения множеств по определённым признакам.

Рисунок 22. Соединение. Автор24 — интернет-биржа студенческих работ
Соединение. Обозначение применяется, чтобы оборвать связующую линию в одном месте и продолжить её в другом. В этом компоненте блок-схемы указывается уникальная идентификация.

Рисунок 23. Межстраничное соединение. Автор24 — интернет-биржа студенческих работ
Межстраничное соединение. Является аналогом предыдущего компонента блок-схемы. Выполняет перенос линии связи с окончания исходной страницы к началу следующей.

Рисунок 24. Комментарий. Автор24 — интернет-биржа студенческих работ
Комментарий. С его помощью помечается неактивный участок программы.