31.01.2019 Learnpascal
Итак, опустив долгие и нудные восхваления Паскаля, которые так любят публиковать в своих статьях редакторы многих сайтов, приступим непосредственно к самому основному – к программированию.
В школах, как правило, изучение Паскаля начинают с решения простейших задач путем составления различных алгоритмов или блок-схем, которое многие так часто игнорируют, считая никому не нужной ерундой. А зря. Я, как и любой другой человек, хоть немного соображающий в программировании (не важно где – в Паскале, Си, Дельфи), могу уверить Вас – умение правильно и быстро составлять схемы является фундаментом, основой программирования.
Блок-схема — графическое представление алгоритма. Она состоит из функциональных блоков, которые выполняют различные назначения (ввод/вывод, начало/конец, вызов функции и т.д.).
Существует несколько основных видов блоков, которые нетрудно запомнить:
Сегодняшний урок я решила посвятить не только изучению блок-схем, но также и изучению линейных алгоритмов. Как Вы помните, линейный алгоритм — наипростейший вид алгоритма. Его главная особенность в том, что он не содержит никаких особенностей. Как раз это и делает работу с ним простой и приятной.
Данная задача не должна представлять особой трудности, так как построена она на хорошо известных всем нам формулах расчета площади и периметра прямоугольника, поэтому зацикливаться на выведении этих формул мы не будем.
Составим алгоритм решения подобных задач:
1) Прочитать задачу.
2) Выписать известные и неизвестные нам переменные в «дано». (В задаче №1 к известным переменным относятся стороны: a, b ;к неизвестным — площадь S и периметр P)
3) Вспомнить либо составить необходимые формулы. (У нас: S=a*b; P=2*(a+b))
4) Составить блок-схему.
5) Записать решение на языке программирования Pascal.
Запишем условие в более кратком виде.
Найти: S, P
Решение задачи №1Структура программы, решающей данную задачу, тоже проста:
- 1) Описание переменных;
- 2) Ввод значений сторон прямоугольника;
- 3) Расчет площади прямоугольника;
- 4) Расчет периметра прямоугольника;
- 5) Вывод значений площади и периметра;
- 6) Конец.
А вот и решение:
Program Rectangle; Var a, b, S, P: integer; Begin write("Введите стороны прямоугольника!"); readln(a, b); S:=a*b; P:=2*(a+b); writeln("Площадь прямоугольника: ", S); write("Периметр прямоугольника: ", P); End.
Задача №2: Скорость первого автомобиля — V1 км/ч, второго – V2 км/ч, расстояние между ними S км. Какое расстояние будет между ними через T часов, если автомобили движутся в разные стороны? Значения V1, V2, T и S задаются с клавиатуры.
Решение осуществляем, опять же, следуя алгоритму. Прочитав текст, мы переходим к следующему пункту. Как и во всех физических или математических задачах, это запись условий задачи:
Дано: V1, V2, S, Т
Найти: S1
Далее идет самая главная и в то же время самая интересная часть нашего решения – составление нужных нам формул. Как правило, на начальных стадиях обучения все необходимые формулы хорошо нам известны и взяты из других технических дисциплин (например, на нахождение площади различных фигур, на нахождение скорости, расстояния и т.п.).
Формула, используемая для решения нашей задачи, выглядит следующим образом:
Следующий пункт алгоритма – блок-схема:
Решение задачи №2.А также решение, записанное в Pascal:
Program Rasstoyanie; Var V1, V2, S, T, S1: integer; {Ввод } begin write("Введите скорость первого автомобиля: "); readln(V1); write("Введите скорость второго автомобиля: "); readln(V2); write("Введите время: "); readln(T); write("Введите расстояние между автомобилями: "); readln(S); S1:=(V1+V2)*T+S; writeln("Через ", t,"ч. расстояние ", S1," км."); End.
Вам может показаться, что две эти программы правильны, но это не так. Ведь сторона треугольника может быть 4.5, а не 4, а скорость машины не обязательно круглое число! А Integer — это только целые числа. Поэтому при попытке написать во второй программе другие числа выскакивает ошибка:
Обратите внимание в Паскале, как и в любом другом языке программирования десятичная дробь вводится с точкой, а не с запятой!
Чтобы решить эту проблему вам надо вспомнить какой тип в Pascal отвечает за нецелые числа. В мы рассматривали основные типы. Итак, это вещественный тип — Real. Вот, как выглядит исправленная программа:
Как видите, эта статья полезна для прочтения как новичкам, так и уже более опытными пользователям Pascal, так как составление блок-схем не только очень простое и быстрое, но и весьма увлекательное занятие.
Строго говоря, термина «блок-схема» не существует. Вместо этой фразы правильно говорить «схема алгоритма», но сейчас не об этом. Моя статья о том, можно ли быстро и удобно рисовать алгоритмы, при этом еще чтобы это было бесплатно. Было бы здорово, если бы существовал бесплатный аналог онлайн-редактора Gliffy, и он на наше счастье есть.
Алгоритмы в Pencil рисовать очень легко. Для этого имеется выделенная библиотека примитивов со стандартными блоками и соединителями. Выглядит это примерно так:
При рисовании блоков они привязываются автоматически к сетке, что позволяет легко их выравнивать. Нарисовав один блок, другой блок можно «примагнитить» к нему снизу или сбоку, всё при этом будет ровно.
Если навести на блок и кликнуть мышью один раз, будет режим изменения размера блока и перетаскивания. Если кликнуть второй раз, блок можно будет вращать (появятся круглые красные точки по краям).
Доступны основные базовые возможности, практически как в Visio: блоки можно объединять в группы, перетаскивать и копировать, располагать выше или ниже по слоям, магнитить коннекторы к центру и т.д.
Недостатки тоже присутствуют, например, не очень корректная работа углового соединителя: он иногда трансформируется в невообразимый зигзаг при попытке его выделить и перетащить. Но эти недостатки столь несущественны, что не помешали занять программе Pencil достойное место в моей коллекции повседневных инструментов разработчика.
Для визуализации этапов любого процесса удобно использовать блок-схемы. Они позволяют представить логическую цепочку в виде отдельных графических элементов, объединенных в нужном порядке.
Отличным способом быстро сделать блок-схему является использование специальных онлайн программ. Как они работают и какими особенностями обладают рассмотрим на примере трех русскоязычных редакторов.
Как нарисовать красивую диаграмму в Canva
О сайте Canva мы уже много раз рассказывали в своих статьях. Этот идеально подходит для создания инфографики, презентаций, афиш, наружной рекламы и др. Сегодня поговорим о том, как Канва поможет построить блок-схему онлайн.
Для начала стоит сказать, что из всех сервисов, которые мы сегодня рассмотрим, это единственный ресурс, позволяющий не просто создать четкую и структурированную схему, но и красиво ее оформить. Сайт предназначен скорее для дизайнеров, нежели математиков или программистов, поэтому если вам нужно, например, создать красочную диаграмму для презентации проекта или маркетинг-плана, то Канва – однозначно лучший помощник.
Для начала выбираем понравившийся шаблон среди десятков различных вариантов.
Удобно, что большая часть макетов здесь предоставляется бесплатно
Настроить здесь можно абсолютно все: начиная от шрифта надписей и заканчивая структурой изображения
Кроме того, есть возможность добавить красивые диаграммы
В этом же разделе также есть функция вставки созданного изображения на ваш интернет-ресурс. Достаточно просто скопировать фрагмент кода с диаграммой и вписать его в свой блог или сайт
Когда работа над блок-схемой закончена, нажимаем «Скачать».
Выбираем формат файла
К большим преимуществам использования Canva можно отнести то, что картинка по итогу сохраняется без каких-либо водяных символов.
Удобное построение логических цепочек с Draw . io
Еще одним бесплатным онлайн-сервисом, достойным вашего внимания, является Draw.io . Он считается одним из самых известных сайтов для создания схем, диаграмм, графиков и структур. Здесь так же, как и в Canva, есть возможность подключить русскоязычный интерфейс, что существенно облегчает процесс.
Перед началом работы нам предлагают выбрать место для сохранения готового результата, а также определиться с макетом.
Спасибо Draw.io за удобное структурирование шаблонов – все они распределены по категориям, что позволяет выбирать нужный вариант максимально быстро
Переходим к редактированию. Для изменения элемента достаточно щелкнуть по нему кнопкой мыши, после чего справа отображаются характеристики стиля, текста и расположения.
По сравнению с предыдущим сервисом, настройки здесь кажутся немного примитивными, но тем не менее присутствуют все необходимые параметры
Чтобы заменить фигуру, выбираем подходящий объект на левой панели и перетаскиваем его на нужное место. Удобно, что при перемещении элементов все прикрепленные к ним стрелочки автоматически меняют свое положение.
Также есть возможность вставить в документ уже готовую схему или другое изображение, импортировав его с компьютера, облачного хранилища или интернет-ресурса
Для сохранения результата нажимаем «Файл» – «Сохранить как», после чего нам предлагают следующие варианты:
- Google Drive;
- OneDrive;
- Dropbox;
- GitHub;
- Trello;
- компьютер;
- браузер.
Готовый файл скачивается в формате.xml.
Google chart – мощный инструмент для разработчиков
И наконец завершает наш список рекомендаций Google chart API . Он представляет собой библиотеку фрагментов кода, при встраивании которых на вашем сайте появляются красивые диаграммы, графики, структуры, таблицы и др.
Выбираем нужную категорию
На примере мы видим, как будет выглядеть схема, если не изменять основную суть кода
После копирования и вставки на свой сайт нам нужно ввести соответствующие данные вместо тех, что указаны в примере. Это несложно, учитывая, что в коде есть много полезных комментариев и уточнений.
Для опытных программистов Google chart API станет незаменимым помощником, ведь он предлагает широкий набор дополнительных инструментов для эффектных визуализаций. Если вы не слишком уверенный разработчик, то можете использовать стандартные варианты – они тоже смотрятся вполне достойно.
Все рассмотренные нами программы абсолютно разные, поэтому выделить из них самую удобную невозможно. Все зависит от ваших целей и пожеланий. Если вам необходимо получить красивый графический продукт, то лучше Canva с этим не справится ни один сайт. Если нужна минималистичная схема без особых изысков – на помощь придет Draw.io. Если хотите прописать код для своей диаграммы – используйте Google chart API.
В случае, если вам потребуется создать блок-схему без использования интернета, можете сделать это в Word 2016. Процесс будет не таким удобным и быстрым, как в случае с онлайн-программами, т.к. здесь нет никаких заготовок и шаблонов. Все элементы и связи между ними придется отрисовывать с нуля, так что запаситесь терпением.
Блок-схема является вариантом формализованной записи алгоритма или процесса. Каждый шаг алгоритма в данном представлении изображается в виде блоков различной формы, которые соединены между собой линиями. В блок-схеме можно отобразить все этапы решения любой задачи, начиная с ввода исходных данных, обработки операторами, выполнения цикличных и условных функций, и заканчивая операциями вывода результирующих значений.
Инструкция
Как правило, вначале алгоритма производится ввод исходных данных для решения поставленной задачи. Нарисуйте параллелограмм ниже линии так, чтобы он непрерывным продолжением схемы. В параллелограмме напишите производимое действие, обычно это операции данных с экрана (Read nInp) или других устройств. Важно, что введенные вами переменных в данном шаге будут использоваться в дальнейшем во всем теле блок-схемы.
Выполнение одной или группы операций, любая обработка данных (изменение значения или формы представления) обозначается в виде прямоугольника. Нарисуйте данную фигуру в нужном месте алгоритма при составлении блок-схемы. Внутри прямоугольника запишите производимые действия , например, операция присваивания записывается следующим образом: mOut = 10*nInp b + 5. Далее также для продолжения блок-схемы нарисуйте линию вниз.
Важной составляющей любого алгоритма и соответственно блок-схемы являются условные и цикличные операторы. У данных операторов один вход и два и или более альтернативных выхода. После вычисления условия, заданного оператором, дальнейший переход осуществляется лишь по одному пути. Нарисуйте вход в элемент в виде линии входящей в верхнюю вершину элемента.
Для задания оператора условия нарисуйте от данной линии ромб. Внутри фигуры укажите само условие и проведите линии, указывающие дальнейший переход в зависимости от его выполнения. Условие задается в общем случае операциями сравнения (>, <, =). Переход по линии вниз осуществляется при истинном условии, назад – при ложном. Укажите около выходных линий фигуры результаты условия (true, false). Невыполнение условия (false) возвращает к определенному шагу выше по телу алгоритма. Проведите линии под прямым углом от выхода с условия и до нужного оператора.
На этом уроке мы на практике разберём: как составлять алгоритмы различных типов , а также как «читать» алгоритм по готовой блок-схеме .
Возможны следующие ситуации: в тот момент, когда мы подошли к дороге горел красный или зелёный свет. Если горел зелёный свет, то можно переходить дорогу. Если же горел красный свет, то необходимо дождаться зелёного - и уже тогда переходить дорогу.
Таким образом, алгоритм имеет следующий вид:
- Подойти к светофору.
- Посмотреть на его свет.
- Если горит зелёный, то перейти дорогу.
- Если горит красный, то подождать, пока загорится зелёный, и уже тогда перейти дорогу.
Блок-схема данного алгоритма имеет вид:
Рис. 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 фигур;
- Составь блок-схему циклического алгоритма выполнения домашнего задания;