1.1 Структура программы и языков программирования
Изучение программирования нельзя начать не ответив на ряд вопросов: что же такое программа, алгоритм, данные, язык программирования. В этом списке основным термином является алгоритм, который, как и большинство понятий общего вида, имеет множество определений. Например:
"Алгоритм - это конечный набор правил, который определяет последовательность операций для решения конкретного множества задач и обладает пятью важными чертами: конечность, определённость, ввод, вывод, эффективность". (Д.Э. Кнут)
"Алгоритм - это точное предписание, определяющее вычислительный процесс, идущий от варьируемых исходных данных к искомому результату". (А. Марков).
В самых общих чертах алгоритм - это однозначное описание порядка (последовательности) выполнения действий из заданного набора, позволяющее получить требуемый результат за конечное число шагов. Можно сказать, что компьютерная программа - это один из способов реализации понятия алгоритма, а язык программирования - средство описания алгоритмов. Однако в определении алгоритма не говорится, над чем производятся действия, выполняемые в нем. В принципе, это могут быть управляемые объекты внешней среды, но тогда они тоже входят в состав понятия алгоритм.
Компьютерная программа, в отличие от абстрактного алгоритма, имеет собственные элементы, над которыми она совершает действия, и которые являются ее составной частью. Это - данные. Таким образом, она представляет собой замкнутую систему, отделенную от внешней среды. Посмотрим, из каких еще частей состоит компьютерная программа. Все они должны выражаться в соответствующих компонентах языка программирования:
? прежде всего, программа работает не с пользователем, а с данными. Эта первая и основная компонента программы - предметы (объекты), над которыми реализуется алгоритм. Данные состоят из отдельных переменных, связанных как между собой непосредственно (через указатели), так и косвенно (как входные данные - результат);
? в языке программирования имеются средства описания данных, которые позволяют программисту конструировать различные формы их представления - типы данных;
? программа базируется на наборе операций (системе команд), которые можно выполнять над данными. В этот набор входят арифметические операции, присваивание (сохранение результата в переменной), ввод-вывод, проверка значения переменной и т.п.;
? вторая основная компонента программы - описание порядка, последовательности выполняемых действий, также называется алгоритмом "в узком смысле", или алгоритмической компонентой. Она обычно состоит из двух частей. Первая часть - выражения, представляет собой описание линейной последовательности выполнения простейших действий из набора операций (арифметические операции, присваивание, условные выражения). Они включаются во вторую компоненту - операторы, которые задают ту или иную последовательность действий;
? как уже отмечалось, программа работает исключительно с данными, что и определяет сущность алгоритма. В наборе операций имеются команды ввода-вывода, осуществляющие обмен данными между переменными и внешней средой (посредством устройств ввода-вывода). С "программно-эгоцентрической" точки зрения это выглядит чистой формальностью и не является существенной частью программы;
Любая программа выполняется в компьютере. Посмотрим, как соотносятся между собой компоненты программы и компьютерной архитектуры:
? компоненты программы находятся в памяти. В принципе, память является общей для них всех, но логически она разделяется на области, именуемые сегментами. Прежде всего, это сегмент данных, содержащий, естественно, данные программы. Алгоритмическая компонента (выражения, операторы) также находится в памяти в собственном сегменте команд;
? одновременное нахождение в памяти "алгоритма" и данных соответствует принципу хранимой программы. Перед загрузкой в память эти же компоненты находятся в программном файле, который представляет собой точную копию представления программы в памяти - "образ памяти". Это позволяет рассматривать всю программу (в том числе и алгоритм) как данные для работы других программ, например, трансляторов;
? набор операций, выполняемый в программе, соответствует системе команд процессора, на котором она выполняется. Сюда же входят команды, которые обеспечивают заданный в программе порядок действий (операторов).
И, наконец, язык программирования также содержит в себе компоненты, предназначенные для описания соответствующих частей программы:
? средства описания данных: определение типов данных (форма представления) и переменных;
? набор операций над основными типами данных (включая ввод-вывод), а также средства записи выражений;
? набор операторов, определяющих различные варианты порядка выполнения выражений в программе (последовательность, условие, повторение, блок);
? средства разбиения программы на независимые части - модули (функции, процедуры), взаимодействующие между собой через программные интерфейсы [1].
- Введение
- 1. Методы разработки программных комплексов
- 1.1 Структура программы и языков программирования
- 1.2 Классификация языков программирования
- 1.3 Объектно-ориентированное программирование
- 2. Использование хеширования для поиска информации
- 2.1 Таблицы с прямой адресацией
- 2.2 Хеш-функции
- 2.3 Открытая адресация
- 2.4 Алгоритмы работы с хеш-таблицей
- 2.5 Постановка задачи
- 2.6 Исходные данные
- 3. Описание разработанного приложения
- 3.1 Структура программного комплекса
- 3.2 Инструкция пользователя
- Заключение