Линейные вычислительные алгоритмы

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

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

1. Числитель первой дроби умножить на знаменатель второй дроби.

2. Знаменатель первой дроби умножить на числитель второй дроби.

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

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

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

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

переменная:=выражение

Знак «:=» нужно читать как «присвоить». Команда присваивания обозначает следующие действия, вы­полняемые компьютером:

1. Вычисляется выражение.

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

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

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

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

ввод a,b,c,d

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

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

вывод m,n

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

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

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

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

 

Команда а Ъ
а:= 1   -
b:= 2 • а    
а:=b    
b:= а + b    

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

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

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

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

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

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

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

 

Команда X Y Z
ввод X, У   2 -
Z:=X   2  
Х = У      
Y:=Z      

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

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

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

 

 


Дата добавления: 2015-12-16; просмотров: 16; Мы поможем в написании вашей работы!

Поделиться с друзьями:




Мы поможем в написании ваших работ!