Мегаобучалка Главная | О нас | Обратная связь


Алгоритмы и структурное программирование



2019-12-29 180 Обсуждений (0)
Алгоритмы и структурное программирование 0.00 из 5.00 0 оценок




КУРС ЛЕКЦИЙ


 

СОДЕРЖАНИЕ

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
     

 

 


 

 

ВВЕДЕНИЕ

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

Термин "программное обеспечение" (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-х годов), позволял создавать т.н. автоматические программы. Автоматическими они назывались потому, что большую часть утомительной работы по компоновке программы из отдельных машинных команд брал на себя сам компьютер.

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

С середины 50-х годов, когда вычислительная техника прочно укоренилась в университетах и научно-исследовательских лабораториях США Европы, наступило время стремительного прогресса в области программирования. Однако новые разработки не отрицали всего того, что было сделано раньше. Напротив, они опирались на уже построенный фундамент. Компиляторы и интерпретаторы для т.н. языков ассемблера (эти языки требуют от программиста глубокого знания аппаратуры) остались важным средством программирования. Однако хотя эти средства и продолжали использоваться, их роль постепенно снижалась. Посредниками между программистами и машинами становились языки программирования высокого уровня, которые давали возможность больше времени уделять решению конкретной задачи, не отвлекаясь на тонкие вопросы организации самого процесса выполнения задания на машине. Языки программирования - это тщательно составленные последовательности слов, букв, чисел и мнемонических сокращений, используемые для общения с компьютером. Языки программирования, имитирующие естественные языки и способные на основании одного предложения строить несколько команд компьютера, принято считать "языками высокого уровня".

Двумя яркими представителями этого этапа были сотрудники Дартмутского колледжа Томас Курц и Джон Кемени. Долгое время им приходилось работать на ближайшем к ним компьютере марки IBM-700 (объем памяти - 8192 слова, каждое длиной 36 разрядов), который находился в 215 км от их колледжа в Массачусетском технологическом интституте. Программисту требовалось подготовить задание на перфокартах и передать его в вычислительный центр специальному оператору. Этот посредник вводил карты в машину в большом пакете, который часто содержал сотни отдельных программ, принадлежавшим многим пользователям. Чтобы получить ответ, приходилось ждать, пока компьютер обработает весь пакет, но что уходило около суток. Затем исправление, вновь ожидание. Помимо этого первые программы для IBM-700 приходилось писать на языке ассемблера, программирование на котором мало чем отличалось от программирования в двоичном коде.

Сотрудники Дартмутского колледжа Томас Курц и Джон Кемени задались целью создать язык высокого уровня, который бы был бы прост и доступен студентам-гуманитариям, которые обучались в Дартмутском колледже.

Надо заметить, что к тому времени уже существовали несколько языков высокого уровня. Первым и одним из наиболее распространенным был Фортран (FORTRAN -Formula Translator), который разработала в конце 50-х годов группа инженеров фирмы IBM под руководством Джона Бекуса. Фортран был предназначен для работы с формулами, используемыми в математике и других научно-технических дисциплинах.

Курц и Кемени предполагали, что по синтаксису операторы нового языка будут похожи на операторы Фортрана, однако отличаться большей простотой. Кроме того, предполагалось, что студенты сами будут набирать программы на терминале (а не передавать их в виде колоды перфокарт оператору вычислительного центра), т.е. язык был ориентирован на интерактивное взаимодействие. В результате был создан универсальный символический код для начинающих (BASIC - Beginners All-Purpose Symbolic Code). В последствии Бейсик стал поистине массовым языком программирования. В значительной степени этому способствовало то, что Бейсик практически повсеместно стали использовать как встроенный язык микрокомпьютеров, получивших широкое распространение в конце 70-х годов.

Появление и широкое распространение в 1957 г. Фортрана послужило толчком к разработке еще одного языка АЛГОЛА (ALGOrithmic Language - алгоритмический язык), который создавался как единый язык для научного программирования и в США и в Европе. Он был создан на совещании в Цюрихе в мае 1958 г. с участием создателя Фортрана Джона Бекуса и унаследовал многое от Фортрана. Но в тоже время основные понятия в нем были собраны в более логическую структуру. В дополненном варианте этот язык появился в январе 1960 г. (АЛГОЛ-60). Многие языки, возникшие позднее, базировались (по-крайней мере, частично) на Алголе. Это связано с несколькими его идеями. Одна из наиболее важных - блочная структура, позволяющая делить программу на замкнутые единицы, разрабатываемые независимо. Другая идея - рекурсия, т.е. способность программ повторно обращаться к себе. Третья идея - строго формализованное определение синтаксиса, т.е. способа размещения слов в языке.

Модернизация АЛГОЛА продолжалась и в 60-е годы. В 1968 году появилась версия АЛГОЛ-68. Однако она оказалась слишком громоздкой и неудобной, и не получила широкого признания в Европе. Одним их критиков этой версии был швейцарский специалист по информатике Никлаус Вирт. В этом же 1968 году он начал создавать новый язык Паскаль, который назвал в честь французского философа и математика XVII века. Он подошел к разработке языка, как инженер к проектированию машины. "Искусство инженера состоит в том, чтобы делать сложные задачи простыми". Язык Паскаль требует от программиста определения всех переменных в отдельной секции, расположенной в начале программы. Так как эти определения задаются явным образом, то в Паскаль-программах сравнительно немного ошибок и их проще понять и исправить программисту, не являющемуся автором программы. Это делает Паскаль весьма подходящим для создания больших программ. Датой рождения Паскаля считается 1970 год. В 1973 году он был объявлен официальным языком программирования для учащихся средних школ, которые намерены специализироваться в области вычислительной техники и программирования в университетах США. Паскаль - это один из языков, основанный на принципах структурного программирования.

Важный вклад в теорию структурного программирования внес голландский ученый Эдсгер Дийкстра (работа 1968 г "Заметки по структурному программированию"). Он доказывал, что большинство программ неоправданно сложны из-за отсутствия в них четкой математической структуры (в 1968 г проходила конференция, где возникшая ситуация со сложностью и множеством ошибок в программном обеспечении получила название "кризис программного обеспечения"). Одна из основных причин, по мнению Дийкстры, состояла в частом использовании в программах оператора безусловного перехода GOTO, который передает управление из одной точки в другую. Прерывая логическую последовательность алгоритма, операторы GOTO практически исключают возможность хорошо разобраться в структуре программы для всех, кроме ее автора. Дийкстра предложил использовать три типа управляющих структур: простую последовательность (т.е. группу операторов, выполняемых друг за другом), альтернативу (конструкцию, позволяющую выбрать один из двух или более возможных операторов) и повторение (конструкцию, позволяющую выполнять заданный оператор до тех пор, пока удовлетворяется некоторое условие).

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

Несколько позже Паскаля появился еще один широко распространенный в настоящее время язык высокого уровня - Си. Язык Си разработал в 1972 г. Деннис Ричи, специалист по системному программированию из фирмы "Белл телефон лабораторис". При его создании он ориентировался на программирование с помощью Си новой операционной системы UNIX. Традиционно ради повышения скорости работы операционных систем они писались на языке низкого уровня - ассемблере. В этом плане Си наиболее близок к языкам низкого уровня, поскольку обеспечивает непосредственный доступ к аппаратуре. В конечном итоге на Си было написано более 90% всего кода центральной программы (ядра) системы UNIX. Windows написаны на Си?

В 1960 г. в США было около 5 тыс. компьютеров. В то время фирмы-производители в основном сами создавали программное обеспечение для собственных машин. Однако ситуация начала изменяться. На арену вышел новый вид бизнеса - независимая продажа программного обеспечения. Одна из первых компаний КСК (Computer Science Corporation, CSC) такого рода образовалась в 1959 г. с начальным капиталом 100 долларов (Рой Натт и Флетчер Джоунс). Первоначально основными клиентами были гигантские корпорации и правительственные учреждения наподобие НАСА. Компания совершила головокружительный взлет: в 1964 г КСК заняла первое место среди компаний - производителей программного обеспечения, включенных в список национальной фондовой биржи.

В середине 60-х годов наметился быстрый рост производства компьютеров. Этому способствовало появление нового компьютера PDP-8. Это был первый мини-компьютер, имевший коммерческий успех. При цене приблизительно 18 тыс. долларов он становился доступным для множества технических фирм. Это в свою очередь стимулировало создание большого количества новых разнообразных компонентов программного обеспечения, т.к. требовались программы для использования повсеместно во всех областях производства, проектирования, управления и т.д. К концу 60-х годов в мире уже использовалось около 100 тысяч вычислительных машин.

Новый этап в развитии программирования наступил с появлением персонального компьютера, создание которого стало возможным благодаря изобретению микропроцессора. Отныне простой любитель, заплатив несколько сотен долларов, мог стать обладателем компьютера. Началом этого этапа считается публикация журнала Popular Electronics за 1975 г, в которой описывался первый набор для сборки мини-компьютера "АЛЬТАИР - 8800" (компания производитель - Micro Instrumentation and Telemetry System, MITS, цена - 397 долл., микропроцессор Intel (Integrated Electronics) i8080, n-MOS, 8-разрядный, 2 МГц). В сборке он представлял собой единственную микросхему, расположенную в небольшом ящике, на передней панели которого ряды переключателей и лампочек. Пользователю требовалось самому создавать двоичную программу и затем ввести ее в машину, орудуя переключателями.

Среди наиболее горячих энтузиастов этой новинки был Пол Аллен молодой программист из небольшой компьютерной фирмы "HONEYWELL". Он, вместе со своим другом детства Уильямом Гейтсом, студентом первого курса Гарвардского университета, решили, что новая машина нуждается в специально программном обеспечении. Следующий их шаг был таков: они позвонили в фирму-производитель компьютеров "АЛЬТАИР" и предложили ее владельцу программу, которая может переводить Бейсик в машинный код для этого компьютера. Несмотря на свою молодость, они уже имели определенный опыт программирования, который пригодился им при выполнении проекта для "АЛЬТАИРА", ибо они работали даже не видя эту машину. Все, чем они располагали - это руководство по системе команд микропроцессора "ИНТЕЛ 8080", на базе которого был построен "АЛЬТАИР". Имевшихся данных было достаточно для написания программы, прогоняя ее на большом компьютере, они отлаживали свой интерпретатор. Получив эту программу и проверив ее в работе, создатели "АЛЬТАИРА" были очень довольны, поскольку, по их словам, до этого не видели, чтобы их машина что-нибудь делала.

Стали появляться программное обеспечение для этого компьютера. В частности, для нее тогда еще студент первого курса Гарвардского университета Билл Гейтс со своим другом Полом Алленом первыми создали программу, которая могла бы переводить Бейсик в машинный код (интерпретатор). Вскоре после продажи этой программы разработчикам «Альтаира», Аллен и Гейтс организовали компанию, назвав ее “Microsoft”.

Надо отметить, что к тому времени сложилось некоторое сообщество любителей, энтузиастов компьютерной техники, которые называли себя хакерами (hacker). Они свободно обменивались информацией, советами, частями компьютеров и программами, никакая информация при этом не скрывалась. Естественно они страстно желали получить, созданный Алленом и Гейтсом, интерпретатор Бейсика для "АЛЬТАИРА". Но компания МИТС продавала ленту с программой за 500 долларов, что делало ее недоступной для большей части компьютерных любителей. Но на семинаре в Пало-Альто в 1975 г, где группа инженеров из фирмы МИТС демонстрировала "АЛЬТАИР", один из хакеров прихватил запасную перфоленту, которая случайно оказалась неподалеку от работающего телетайпа. После чего она мгновенно разошлась множеством копий. Естественно Аллен и Гейтс были более чем удручены подобным развитием событий, поскольку получали определенный процент от каждого проданного экземпляра своей программы. Это было началом войны, продолжающейся и по сей день, между производителями программного обеспечения, продажа которого приносит им большие доходы, и нелегальными распространителями скопированных программ.

По мере расширения рынка персональных компьютеров, их усовершенствования и оснащения периферийными устройствами (монитор-телевизор, клавиатура, принтер), стали появляться программные продукты, предназначенные для довольно распространенной, но в тоже время конкретной цели. В первую очередь это были текстовые процессоры ("Электрический карандаш" (Майкл Шрейер) для "АЛЬТАИРА" и WorldStar (Джон Барнэби) - 1978 г.). В 1979 г. появилась программа VisiCalc (Visible Calculator) (Дэниел Бриклин), позволяющая быстро и удобно работать с большим количеством чисел - электронные таблица. Изначально это программа была создана для персонального компьютера "Apple" (1977 г. - Стефан Возняк, Стивен Джобс), по-существу сыграв главную роль в успехе этой машины. VisiCalc подготовила почву для появления других видов программного обеспечения для бизнеса. Не последнее место в этом ряду принадлежит системе "dBASE II" (1981 г. - Уэйн Рэтлифф), которая относится к классу систем управления базами данных. Вскоре ряды миллионеров, наживших состояния на программном обеспечении, пополнил Митчел Кэпор. Его программа "Лотос 1-2-3" завоевала широкое признание, поскольку соединяла в себе лучшие качества системы VisiCalc с графическими возможностями и средствами информационного поиска.

При разработке "Лотоса 1-2-3" Кэпор ориентировался не на 8-ми разрядные процессоры, которые в основном использовались в микрокомпьютерах того времени, а на 16-разрядные. Именно такой процессор предполагалось использовать в первом персональном компьютере IBM PC (1981 г., микропроцессор Intel i8088, 29 т. транзисторов, 16-разрядный (работа с 16-разрядными словами), 8-разрядная шина, 4.77 МГц), который разрабатывалсся в фирме IBM (International Business Machines). Выход IBM на рынок персональных компьютеров стал знаменательным событием, поскольку одно присутствие на этом рынке гигантской компании-ветерана окончательно убедило многих сомневающихся потенциальных потребителей, что персональные компьютеры заслуживают серьезного отношения. Другим важным следствие вторжения IBM явился массовый переход производителей компьютеров на иную операционную систему, которая организует взаимодействие аппаратуры с программным обеспечением, обеспечивая выполнение поставленных задач. Программы, написанные для одной операционной системы, не могут работать под управлением другой.

В большинстве 8-разрядных компьютеров до появления IBM PC использовалась операционная система СР/М (Control Program for Microcomputers), которая была разработана в 1979 г. Гэрри Килдолом. Именно к нему сначала обратились специалисты IBM с предложением обсудить операционную систему для будущего компьютера. Однако (причины в интерпретации участников - разные) сотрудничество не состоялось. IBM заключило контракт с компанией "Microsoft", возглавляемой Биллом Гейтсом. Новая операционная система MS-DOS (Microsoft Disk Operating System), получив благословление IBM, была хорошо принята многими производителями, которые стали выходить на рынок с моделями машин, совместимых с системой IBM PC.

В 70-х годах переживал громадный успех, созданный Никлаусом Виртом, сильно структурированный язык Паскаль. Но разработчики программного обеспечения, пытавшиеся приспособить Паскаль для микрокомпьютеров и использовать его в коммерческих целях, внесли в язык значительные изменения. Поскольку Вирт изначально разрабатывал Паскаль для обучения студентов программированию, язык почти не имел ввода-вывода и других средств, существенных для практического применения. По этой причине в компиляторах Паскаля появлялись все новые расширения, выводящие язык за пределы чисто академических приложений. Это породило множество диалектов Паскаля. Однако Вирт стремился к универсальности. В 1981 г. он разработал язык Модула-2, который должен был заменить Паскаль в универсальных приложениях и представлял собой его расширение в нескольких направлениях. Наиболее примечательным было введение средств написания больших и сложных программ, которые теперь можно было создавать в виде отдельных модулей, а затем собирать их вместе. Однако в начале 80-х годов, когда компании по разработке программного обеспечения трудились над дорогими и медленными компиляторами для Модулы-2, которые позволили бы использовать его на персональных компьютерах, появился компактный, дешевый и мгновенно срабатывающий компилятор Турбо-Паскаль. Его разработчиком был бывший студент Вирта, переехавший в США, Филип Кан. Собрав у членов своей семьи небольшую сумму в 20 тыс. долларов, в марте 1984 года он основал фирму "Борланд Интернэшнл". Оценив одну копию Турбо-Паскаля в 50 долларов, за первые два года удалось продать около 300 тысяч копий, что превзошло объем продаж всех прочих языков для персональных компьютеров.

Совершенствуя Turbo-Pascal, фирма Borland разрабатывала новые версии пакета. Уже первая версия Turbo-Pascal содержала расширения языка, хотя и небольшие. В последующих версиях расширений становилось все больше и больше: встроенная графика (версия 3.0), от которой потом отказались, модули (4.0), средства ООП (5.5) и т.д. и т.д. Начиная с версии 7.0, язык стал называться Борланд Паскаль. Со временем в Turbo Pascal появились дополнительные средства, обеспечивающие поддержку концепции объектно-ориентированного программирования, и язык программирования Turbo Pascal стал именоваться Object Pascal. На базе Object Pascal в фирме Borland был создан принципиально новый программный продукт, который получил название Delphi. Delphi - это среда разработки программ, ориентированных на работу в Windows - новой операционной системы фирмы Microsoft. В основе идеологии Delphi лежит технология визуального проектирования и методология объектно-ориентированного программирования.

На основе Паскаля был создан еще один довольно распространенный в настоящее время язык Ада. Толчком к его созданию послужило создание в военном ведомстве США в 1975 г. комитета, которому было предписано найти или разработать язык, способный объединить достоинства существующих в то время языков и таким образом навести определенный порядок в военном ведомстве, где в то время использовались большое количество различных языков. Победителем в соревновании, результаты которого были объявлены в мае 1979 г., стал Жан Ихбиа (родился в Париже, в США кандидатская диссертация по оптимальному размещению систем метро) с языком Ада, названным в честь Огасты Ады Лавлейс, математика и писателя XIX века. Наиболее характерная черта языка Ада – главный акцент на структурное программирование. Язык позволяет писать программы в виде пакетов, т.е. самостоятельных модулей, которые разрабатываются отдельными программистами, а затем собираются вместе. После довольно длительного времени, появились удачные компиляторы для этого языка, и в 1983 г. министерство обороны распорядилось, чтобы все новые программы для «критических» приложений писались на Аде (под «критическими» понимались компьютеризированные системы связи и системы вооружений, например, программы, используемые в системе СОИ).

Microsoft осталась верна Бейсику. QuickBasic, VisualBasic - входит в поставку Windows.

В начале 80-х годов появилась, разработанная сотрудником «Белл телефон лабораторис» Бъярном Строуструпом, новая версия языка Си Си++ (++ это обозначение инкремента в Си). В него были внесены ряд добавлений (возможность работы с абстрактными данными и др.), главным из которых были средства ООП. При этом осталась ориентация на системное программирование. До последнего времени самый модный язык. Сейчас принято считать, что Си++ сложноват и не слишком надежен. В 1998 г. – стандарт С++.

Показано, что наиболее удобными для реализации программных систем, разработанных в рамках объектно-ориентированного подхода, являются объектно-ориентированные языки программирования, хотя возможна реализация и на обычных (не объектно-ориентированных) языках (например, на языке C и на языке Fortran). Первый объектно-ориентированный язык программирования Simula 67 был разработан в конце 60-х годов в Норвегии. Авторы этого языка очень точно угадали перспективы развития программирования: их язык намного опередил свое время. Однако современники (программисты 60-х годов) оказались не готовы воспринять ценности языка Simula 67, и он не выдержал конкуренции с другими языками программирования (прежде всего, с языком Fortran). Прохладному отношению к языку Simula 67 способствовало и то обстоятельство, что он был реализован как интерпретируемый (а не компилируемый) язык, что было совершенно неприемлемым в 60-е годы, так как интерпретация связана со снижением эффективности (скорости выполнения) программ. Но достоинства языка Simula 67 были замечены некоторыми программистами, и в 70-е годы было разработано большое число экспериментальных объектно-ориентированных языков программирования: например, языки CLU, Alphard, Concurrent Pascal и др. Эти языки так и остались экспериментальными, но в результате их исследования были разработаны современные объектно-ориентированные языки программирования: C++, Smalltalk, Eiffel и др. Наиболее распространенным объектно-ориентированным языком программирования безусловно является C++. Свободно распространяемые коммерческие системы программирования C++ существуют практически на любой платформе. Широко известна свободно распространяемая система программирования G++, которая дает возможность всем желающим разобрать достаточно хорошо и подробно прокомментированный исходный текст одного из образцовых компиляторов языка C++. Разработка новых объектно-ориентированных языков программирования продолжается.

С 1995 года стал широко распространяться новый объектно-ориентированный язык программирования Java, ориентированный на сети компьютеров и, прежде всего, на Internet. Синтаксис этого языка напоминает синтаксис языка C++, однако эти языки имеют мало общего. Java интерпретируемый язык: для него определены внутреннее представление (bytecode) и интерпретатор этого представления, которые уже сейчас реализованы на большинстве платформ. Интерпретатор упрощает отладку программ, написанных на языке Java, обеспечивает их переносимость на новые платформы и адаптируемость к новым окружениям. Он позволяет исключить влияние программ, написанных на языке Java, на другие программы и файлы, имеющиеся на новой платформе, и тем самым обеспечить безопасность при выполнении этих программ. Эти свойства языка Java позволяют использовать его как основной язык программирования для программ, распространяемых по сетям (в частности, по сети Internet).


2. Программное управление компьютером

 

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

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

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

Если операционная система – «режиссер», то прикладные программы – «артисты». Именно благодаря таким программам (текстовый редактор, электронные таблицы, игры и т.д.) компьютер приобретает свою разносторонность. Предназначены для решения специальных задач.

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

Вычислительный процесс состоит из нескольких последовательных этапов: ввод информации в компьютер, ее специализированная обработка и вывод результатов. Такие устройства ввода, как клавиатура и «мышь», служат для задания компьютеру простых команд и данных (рис.1). Они поступают в центральный процессор (ЦП) – сердце аппарат­ной части вычислитель­ной системы. ЦП координ



2019-12-29 180 Обсуждений (0)
Алгоритмы и структурное программирование 0.00 из 5.00 0 оценок









Обсуждение в статье: Алгоритмы и структурное программирование

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (180)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.019 сек.)