15.
Языки программирования экономических задач

Успешно изучив материал, Вы будете знать:

После изучения данной темы Вы будете уметь:

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

Основные понятия к теме 15

Алгоритм

Блок-схема

Цикл

Синтаксис

Алфавит

Транслятор

Отладка

Тестирование

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

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

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

Название «алгоритм» произошло от латинской формы имени величайшего среднеазиатского математика Мухаммеда ибн Муса ал-Хорезми (Alhorithmi), жившего в 783— 850 гг. В своей книге «Об индийском счете» он изложил правила записи натуральных чисел с помощью арабских цифр и правила действий над ними «столбиком», знакомые теперь каждому школьнику. В XII в. эта книга была переведена на латынь и получила широкое распространение в Европе.

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

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

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

Исполнителя характеризуют:

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

Отказы исполнителя возникают, если команда вызывается при недопустимом для нее состоянии среды.

Основные свойства алгоритмов следующие:

  1. Понятность для исполнителя — исполнитель алгоритма должен понимать, как его выполнять. Иными словами, имея алгоритм и произвольный вариант исходных данных, исполнитель должен знать, как надо действовать для выполнения этого алгоритма.

  2. Дискретность (прерывность, раздельность) — алгоритм должен представлять процесс решения задачи как последовательное выполнение простых (или ранее определенных) шагов (этапов).

  3. Определенность — каждое правило алгоритма должно быть четким, однозначным и не оставлять места для произвола. Благодаря этому свойству выполнение алгоритма носит механический характер и не требует никаких дополнительных указаний или сведений о решаемой задаче.

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

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

На практике наиболее распространены следующие формы представления алгоритмов:

Словесный способ не имеет широкого распространения, так как такие описания:

Графический способ представления алгоритмов является более компактным и наглядным по сравнению со словесным. Такое графическое представление называется схемой алгоритма, или блок-схемой. В блок-схеме каждому типу действий (вводу исходных данных, вычислению значений выражений, проверке условий, управлению повторением действий, окончанию обработки и т.п.) соответствует геометрическая фигура, представленная в виде блочного символа. Блочные символы соединяются линиями переходов, определяющими очередность выполнения действий. В табл. 15.1 приведены наиболее часто употребляемые символы.

Таблица 15.1.
Наиболее часто употребляемые блочные символы

Название символа

Обозначение и пример заполнения

Пояснение

Процесс

Вычислительное действие или
последовательность действий

Решение

Проверка условий

Модификация

Начало цикла

Предопределенный процесс

Вычисления по подпрограмме,
стандартной подпрограмме

Ввод-вывод

Ввод-вывод в общем виде

Пуск-останов

Начало, конец алгоритма,
вход и выход в подпрограмму

Документ

Вывод результатов на печать

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

Блок «решение» используется для обозначения переходов управления по условию. В каждом блоке «решение» должны быть указаны вопрос, условие или сравнение, которые он определяет.

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

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

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

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

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

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

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

Характерной особенностью базовых структур является наличие в них одного входа и одного выхода (табл. 15.2).

Таблица 15.2.
Наличие в базовых структурах одного входа и одного выхода

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

Блок-схема

1. если—то

 if условие
than действия

2. если—то—иначе

 if условие
than действия 1
else действия 2

3. выбор

 case i of
 0: действия 1
 1: действия 2
 2: действия 3
end

Базовая структура «цикл» обеспечивает многократное выполнение некоторой совокупности действий, которая называется телом цикла. Основные разновидности циклов представлены в табл. 15.3. Примеры структуры «цикл» приведены в табл. 15.4.

Таблица 15.3.
Основные разновидности циклов

Pascal

Язык блок-схем

Цикл типа пока.
Предписывает выполнять тело цикла до тех пор,
пока выполняется условие, записанное после слова «пока».

while условие
тело цикла
do(последовательность действий)

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

 for i = i1 to i2
тело цикла
(последовательность действий)

Таблица 15.4.
Примеры структуры «цикл»

Pascal

Язык блок-схем

 while i <= 5
do
begin S:= S+A[i]
i:= i+1
end

 for i = 1 to 5
begin
X[i]:= i*i*i
Y[i]:= X[i]/2
end

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

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

Следовательно, язык для записи алгоритмов должен быть формализован. Такой язык принято называть языком программирования, а запись алгоритма на этом языке — программой для компьютера. В настоящее время в мире существует несколько сотен реально используемых языков программирования. Для каждого есть своя область применения.

Алгоритмический язык (как и любой другой язык) образуют три его составляющие:

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

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

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

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

По этому критерию можно выделить следующие уровни языков программирования:

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

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

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

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

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

Языки высокого уровня делятся на:

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

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

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

Основные выводы

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

  2. Основные свойства алгоритмов:

    • понятность;

    • дискретность;

    • определенность;

    • результативность;

    • массовость.

  3. Формы представления алгоритмов:

    • словесная форма (запись на естественном языке);

    • графическая форма (изображения из графических символов);

    • псевдокоды (полуформализованные описания алгоритмов на условном алгоритмическом языке);

    • программная форма (тексты на языках программирования).

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

    • алфавит;

    • синтаксис;

    • семантика.

  5. Языки программирования делятся на:

    • машинные;

    • машинно-ориентированные (ассемблеры);

    • машинно-независимые (языки высокого уровня).

Контрольные вопросы

  1. Что такое алгоритм?

  2. Каким способом можно описать алгоритм?

  3. Какие базовые элементы алгоритма?

  4. Что такое язык программирования? Какие языки бывают?

  5. Что делают после написания программы?

  6. Зачем некоторые производители выпускают β-версии своих программ?

Литература

  1. Алехина Г.В., Годин И.М., Пронкин П.Г. Основы информатики: учеб. пособие — М.: МФПА., 2009.

Задания для самостоятельной работы

Выполните задания к теме 15 в тетради-практикуме.