Как сделать линейный алгоритм
Повседневная жизнь каждого человека заключается в решении огромного количества задач различной сложности на работе или во время учебы. Некоторые задачи являются настолько простыми, что при их выполнении мы делаем определенные действия автоматически, даже не задумываясь. Решение любой задачи, даже самой простой, как правило, осуществляется последовательно за несколько шагов. Такого рода последовательность при решении задач называется алгоритмом. Сегодня мы рассмотрим, что такое линейные алгоритмы, как изображается их структура, как осуществляется их решение и программирование.
Алгоритмический язык
Это понятие представляет собой точное предписание для исполнителя совершить определенную последовательность действий, которая направляется на решение поставленной задачи.
Данный язык является средством описания алгоритмов, которые ориентированы обычно на пользователя.
Если говорить на компьютерном языке, так обозначается точное предписание, определяющее вычислительный процесс. Он, в свою очередь, ведет от начальных данных, которые варьируются, к исходному результату.
Свойства алгоритма
Среди свойств выделяют:
Линейные алгоритмы. Информатика 9 класса
Мы уже рассмотрели определения и свойства данного понятия. Теперь поговорим о его видах:
Нас интересуют линейные алгоритмы. Что они собой представляют? Они содержат команды, которые должны выполняться одна за другой в четкой последовательности.
Линейная структура алгоритма может быть записана в словесной и графической форме.
Приведем такой пример, записанный в словесной форме. Итак, задача: соберись в школу. Решение:
Графическая форма вышеописанного процесса будет предсатвлять собой следующее:
Линейный алгоритм в виде блок-схемы
Блок-схема представляет собой иллюстративное изображение алгоритма, при котором каждый отдельный этап изображается с помощью блоков, представленных в виде разнообразных геометрических фигур. К тому же связь между этапами (иными словами, последовательность поэтапного выполнения) обозначается с помощью стрелок, которые соединяют фигуры (блоки). Каждый блок сопровождается надписью. Для типичных действий в линейном алгоритме используются следующие геометрические фигуры:
Вот с помощью таких блок-схем изображается решение линейных алгоритмов. Далее поговорим об особенностях присваивания значений.
Линейные вычислительные алгоритмы
Основное элементарное действие в вычислительном алгоритме – это присваивание переменной величине определенного значения. В случае, когда значение константы определяется видом ее записи, переменная величина получит конкретное значение исключительно в результате присваивания. Это может быть выполнено с помощью двух способов: при помощи команды присваивания; при помощи команды ввода.
Пример решения линейного алгоритма
Приведем пример описания правил деления обыкновенных дробей с помощью линейного алгоритма, которые в школьных учебниках имеют такое содержание:
Итак, построим для ЭВМ алгоритм деления дробей. Чтобы не запутаться, будем использовать для переменных те самые обозначения, что и в формуле, которая была указана выше. а, b, с, d– исходные данные в виде целочисленных переменных. Результатом также будут целые величины. Решение на алгоритмическом языке будет следующим:
алг Деление дробей
цел а, b, с, d, m, n
Графическая форма решения
Схема линейного алгоритма, описанного выше, выглядит так:
Команда присваивания значения имеет следующий формат:
Знак «:=» читается как присвоить.
Присваивание – это команда, которая необходима для выполнения компьютером следующих действий:
Приведенный выше алгоритм содержит две команды в качестве присваивания. В блок-схеме команду присваивания нужно записывать в прямоугольнике, который называется вычислительным блоком.
Когда описываются линейные алгоритмы, нет особой необходимости в обязательном соблюдении строгих правил при записи выражений. Можно их записывать с помощью обычной математической формы. Ведь это не строгий синтаксис языка программирования.
В приведенном примере алгоритма есть также команда ввода:
Команда ввода в блок-схеме записывается в параллелограмме, то есть в блоке ввода-вывода. Выполняя эту команду, процессор прерывает работу, пока пользователь не осуществит определенные действия. А именно: пользователю нужно на устройстве ввода (клавиатуре) набрать вводимые переменные (их значения) и нажать Enter, которая выступает клавишей ввода. Важно, чтобы значения вводились в таком же порядке, что и расположенные в списке ввода соответствующие переменные.
Линейный алгоритм. Его программирование
Как уже говорилось в начале статьи, линейные программы могут включать такие операторы:
То есть с помощью перечисленных операторов осуществляется программирование линейных алгоритмов.
Итак, оператор присваивания на программном языке записывается так:
LET А = В, где А – переменная, В – выражение. Например, А = У + 20.
Оператор ввода имеет следующий вид:
INPUT, к примеру: INPUT С
Оператор вывода данных, значений, записывается в таком виде:
PRINT. К примеру PRINT С.
Приведем простой пример. Нам нужно написать программу, которая будет находить сумму вводимых с клавиатуры чисел А и В.
На языке программирования мы получим программу, текст которой изображен ниже.
Операторы ввода, вывода в языке программирования Паскаль
Паскаль не выделяет специальных операторов, обозначающих операции ввода или вывода, которые используют линейные алгоритмы. В программах обмен информацией осуществляется с помощью встроенных процедур. Поскольку нет нужды в предварительном описании стандартной процедуры, она доступна каждой программе, содержащей обращение к ней. Также названием упомянутой процедуры не выступает какое-либо зарезервированное слово.
При вводе данных используют такие операторы для обращения к стандартной процедуре ввода данных, которая уже встроена в программу.
Read (А, В, С), где А, В, С – переменные, которые нужно ввести в оперативную память для запоминания.
Readlnn (х1, у, х2) – закончив ввод, курсор переходит на начало новой строки.
Вывод на экран монитора данных осуществляется с помощью таких операторов:
Write (А, В, С) – указав значения А, В, С в одной строке, курсор не покидает текущей строки.
Writeln (z, у, z2) – закончив вывод значений, курсор в данной позиции перейдет на новую строку.
Вот с помощью таких простых операторов и осуществляется ввод и вывод данных в языке Паскаль.
Линейный алгоритм. Понятие и особенности. Блок-схема
Каждый человек на протяжении своей жизни решает множество задач разной сложности. Но даже самые простые из задач выполняются последовательно, то есть за несколько шагов. Эту последовательность можно назвать алгоритмом. Последовательности бывают разные, но начинать их изучение лучше всего с линейных.
Прежде чем приступить к рассмотрению основной темы статьи, следует сделать краткое отступление и сказать несколько слов про алгоритмический язык.
Алгоритмический язык
Представьте, что человеку, работающему за компьютером, поставлена некая вычислительная задача. В языке программирования решение этой задачи выполняется с помощью алгоритмизации. Решение предполагает: — разбиение на этапы; — разработку алгоритма; — составление программы решения на алгоритмическом языке; — ввод данных; — отладку программы (возможны ошибки — их надо исправить); — выполнение на ПК; — анализ результатов.
Алгоритмический язык является средством описания алгоритмов, а уже алгоритм, в свою очередь, представляет собой чёткое описание определённой последовательности действий, направленных на решение необходимой задачи.
Свойства алгоритма
Их несколько: — конечность. Любой алгоритм должен быть завершённым, а окончание наступает после выполнения определённого числа шагов; — однозначность, понятность. Не допускается разных толкований, неопределённости и двусмысленности — всё должно быть чётко и ясно, а также понятно исполнителю — и правила выполнения действий линейного алгоритма, и сами действия; — результативность. Итог работы — результат, полученный за конечное число шагов; — универсальность, массовость. Качественный алгоритм способен решать не одну задачу, а целый класс задач, имеющих схожую постановку/структуру.
Линейная структура
Любой алгоритм составляется из ряда базовых структур. Простейшей базовой структурой является следование — структура с линейными характеристиками. Из этого можно сформулировать определение.
Линейный алгоритм — это алгоритм, образуемый командами, которые выполняются однократно и именно в той последовательности, в которой записаны. Линейная структура, по сути, проста. Записать её можно как в текстовой, так и в графической форме.
Представим, что у нас стоит задача пропылесосить ковёр в комнате. В текстовой форме алгоритм будет следующим: — принести пылесос к месту уборки; — включить; — пропылесосить; — выключить; — унести пылесос.
И каждый раз, когда нам надо будет пылесосить, мы будем выполнять один и тот же алгоритм.
Теперь поговорим про графическую форму представления.
Блок-схема
Для изображения алгоритма графически используют блок-схемы. Они представляют собой геометрические фигуры (блоки), соединённые стрелками. Стрелки показывают связь между этапами и последовательность их выполнения. Каждый блок сопровождается надписью.
Рассмотрим фигуры, которые используются при визуализации типичной линейной последовательности.
Блок ввода-вывода данных (отображает список вводимых и выводимых переменных):
Арифметический блок (отображает арифметическую операцию/группу операций):
Условный блок (позволяет описать условие). Алгоритмы с таким блоком используются при графической визуализации алгоритмов с ветвлением:
Условного блока нет в классическом линейном алгоритме, так как в нём, как уже было сказано ранее, все операции выполняются последовательно, то есть одна за другой. В линейном алгоритме размещение блоков выглядит следующим образом:
А вот, как решается задача по нахождению площади треугольника по формуле Герона. Здесь a, b, c – это длины сторон, S – площадь треугольника, P – периметр.
Следует обратить внимание, что запись «=» — это не математическое равенство, а операция присваивания. В результате этой операции переменная, стоящая слева от оператора, получает значение, которое указано справа. Значение не обязательно должно быть сразу определено (a = 3) — оно может вычисляться посредством выражения (a = b + z), где b = 1, a z = 2.
Примеры линейных алгоритмов
Если рассмотреть примеры решения на языке Pascal (именно этот язык до сих пор используется для изучения основ алгоритмизации и программирования), то можно увидеть следующую картину:
И, соответственно, блок-схема программы линейной структуры будет выглядеть следующим образом:
Как составить программу линейной структуры?
Порядок следующий: — определите, что именно относится к исходным данными, а также каков типы/класс этих данных, выберите имена переменных; — определите, каков тип данных будет у искомого результата, выберите название переменных (переменной); — определите, какие математические формулы связывают результат и исходные данные; — если требуется наличие промежуточных данных, определите класс/типы этих данных и выберите имена; — опишите все используемые переменные; — запишите окончательный алгоритм. Он должен включать в себя ввод данных, вычисления, вывод результатов.
На этом всё, в следующий раз рассмотрим на примерах программу разветвлённой структуры. Если же вас интересует тема алгоритмизации в контексте разработки программного обеспечения, ждём вас на профессиональном курсе OTUS!
Содержание урока
Линейные вычислительные алгоритмы
Линейные вычислительные алгоритмы
Присваивание. Свойства присваиванияПоскольку присваивание является важнейшей операцией в алгоритмах, работающих с величинами, поговорим о ней более подробно.
Присваивание производится компьютером при выполнении одной из двух команд из представленной выше системы команд: команды присваивания или команды ввода. Рассмотрим последовательность выполнения четырех команд присваивания, в которых участвуют две переменные: а и b. В приведенной ниже таблице против каждой команды указываются значения переменных, которые устанавливаются после ее выполнения. Такая таблица называется трассировочной таблицей, а процесс ее заполнения называется трассировкой алгоритма. Прочерк в таблице означает неопределенное значение переменной. Конечные значения, которые получают переменные а и b, соответственно равны 2 и 4. Этот пример иллюстрирует три основных свойства присваивания. Вот эти свойства: 1) пока переменной не присвоено значение, она остается неопределенной; 2) значение, присвоенное переменной, сохраняется вплоть до выполнения следующего присваивания этой переменной нового значения; 3) новое значение, присвоенное переменной, заменяет ее предыдущее значение. Обмен значениями двух переменныхРассмотрим еще один очень полезный алгоритм, с которым при программировании часто приходится встречаться. Даны две переменные величины: X и Y. Требуется произвести между ними обмен значениями. Например, если первоначально было: X = 1; Y = 2, то после обмена должно стать: X = 2, Y = 1. Хорошим аналогом для решения такой задачи является следующая: даны два стакана, в первом — молоко, во втором — вода; требуется произвести обмен их содержимым. Всякому ясно, что в этом случае нужен дополнительный, третий, пустой стакан. Последовательность действий будет следующей: 1) перелить из 1-го стакана в 3-й; 2) перелить из 2-го стакана в 1-й; 3) перелить из 3-го стакана во 2-й. По аналогии для обмена значениями двух переменных нужна третья дополнительная переменная. Назовем ее Z. Тогда задача решается последовательным выполнением трех операторов присваивания (пусть начальные значения 1 и 2 для переменных X и Y задаются вводом): Действительно, в итоге переменные X и Y поменялись значениями. На экран будут выведены значения X и Y: 2,1. В трассировочной таблице выводимые значения выделены жирным шрифтом. Аналогия со стаканами не совсем точна в том смысле, что при переливании из одного стакана в другой первый становится пустым. В результате же присваивания (Х:=Y) переменная, стоящая справа (Y), сохраняет свое значение. Описание линейного вычислительного алгоритмаАлгоритмы, результатами выполнения которых являются числовые величины, будем называть вычислительными алгоритмами. Рассмотрим пример решения следующей математической задачи: даны две простые дроби; получить дробь, являющуюся результатом деления одной на другую. В школьном учебнике математики правила деления обыкновенных дробей описаны так: 1. Числитель первой дроби умножить на знаменатель второй. 2. Знаменатель первой дроби умножить на числитель второй. 3. Записать дробь, числителем которой является результат выполнения пункта 1, а знаменателем — результат выполнения пункта 2. В алгебраической форме это выглядит следующим образом: Теперь построим алгоритм деления дробей для компьютера. В этом алгоритме сохраним те же обозначения для переменных, которые использованы в записанной выше формуле. Исходными данными являются целочисленные переменные а, b, с, d. Результатом — также целые величины m и n. Ниже алгоритм представлен в двух формах: в виде блок-схемы и на Алгоритмическом языке (АЯ). Раньше прямоугольник в схемах алгоритмов управления мы называли блоком простой команды. Для вычислительных алгоритмов такой простой командой является команда присваивания. Прямоугольник будем называть блоком присваивания, или вычислительным блоком. В форме параллелограмма рисуется блок ввода/вывода. Полученный алгоритм имеет линейную структуру (рис. 2.1). В алгоритме на АЯ строка, стоящая после заголовка алгоритма, называется описанием переменных. Служебное слово цел означает целый тип. Величины этого типа могут иметь только целочисленные значения. Описание переменных имеет вид: Список переменных включает все переменные величины данного типа, обрабатываемые в алгоритме. В блок-схемах типы переменных не указываются, но подразумеваются. Запись алгоритма на АЯ ближе по форме к языкам программирования, чем блок-схемы. Коротко о главномОсновные свойства присваивания: • значение переменной не определено, если ей не присвоено никакого значения; • новое значение, присваиваемое переменной, заменяет ее старое значение; • присвоенное переменной значение сохраняется в ней вплоть до нового присваивания. Обмен значениями двух переменных можно производить через третью дополнительную переменную. Трассировочная таблица используется для «ручного» исполнения алгоритма с целью его проверки. В алгоритмах на АЯ указываются типы всех переменных. Такое указание называется описанием переменных. Числовые величины, принимающие только целочисленные значения, описываются с помощью служебного слова цел (целый). Вопросы и задания1. Из каких команд составляется линейный вычислительный алгоритм? 2. Что такое трассировка? Как она производится? 3. В каком случае значение переменной считается неопределенным? 4. Что происходит с предыдущим значением переменной после присваивания ей нового значения? 5. Как вы думаете, можно ли использовать в выражении оператора присваивания неопределенную переменную? К каким последствиям это может привести? 6. Напишите на АЯ алгоритм сложения двух простых дробей (без сокращения дроби). 7. Напишите на А Я алгоритм вычисления у по формуле где х — заданное целое число. Учтите следующие ограничения: 1) в арифметических выражениях можно использовать только операции сложения, вычитания и умножения; Выполните трассировку алгоритма при х = 2. 8. Пользуясь ограничениями предыдущей задачи, напишите наиболее короткие алгоритмы вычисления выражений: Постарайтесь использовать минимальное количество дополнительных переменных. Выполните трассировку алгоритмов. Запишите алгоритм циклического обмена значениями трех переменных А, В, С. Схема циклического обмена: Например, если до обмена было: А = 1, В = 2, С = 3, то после обмена должно стать: А = 3, В = 1, С = 2. Выполните трассировку. Следующая страница
|