logo
Разработка автоматизированной информационной системы "Журнал преподавателей"

1.1 Структура программы и языков программирования

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

"Алгоритм - это конечный набор правил, который определяет последовательность операций для решения конкретного множества задач и обладает пятью важными чертами: конечность, определённость, ввод, вывод, эффективность". (Д.Э. Кнут)

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

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

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

? прежде всего, программа работает не с пользователем, а с данными. Эта первая и основная компонента программы - предметы (объекты), над которыми реализуется алгоритм. Данные состоят из отдельных переменных, связанных как между собой непосредственно (через указатели), так и косвенно (как входные данные - результат);

? в языке программирования имеются средства описания данных, которые позволяют программисту конструировать различные формы их представления - типы данных;

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

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

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

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

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

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

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

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

? средства описания данных: определение типов данных (форма представления) и переменных;

? набор операций над основными типами данных (включая ввод-вывод), а также средства записи выражений;

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

? средства разбиения программы на независимые части - модули (функции, процедуры), взаимодействующие между собой через программные интерфейсы [1].