Линейная алгоритмическая конструкция команда присваивания примеры реферат

Обновлено: 05.07.2024

Каждый человек на протяжении своей жизни решает множество задач разной сложности. Но даже самые простые из задач выполняются последовательно, то есть за несколько шагов. Эту последовательность можно назвать алгоритмом. Последовательности бывают разные, но начинать их изучение лучше всего с линейных.

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

Алгоритмический язык

Алгоритмический язык является средством описания алгоритмов, а уже алгоритм, в свою очередь, представляет собой чёткое описание определённой последовательности действий, направленных на решение необходимой задачи.

Свойства алгоритма

Их несколько: — конечность. Любой алгоритм должен быть завершённым, а окончание наступает после выполнения определённого числа шагов; — однозначность, понятность. Не допускается разных толкований, неопределённости и двусмысленности — всё должно быть чётко и ясно, а также понятно исполнителю — и правила выполнения действий линейного алгоритма, и сами действия; — результативность. Итог работы — результат, полученный за конечное число шагов; — универсальность, массовость. Качественный алгоритм способен решать не одну задачу, а целый класс задач, имеющих схожую постановку/структуру.

Линейная структура

Любой алгоритм составляется из ряда базовых структур. Простейшей базовой структурой является следование — структура с линейными характеристиками. Из этого можно сформулировать определение.

Линейный алгоритм — это алгоритм, образуемый командами, которые выполняются однократно и именно в той последовательности, в которой записаны. Линейная структура, по сути, проста. Записать её можно как в текстовой, так и в графической форме.

Представим, что у нас стоит задача пропылесосить ковёр в комнате. В текстовой форме алгоритм будет следующим: — принести пылесос к месту уборки; — включить; — пропылесосить; — выключить; — унести пылесос.

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

Теперь поговорим про графическую форму представления.

Блок-схема

Для изображения алгоритма графически используют блок-схемы. Они представляют собой геометрические фигуры (блоки), соединённые стрелками. Стрелки показывают связь между этапами и последовательность их выполнения. Каждый блок сопровождается надписью.

Рассмотрим фигуры, которые используются при визуализации типичной линейной последовательности.

Screenshot_1-1801-a35d16.jpg

Блок ввода-вывода данных (отображает список вводимых и выводимых переменных):

Screenshot_2-1801-52cab0.jpg

Арифметический блок (отображает арифметическую операцию/группу операций):

Screenshot_3-1801-df500e.jpg

Условный блок (позволяет описать условие). Алгоритмы с таким блоком используются при графической визуализации алгоритмов с ветвлением:

Screenshot_4-1801-3103cc.jpg

Условного блока нет в классическом линейном алгоритме, так как в нём, как уже было сказано ранее, все операции выполняются последовательно, то есть одна за другой. В линейном алгоритме размещение блоков выглядит следующим образом:

Screenshot_5-1801-f1511b.jpg

А вот, как решается задача по нахождению площади треугольника по формуле Герона. Здесь a, b, c – это длины сторон, S – площадь треугольника, P – периметр.

Screenshot_6-1801-c010e2.jpg

Примеры линейных алгоритмов

Если рассмотреть примеры решения на языке Pascal (именно этот язык до сих пор используется для изучения основ алгоритмизации и программирования), то можно увидеть следующую картину:

Screenshot_7-1801-f9ba66.jpg

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

Как составить программу линейной структуры?

Порядок следующий: — определите, что именно относится к исходным данными, а также каков типы/класс этих данных, выберите имена переменных; — определите, каков тип данных будет у искомого результата, выберите название переменных (переменной); — определите, какие математические формулы связывают результат и исходные данные; — если требуется наличие промежуточных данных, определите класс/типы этих данных и выберите имена; — опишите все используемые переменные; — запишите окончательный алгоритм. Он должен включать в себя ввод данных, вычисления, вывод результатов.

На этом всё, в следующий раз рассмотрим на примерах программу разветвлённой структуры. Если же вас интересует тема алгоритмизации в контексте разработки программного обеспечения, ждём вас на профессиональном курсе OTUS!


Конспект по информатике "Алгоритмические конструкции" для самостоятельного изучения и подготовки к контрольным работам, экзаменам и ГИА.

Алгоритмические конструкции

Код ОГЭ: 1.3.2. Алгоритмические конструкции

Различают три основных вида алгоритмов (базовые алгоритмические конструкции, или структуры): линейные, с разветвлениями и с циклами.

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

Алгоритм, предписывающий одноразовое выполнение одной и той же последовательности действий при любых допустимых входных данных, называется линейным (линейной структурой). Использование этой структуры возможно только для простых задач.

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

Алгоритм, предписывающий выполнение тех или других действий в зависимости от результата проверки условия, называется разветвленным (структурой ветвления).

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

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

Алгоритм, предписывающий повторное выполнение действий, называется циклическим алгоритмом (алгоритмом с повторением, или структурой цикла).

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

Наличие возврата к ранее произведенным действиям является характерным отличием алгоритмов с циклами от линейных и разветвленных.

Линейные алгоритмические конструкции

В блок–схемах линейные алгоритмы представляют с помощью последовательности функциональных блоков:


В алгоритмическом языке линейным структурам соответствует последовательность команд языка:

Команда 1
Команда 2
Команда 3

У линейной структуры только один вход и только один выход, попасть извне в середину выполняемой последовательности команд невозможно.

Пример 1. Определить значение целой переменной n после выполнения следующего алгоритма:
m := 3
n := 4
m := 6 + m*n
n := n + m/3

Решение. Первые две команды присваивания определяют начальные значения переменных. Для выполнения третьей команды сначала надо вычислить правую часть выражения: 6 + 3 х 4 = 18. Это значение будет присвоено переменной m. Для выполнения последней команды также сначала вычисляется правая часть выражения: 4 + 18/3 = 10. Результат будет присвоен переменной п.

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

Пример 2. Вычислить значение выражения x 2 – 3 × х – 10, используя только операции сложения и умножения.

Для решения задачи в той последовательности, что определяет само выражение, потребуется 2 операции умножения, 2 вычитания и 3 переменных (х, y, z). Однако можно вычислить то же выражение как (х — 2) × х – 10. Такой алгоритм расчета потребует 1 умножение, 2 вычитания и 2 переменных (х, у).


Решение.

Алгоритмические конструкции ветвления

Для отображения базовой алгоритмической конструкции ветвления в блок–схемах используется альтернативный (условный) блок (фигура ромб), а в алгоритмических языках — команда если.

Существует две реализации структуры ветвления: полная и неполная (краткая). Обе формы ветвления являются замкнутыми: каждая из них имеет один вход и один выход.


Таким образом, полная форма команды если определяет две ветви команд: первая выполняется, если условие истинно, вторая — если условие ложно. Каждая ветвь в итоге ведет к общему выходу, так что работа алгоритма будет продолжаться при выборе любого пути.

Краткая форма ветвления предполагает, что в случае истинности условия будет выполнена команда 1, а иначе — никакие действия не выполняются.

если 2/х ≠ 0
то y := 2/x
всё


Пример 5. Для приведенного фрагмента блок–схемы алгоритма выбрать соответствующий ему фрагмент на алгоритмическом языке.

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

Структура ветвления выбор предполагает поочередную проверку нескольких условий (одно за одним). Если проверяемое условие 1 истинно, выполняется команда 1, если нет — переходят к проверке следующего условия. Если второе условие истинно — выполняется команда 2, если нет — проверяют следующее условие и т. д.



and (логическое И),
or (логическое ИЛИ),
xor (исключающее ИЛИ),
not (отрицание).

Например, чтобы задать условие принадлежности числовой величины Z промежутку (10;20), следует записать составное условие Z > 10 and Z Циклические конструкции

Базовая структура цикл (или повторение) обеспечивает многократное выполнение одних и тех же команд. Существует несколько разновидностей циклических структур. Любая из них содержит тело цикла (набор повторяющихся команд) и заголовок цикла, который определяет количество повторений тела цикла.

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


Пример 6. Записать на алгоритмическом языке алгоритм получения остатка от деления целого числа а на целое число b с помощью вычитания.


Решение. Если число а меньше b, то остатком от деления служит само число а. В ином случае необходимо вычитать b из числа а до тех пор, пока результат не станет меньше b — он и будет остатком от деления.



Решение.

Эта структура предписывает повторять команды тела цикла для всех значений некоторой переменной (параметра, или счетчика цикла).


Имя параметра цикла (счетчика) указывают в заголовке после служебного слова для. Затем с помощью служебных слов от и до задают начальное и конечное значение этого параметра.

Цикл со счетчиком всегда выполняется i1 – i2 + 1 раз.

Пример 8. Записать алгоритм вычисления факториала числа N.


Решение. Факториал числа вычисляется по формуле N! = 1 × 2 × … × N. Следовательно, для расчета факториала надо организовать цикл со счетчиком, в котором перемножить последовательные целые числа от 2 до N. Значение 1!, равное 1, можно присвоить результирующей переменной до цикла.

Таблицы и массивы

■ Массив — конечный набор пронумерованных однотипных данных, имеющий имя.

Величины, которые входят в массив, называются его элементами. Количество элементов массива называется его размерностью.

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

Имя массива (таблицы) относится ко всему набору данных. Элементы массива различают по порядковому номеру, который называется индексом. Для обращения к элементу его индекс указывают в квадратных скобках сразу вслед за именем массива. Например, если массив имеет имя D, то третий его элемент обозначается D[3]. Такие имена называются индексированными именами. Индексы могут быть не только константами, но и переменными или целочисленными выражениями: D[j], D[k+1].

Различают одномерные и многомерные массивы.

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

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


Одномерная таблица, содержащая расстояния от Солнца до планет Солнечной системы (в астрономических единицах), может выглядеть как табличная строка:

Названия планет в этой таблице отсутствуют (иначе они бы образовали вторую строку). Чтобы узнать расстояние от Солнца до Марса, надо обратиться к четвертому элементу этой таблицы. Если, например, в программе такой массив расстояний от Солнца был поименован как Dist, то для обращения к 4–му элементу массива надо указать Dist[4].


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

В отличие от индексированных элементов массива обычные переменные иногда называют скалярными.

Для описания таблицы в алгоритмическом языке используется служебное слово таб. Необходимо указать по порядку: тип элементов таблицы, служебное слово таб, имя таблицы, а затем в квадратных скобках через двоеточие начальный и конечный номера элементов таблицы.

Общий вид описания таблицы:
тип элементов таб имя таблицы [наименьший индекс : наибольший индекс]

Например, для описания таблицы расстояний от Солнца необходимо учесть, что в ней содержатся нецелые числа, следовательно, тип данных таблицы — вещественный, и количество элементов равно 9:
вещ таб Dist[1:9]

Для присвоения значений элементам таблицы (массива) используют операторы присваивания или процедуру ввода данных, как и для обычных переменных.


Например, присвоение значений элементам таблицы Dist можно описать на алгоритмическом языке следующим образом:

Зачастую ввод данных в массив или задачи их обработки связаны с перебором элементов массива. Для этих целей обычно используют циклы с параметром (со счетчиком). В теле цикла индекс массива обозначают переменной, и эта же переменная выступает в роли параметра (счетчика) цикла. Для параметра в заголовке цикла указывают перечень значений индекса массива. Например, если необходимо обработать все 20 значений массива Т, то следует записать цикл нц для i от 1 до 20 … кц и в теле цикла задать обработку для элемента T[i].

Пример 10. По данным о территории некоторых стран Европы (см. первую строку примера многомерной таблицы) рассчитать суммарную площадь этих стран.

Решение. В алгоритме необходимо предусмотреть ввод вещественных данных в таблицу (например, Terr) из 9 элементов. Для будущего суммарного результата необходимо отвести переменную (например, S), первоначально присвоить этой переменной нулевое значение. Затем организовать цикл с параметром, изменяющимся от 1 до 9 (количество элементов в таблице) и поочередно сложить предыдущее значение S с очередным элементом таблицы Terr[i]. Завершить алгоритм выводом результата.


Команда присваивания является одной из основных команд в алгоритмах работы с величинами. То есть величина получает своё значение путём выполнения команды присваивания. На этом уроке учащиеся узнают, для чего применяется команда присваивания при записи алгоритмов, а также разберутся со свойствами присваивания.


В данный момент вы не можете посмотреть или раздать видеоурок ученикам

Чтобы получить доступ к этому и другим видеоурокам комплекта, вам нужно добавить его в личный кабинет, приобретя в каталоге.

Получите невероятные возможности




Конспект урока "Объекты алгоритмов. Команда присваивания"

· Применение команды присваивания при записи алгоритмов;

Команда присваивания является одной из основных команд в алгоритмах работы с величинами. То есть величина получает своё значение путём выполнения команды присваивания.


Операция присваивания обозначается знаком двоеточие равно, произносится – присвоить и записывается следующим образом: имя переменной присвоить выражение.


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


Давайте разберёмся, что означает запись


Данную запись можно пояснить так:

В ящик с надписью h надо положить двенадцать, например, мячей. После выполнения этой команды h=12.


То есть команда m:=n означает, что мы должны присвоить переменной m такое же значение, какое имеет величина n, при этом значение второй величины n не изменится.

Нельзя путать знак присваивания со знаком равенства, так, например, при выполнении следующей команды присваивания z:=z+1, величина z станет равной предыдущему значению z, увеличенному на 1. Ясно, что использование в этой записи знака равенства недопустимо, так как никакое z не равно z+1.

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

Так, Никлаус Вирт утверждал:

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

Теперь разберёмся с основными свойствами команды присваивания.

Рассмотрим пример. Нам необходимо заполнить таблицу и выяснить чему равны начальные и конечные значения переменных а и b.

Итак, первая команда а :=1. Значит значение переменной а=1 стало равным единице. Переменной b пока не присвоено значения, поэтому она остаётся неопределённой.

Эта особенность является первым свойством присваивания.

То есть, пока переменной не присвоено значение, она остаётся неопределённой;

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

Эта особенность является вторым свойством присваивания.

То есть, значение, присвоенное переменной, сохраняется вплоть до выполнения следующего присваивания этой переменной нового значения;

Переменной b:=2*1. То есть значение переменной b=2.

Заполним следующую строку. Переменной а присваиваем значение переменной b. Значение b=2, следовательно, а =2.

Эта особенность является третьим свойством присваивания.

То есть, новое значение, присвоенное переменной, заменяет её предыдущее значение.

Значение переменной b по второму свойству сохраняется. При заполнении последней строки сохраняется значение переменной а.

Переменной b:=a+b. a=2 и b=2. Получаем значение b=4.

В задании необходимо было выяснить, чему равны начальные и конечные значения переменных а и b. Начальное значение переменной а =1, а переменной b=2. Конечные значения, которые получают переменные а и b, соответственно равны 2 и 4.

Таким образом основные особенности команды присваивания таковы:

1. Пока переменной не присвоено значение, она остаётся неопределённой;

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

3. Новое значение, присвоенное переменной, заменяет её предыдущее значение.

Рассмотрим последовательность выполнения команды присваивания:

в первую очередь вычисляется значение выражения, затем результат вычисления присваивается переменной, стоящей слева от знака присваивания.

Например, пусть начальное значение переменной k=1.

После вычисления значения выражения мы присваиваем переменной k:=24,5.

Также важно отметить что, необходимо чтобы тип выражения был совместим с типом соответствующей переменной.

Перейдём к практической части урока.

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


Итак, после выполнения первой команды присваивания k=4. После выполнения второй команды k=20, после третьей k=30, четвёртой – k=10 и пятой – k=0.

То есть, обратите внимание, после присваивания величине нового значения старое забывается.

Следующее задание. Необходимо ответить на вопрос: какое минимальное количество промежуточных переменных потребуется для того, чтобы переменной k было присвоено значение переменной m, переменной m — значение переменной n, а переменной n — значение переменной k? И записать соответствующий алгоритм на алгоритмическом языке.

Для того чтобы правильно решить данную задачу воспользуемся аналогией. Пусть имеются три коробки оранжевого, голубого и зелёного цвета. В этих коробках лежат шарики. В оранжевой коробке лежат шарики зелёного цвета, в голубой коробке лежат шарики оранжевого цвета, а в зелёной коробке – шарики голубого цвета. Необходимо переложить шарики так, чтобы цвета совпали.


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


Пересыпаем голубые шарики из зелёной коробки в дополнительную. Теперь мы можем пересыпать зелёные шарики из оранжевой коробки в зелёную коробку.


Следующий шаг. Пересыпаем оранжевые шарики из голубой коробки в оранжевую коробку. И последний шаг. Пересыпаем голубые шарики из дополнительной коробки в голубую коробку.


Обратите внимание, для решения данной задачи достаточно было взять одну дополнительную коробку и больше не нужно.

То есть для того чтобы поменять значения трёх величин достаточно ввести одну дополнительную величину.

Для решения нашей задачи введём промежуточную переменную z. Тогда запишем алгоритм обмена значениями k, m и n.


В результате переменной k присвоено значение переменной m, переменной m — значение переменной n, а переменной n — значение переменной k и для этого достаточно ввести одну промежуточную переменную.

Пришло время подвести итоги урока.

Сегодня на уроке мы с вами выяснили, что

Команда присваивания является одной из основных команд в алгоритмах работы с величинами. То есть величина получает своё значение путём выполнения команды присваивания.

Рассмотрели последовательность выполнения команды присваивания

На примере разобрались с основными свойствами команды присваивания.

А также составили алгоритм, в результате которого переменные a, b и c литерного типа обменялись своими значениями.

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

  • Open with Desktop
  • View raw
  • Copy raw contents Copy raw contents

Copy raw contents

Copy raw contents

Основные алгоритмические конструкции

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

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

Линейный алгоритм — набор команд (указаний), выполняемых последовательно друг за другом.

Основным элементарным действием в линейных алгоритмах является присваивание значения переменной величине. Если значение константы определено видом ее записи, то переменная величина получает конкретное значение только в результате присваивания. Присваивание может осуществляться двумя способами: с помощью команды присваивания и с помощью команды ввода.

Рассмотрим пример. В школьном учебнике математики правила деления обыкновенных дробей описаны так:

  1. Числитель первой дроби умножить на знаменатель второй дроби.
  2. Знаменатель первой дроби умножить на числитель второй дроби.
  3. Записать дробь, числитель которой есть результат выполнения пункта 1, а знаменатель — результат выполнения пункта 2.

В алгебраической форме это выглядит следующим образом:


Построим алгоритм деления дробей для ЭВМ. В этом алгоритме сохраним те же обозначения для переменных, которые использованы в записанной выше формуле. Исходными данными являются целочисленные переменные а, Ь, с, d. Результатом — также целые величины m и n. Блок-схема и текст алгоритма на языке программирования (ЯП) Kotlin приведены ниже.


Формат команды присваивания следующий:

Команда присваивания обозначает следующие действия, выполняемые компьютером:

  1. Вычисляется выражение.
  2. Полученное значение присваивается переменной.

В приведенном выше алгоритме присутствуют две команды присваивания. В блок-схемах команда присваивания записывается в прямоугольнике. Такой блок называется вычислительным блоком.

В описаниях алгоритмов необязательно соблюдать строгие правила в записи выражений. Их можно писать в обычной математической форме. Это еще не язык программирования со строгим синтаксисом.

В приведенном алгоритме присутствуют команды ввода:

В блок-схеме команда ввода записывается в параллелограмме — блоке ввода-вывода. При выполнении данной команды процессор прерывает работу и ожидает действий пользователя. Пользователь должен набрать на устройстве ввода (клавиатуре) значения вводимых переменных и нажать на клавишу ввода Enter. Обычно с помощью команды ввода присваиваются значения исходных данных, а команда присваивания используется для получения промежуточных и конечных величин.

Полученные компьютером результаты решения задачи должны быть сообщены пользователю. Для этих целей предназначена команда вывода:

С помощью этой команды результаты выводятся на экран или на устройство печати на бумагу.

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

Рассмотрим последовательное выполнение четырех команд присваивания, в которых участвуют две переменные величины a и b.

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

Команда a b
a=1 1 -
b=a*2 1 2
a=b 2 2
b=a+b 2 4

Этот пример иллюстрирует три основных свойства команды присваивания:

  • пока переменной не присвоено значение, она остается неопределенной;
  • значение, присвоенное переменной, сохраняется в ней вплоть до выполнения следующей команды присваивания этой переменной;
  • новое значение, присваиваемое переменной, заменяет ее предыдущее значение.

Рассмотрим один очень полезный алгоритм, который приходится часто использовать при программировании. Даны две величины: Х и Y. Требуется произвести между ними обмен значениями. Например, если первоначально было Х=1, Y=2, то после обмена должно стать: Х=2, Y=1.

Хорошей моделью для решения этой задачи является следующая ситуация: имеются два стакана — один с молоком, другой с водой. Требуется произвести обмен их содержимым. Всякому ясно, что в этом случае нужен дополнительный третий пустой стакан. Последовательность действий будет следующей: 1) перелить из первого стакана в третий; 2) перелить из второго в первый; 3) перелить из третьего во второй. Цель достигнута!

По аналогии для обмена значениями двух переменных нужна третья дополнительная переменная. Назовем ее Z. Тогда задача обмена решается последовательным выполнением трех команд присваивания:

Команда X Y Z
ввод X, Y 1 2 -
Z = X 1 2 1
X = Y 2 2 1
Y = Z 2 1 1

Аналогия со стаканами не совсем точна в том смысле, что при переливании из одного стакана в другой первый становится пустым. В результате же присваивания (Х = Y) переменная, стоящая справа (Y), сохраняет свое значение.

Алгоритм для деления дробей имеет линейную структуру. В нем все команды выполняются в строго однозначной последовательности, каждая по одному разу. Линейный алгоритм составляется из команд присваивания, ввода, вывода и обращения к вспомогательным алгоритмам (об этом позже).

При описании алгоритмов в блок-схемах типы, как правило, не указываются (но подразумеваются). В алгоритмах для всех переменных типы указываются явно. В них используются следующие обозначения типов: Int — целый тип, Float — вещественный тип, String — символьный (литерный) тип, Boolean — логический тип. В алгоритме для деления дробей для всех переменных указан тип Int.

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

Циклический алгоритм — алгоритм, предусматривающий многократное повторение одного и того же действия (одних и тех же операций) над новыми исходными данными. К циклическим алгоритмам сводится большинство методов вычислений, перебора вариантов. Цикл программы — последовательность команд (серия, тело цикла), которая может выполняться многократно (для новых исходных данных) до удовлетворения некоторому условию.

Составим алгоритм решения квадратного уравнения: ax 2 +bx+c=0

Задача хорошо знакома из математики. Исходными данными здесь являются коэффициенты а, b, с. Решением в общем случае будут два корня х1 и х2, которые вычисляются по формуле:


Чтобы построить универсальный алгоритм, сначала требуется тщательно проанализировать математическое содержание задачи.

Решение уравнения зависит от значений коэффициентов а, b, с. Вот анализ рассмотренной выше задачи (ограничиваемся только поиском вещественных корней):

  1. Если числа равны, то взять их общее значение в качестве ответа; в противном случае продолжить выполнение алгоритма
  2. Определить большее из чисел
  3. Заменить большее число разностью большего и меньшего значений
  4. Вернуться к выполнению пункта 1

блок-схема НОД

Алгоритм имеет структуру цикла с вложенным ветвлением. Проделайте самостоятельно трассировку этого алгоритма для случая М = 18, N = 12. В результате получится НОД = 6, что, очевидно, верно.

Вспомогательные алгоритмы и процедуры

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

В качестве примера рассмотрим следующую задачу: требуется составить алгоритм вычисления степенной функции с целым показателем у = х к , где к — целое число, х<>0. В алгебре такая функция определена следующим образом:


Для данной задачи в качестве подзадачи можно рассматривать возведение числа в целую положительную степень.

Учитывая, что 1/х -n = (1/х) -n , запишем основной алгоритм решения этой задачи.

Здесь дважды присутствует команда обращения к вспомогательному алгоритму с именем stepen. Это алгоритм возведения вещественного основания в целую положительную степень путем его многократного перемножения. Величины, стоящие в скобках в команде обращения к вспомогательному алгоритму, называются фактическими параметрами.

В котлине вспомогательные алгоритмы оформляются в виде функций. Запишем функцию stepen.

  • по количеству (сколько формальных, столько и фактических параметров)
  • по последовательности (первому формальному соответствует первый фактический параметр, второму — второй и т.д.)
  • по типам (типы соответствующих формальных и фактических параметров должны совпадать)

Фактические параметры-аргументы могут быть выражениями соответствующего типа.

Обращение к процедуре инициирует следующие действия:

  1. Значения параметров-аргументов присваиваются соответствующим формальным параметрам.
  2. Выполняется тело процедуры (команды внутри процедуры).
  3. Значение результата возвращается командой return, и происходит переход к выполнению следующей команды основного алгоритма.

В функции stepen нет команд ввода исходных данных и вывода результатов. Здесь присваивание начальных значений аргументам (x, n) производится через передачу параметров-аргументов. А получение результата происходит командой return. Таким образом, передача значений параметров процедур — это третий способ присваивания (наряду с командой присваивания и командой ввода).

Использование процедур позволяет строить сложные алгоритмы методом последовательной детализации.

Читайте также: