Курс лекций (стр. 1 из 24)

ПРИМЕНЕНИЕ ЭВМ

(Программирование)

КУРС ЛЕКЦИЙ

СОДЕРЖАНИЕ

1. ВВЕДЕНИЕ 3
2. ПРОГРАММНОЕ УПРАВЛЕНИЕ КОМПЬЮТЕРОМ 11
3. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ. ЯЗЫКИ ПРОГРАММИРОВАНИЯ 15
4. АЛГОРИТМЫ И СТРУКТУРНОЕ ПРОГРАММИРОВАНИЕ 29
5. МЕТОДЫ РАЗРАБОТКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ 35
5.1. Методы процедурного программирования 35
5.2. Структуры данных 36
5.3. Поиск и сортировка 38
5.4. Объектно-ориентированное программирование 42
6. БАЗОВЫЕ ЭЛЕМЕНТЫ ЯЗЫКА ТУРБО ПАСКАЛЬ (ТР) 45
6.1. Алфавит 45
6.2. Константы и переменные 46
6.3. Выражения и операции 47
6.4. Структура программы 50
7. ТИПЫ ДАННЫХ ЯЗЫКА ТР 53
8. УПРАВЛЯЮЩИЕ СТРУКТУРЫ ЯЗЫКА ТР 67
8.1. Операторы 67
8.2. Процедуры и функции 72
8.3. Модули 79
9. ВВОД-ВЫВОД ДАННЫХ И ФАЙЛОВАЯ СТРУКТУРА В ЯЗЫКЕ ТР 83
10. УКАЗАТЕЛИ И ДИНАМИЧЕСКАЯ ПАМЯТЬ В ЯЗЫКЕ ТР 87
11. ОБЪЕКТЫ В ЯЗЫКЕ ТР 91

1. ВВЕДЕНИЕ

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

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

Однако перенастройка компьютера не всегда была столь простым делом. Для программирования "монстров", которые возвестили своим появлением в 40-50-е годы начало компьютерной эры, требовались не только математические способности, но и в не меньшей степени физическая выносливость. Первым универсальным электронным компьютером считается машина "ЭНИАК" (ENIAC - Electronic Numerical Integrator and Computer), созданная в 1945 г. в Высшем техническом училище Пенсильванского университета. Она предназначалась для вычисления баллистических таблиц, в которых остро нуждалась артиллерия американской армии. Эта машина представляла собой конгломерат 17468 электронных ламп и соединительных проводов, смонтированных на 40 панелях, расположенных в форме подковы вдоль стен большой комнаты. Ее возможности были таковы, что за секунду можно было сложить 5 тыс. десятиразрядных чисел. Однако каждое изменение программы "ЭНИАКа" требовало переключения сотен кабелей и установку в нужное положение приблизительно 6 тыс. переключателей. Поэтому в среднем на подготовку машины к вычислению одной таблицы уходило два дня кропотливой ручной работы. Несмотря на низкую надежность "ЭНИАКа" и его послевоенных преемников, именно с помощью этих первых машин были заложены основы программирования.

Вычислительные машины военного времени в конструктивном плане отчасти строились на идеях 19 века. Одна из таких идей заключается в использовании для программирования перфокарт. Перфокарточный метод управления механизмом связан с именем Жозефа Мари Жаккара. В 1804 году он создал ткацкий станок ("машина Жаккара"), для управления которым применялись перфокарты, соединенные друг с другом в виде ленты. Движением челнока управляли деревянные шпильки "читающего устройства" станка, которые по расположению отверстий в перфокарте определяли, какие нити следует поднять, а какие опустить для создания нужного узора.

Примерно 30 лет спустя английский математик Чарлз Бэббидж использовал идею Жаккара при разработке устройства, которое он назвал Аналитической машиной. Он разработал и спроектировал универсальный программируемый компьютер для решения широкого класса задач, где, в частности, предусматривалось специальное устройство для хранения обрабатываемых чисел - аналог оперативного запоминающего устройства современного компьютера. Предполагалось, что машина будет производить вычисления и запоминать результаты с помощью набора валов и шестерен. Управление машиной предполагалось осуществять с помощью массивных перфокарт. Однако требуемая для создания машины точность обработки намного превосходила технологические возможности того времени и поэтому она так и не была построена.

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

Создатели машины "ЭНИАК" (Джон Мочли и Преспер Экерт) прекрасно понимали, что основное преимущество электронных компьютеров (по сравнению с электромеханическими) состоит в их потенциальной способности хранить большое количество информации. Однако сама "ЭНИАК" имела весьма ограниченную внутреннюю память. Хотя она умела достаточно быстро выполнять сложные программы, ее сумматор (внутреннее запоминающее устройство на электронных лампах, предназначенное для хранения обрабатываемых данных) мог запомнить лишь 20 10-значных чисел. В своей новой машине, которая называлась "ЭДВАК" (EDVAC - Electronic Discrete Variable Automatic Computer), Мочли и Экерт в качестве внутренней памяти предложили использовать ртутные линии задержки, в которых можно было "консервировать электрические импульсы", в затем в нужное время извлекать их оттуда. Еще одна особенность этой машины состояла в ориентации на работу не с десятичными, а с двоичными числами , что позволяло упростить конструкцию арифметического устройства.

Другой принцип организации внутренней памяти был применен при создании компьютера "Марк 1", созданного в 1950 году в Манчестерском университете (имя "Марк 1" имел также более ранний компьютер, который был изготовлен в Гарвардском университете с участитем сотрудников фирмы IBM - основа - электромеханические реле). Внутренняя память его была построена на 6 ЭЛТ, в которых электронная пушка создавала заряженные точки на покрытом люминофором экране. Включаясь и выключаясь, электронный луч генерировал точки, которые соответствовали нулям и единицам. Для обнаружения (считывания) заряженных точек использовалась система специальных электродов, расположенных снаружи трубки. Точки мог видеть и человек, что давало возможность проконтролировать процесс запоминания и считывания.

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

Одни из первых попыток создания кодов, понятных человеку, были предприняты Мочли и Экертом при создании новой машины "ЮНИВАК-1" (1949 г.) (UNIVAC, Universal Automatic Computer), предназначенного для Национального бюро переписи населения США. Этот компьютер был оснащен программой-компоновщиком , который использовался как вспомогательное средство для создания других программ (в разработке принимала участие Грейс Хоппер). По заданному идентификатору, т.е. условному коду, он осуществлял выборку нужной подпрограммы из специальной библиотеки (хранилась на магнитной ленте), считывание и запись ее в отведенное место оперативной памяти. Т.о. компоновщик, извлекая несколько различных подпрограмм, формировал из них единую программу. Хоппер назвала эту транслирующую программу компилятором (compiler - компоновщик). Компоновщик, поставляемый вместе с компьютером "ЮНИВАК" (они поступили в продажу в конце 50-х годов), позволял создавать т.н. автоматические программы. Автоматическими они назывались потому, что большую часть утомительной работы по компоновке программы из отдельных машинных команд брал на себя сам компьютер.

Компоновщик и другие вспомогательные средства способствовали коммерческому успеху компьютера "ЮНИВАК" - первого компьютера массового выпуска и спроса. Другие предприниматели, заметив этот успех, быстро включились в компьютерный бизнес - так началась технологическая революция . У нее было два движущих фактора: прогресс в области разработки быстродействующей электроники и непрерывное совершенствование языка общения человека с машиной.