Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Программирование и алгоритмические языки в историческом аспекте




Иркутск

Содержание

 

Программирование и алгоритмические языки
в историческом аспекте ……………………………………………. ……. 4

Введение в Паскаль ………………………………………………………. 11

алфавит Паскаля …………………………………………………… 12

служебные (ключевые) слова ……………………………………... 13

константы …………………………………………………..………. 15

переменные …………………………………………………………. 17

типы данных ………………………………………..………………. 19

стандартные функции ……………………………………………… 21

выражения …………………………………………………….……. 23

выражения целого типа …………………………………...… 23

выражения вещественного типа …………………….……… 25

выражения логического типа …………………………..…… 26

операторы присваивания ……………………………………..……. 28

Программа и этапы ее разработки. Структура программы ………..…… 30

Комментарии ………………………………………………………...……. 38

Ввод данных ………………………………………………………………. 40

Вывод данных ……………………………………………………….……. 41

бесформатный способ вывода …………………………………..… 42

форматный способ вывода ……………………………………...… 43

Структуры данных ………………………………………………….……. 45

Массивы ……………………………………………………………..……. 46

Строки ………………………………………………………………….…. 53

Алгоритм и его свойства ………………………………………………… 60

Схемы алгоритмов ………………………………………………….……. 60

Базовые структуры ………………………………………………………. 64

цепочка ……………………………………………………….……. 65

ветвления ………………………………………………………..…. 67

альтернатива ………………………………………………… 67

переключатель …………………………………………….… 77

циклы …………………………………………………………….…. 82

бесконечные циклы ……………………………………….… 82

циклы с предусловием ……………………………………… 83

циклы с постусловием ……………………………………… 91

циклы с параметром …………………………………..…… 100

Множества ……………………………………………………….………. 135

Файлы …………………………………………………………….………. 142

типизированные файлы …………………………………...……… 144

текстовые файлы ……………………………………………..…… 151

Записи ……………………………………………………………………. 160

Подпрограммы ………………………………………………….…….…. 170

подпрограмма-функция ………………………………….…….… 172

рекурсия …………………………………………………….….…. 184

процедура ………………………………………………...….……. 191

Программные модули ……………………………………….……..…… 206

структура модуля ………………………………………………… 209

компиляция модулей …………………………………………..… 212

взаимное использование модулей ………………………….…… 213

особенности выполнения инициирующих разделов ………...… 214

Ссылки и динамические переменные ……………….………………… 214

Динамические структуры данных ………………………….……..…… 220

связные списки …………………………………………....……… 221

сортированные списки ………………………………….…..…… 243

бинарные деревья ……………………………………….…..…… 248

Объектно-ориентированное программирование ……………..……… 267

Приложение 1. Основы алгебры логики ……………………………… 285

Приложение 2. Системы счисления …………………………………… 294

Приложение 3. Сообщения об ошибках………………………………… 300

 

 

 

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

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

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

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

С компьютером необходимо объясняться на его машинном языке, словами которого являются команды вида “сложить“, “умножить”, “переслать”, “записать”, причем эти команды записываются не словами на знакомом нам языке, а последовательностями нулей и единиц. Чтобы решить на компьютере конкретную задачу, ее нужно представить в виде последовательности таких команд. Каждая команда задает выполнение одной операции, а их совокупность, называемая программой, определяющей работу компьютера. Компьютер понимает только команды, записанные специальным образом в виде последовательности цифр в двоичной или шестнадцатиричной системах счисления. В этой последовательности кодируются операции, которые должен выполнить компьютер, адреса операндов, над которыми производится данная операция, адрес для помещения результата.

Такого рада процесс программирования называется программированием в машинных кодах или на машинном языке.

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

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

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

 

 

понято изложено понято

пользователем программисту программистом

 

 

 

 


изготовлено сдано через год

программистом пользователю эксплуатации

 

 

что надо было на самом деле

 

Возникла острая необходимость в создании такого промежуточного языка между человеком и компьютером, который достаточно легко воспринимался бы как человеком, так и машиной. И такие языки были созданы, их назвали алгоритмическим языками. Число этих языков давно перевалило за сотню. С чем связано многообразие этих языков? Здесь проявился эффект, замеченный еще М.В.Ломоносовым: по разным поводам лучше всего использовать разные языки – с врагом лучше всего объясняться на немецком, с Богом – на испанском, с женщиной – на итальянском и т.д. Конечно, и с женщиной можно успешно объясняться на немецком. Но на итальянском – лучше. В нем есть необходимые для этого средства, которых нет в других языках. Получается, что хотя все национальные языки универсальны, употреблять их лучше, ориентируясь на проблемную ситуацию. И только один великий и могучий пригоден для всего – объясниться с врагом, побеседовать с другом, поговорить с женщиной, пообщаться с Богом.

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

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

В настоящее время наиболее распространенными алгоритмическими языками являются Паскаль, Бейсик, C, C++, Java, JavaScript, PHP. Первым из них был Фортран.

Фортран (FORTRAN, FORmula TRANslator – переводчик формул) - язык программирования для решения научных и инженерных задач. Он отличается хорошим качеством получаемых программ, развитыми средствами ввода и вывода информации, имеет обширную библиотеку стандартных программ. Язык был разработан в 1954-1956 годах группой специалистов фирмы IBM (США) под руководством профессора Дж.В.Бэкуса для машины IBM 704. В первом документе, посвященном этому языку, было сказано: “Система трансляции математических формул, сокращенно Фортран, будет состоять из большого количества программ, позволяющих IBM 704 воспринимать сжатую формулировку задачи в терминах математических обозначений и составлять автоматически высокоэффективную программу для решения задачи”.

В июне 1956 года появилось сообщение о создании новой версии языка со значительными добавлениями. Эта версия была названа Фортран-II и содержала понятие подпрограмм и оператора связи между программными единицами. В 1962 году был выпущен предварительный бюллетень с описанием версии, которая сейчас называется Фортран-IV и является наиболее употребляемой. В ней добавились понятия типов величин и некоторые операторы. К этому времени (май 1962 года) относится и начало деятельности комиссии при Американской Ассоциации Стандартов (ASA). Комиссия создала два стандарта, официально известные как Фортран и Базисный Фортран. Эти языки приблизительно соответствуют Фортрану-II и Фортрану-IV, однако с тем существенным отличием, что Базисный Фортран является подмножеством Фортрана. Язык Фортран до сих пор продолжает развиваться и совершенствоваться (Фортран-77), оказывая влияние на создание и развитие других языков программирования.

Алгол (ALGOL, ALGOrithmic Language – язык алгоритмов) – алгоритмический язык, ориентированный на решение задач вычислительной математики. Он характеризуется практически полной независимостью от машины, строго формальным описанием синтаксиса, блочной структурой программ, позволяющей разделить работу по составлению больших программ на независимые части.

Первое описание Алгола было дано профессором Дж.В.Бэкусом в 1959 году. Оно было пересмотрено и исправлено профессором П.Науром в 1960 году и легло в основу языка, действующего до сих пор. Группа математиков, членов IFIP (Международная федерация по обработке информации), углубила и обобщила основные понятия в области информации и в 1966 году опубликовала документ с изложением основ нового универсального алгоритмического языка, получившего название Алгол-68. В этом языке число основных понятий сведено к разумному минимуму с целью добиться высокой изобразительной силы языка, обеспечив свободу сочетания и взаимодействия этих понятий между собой.

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

Кобол (COBOL, Common Business Oriented Language – общепринятый деловой язык) – язык программирования для задач обработки данных, близкий к языку, на котором формулируются и решаются главным образом задачи экономического характера. Он предусматривает однотипную обработку больших по объему совокупностей данных в виде таблиц, составление различных документов и отчетов в заданной форме. Язык создан сотрудниками фирмы IBM в 1959 году и широко используется до сих пор в банковской сфере.

Лисп (LISP, LIST Processing – обработка списков) – разработан в конце 50-х годов Д.Маккарти. Является самым популярным языком для работ по искусственному интеллекту. Программы и данные в нем представлены в виде списков.

АПЛ (APL, A Programming Language – язык программирования) – разработан в 1961 году сотрудником IBM К.Айверсоном. Он представляет собой только способ записи для описания задач прикладной математики и отличается простотой работы как с отдельными величинами, так и с массивами чисел.

Бейсик (Basic – многоцелевой язык символических инструкций для начинающих) – разработан в 1965 году сотрудниками Дартмутского колледжа Д.Кемени и Т.Курцем. Название basic (базовый) несет определенную смысловую нагрузку – язык обладает набором основных, базовых средств, необходимых для составления программ. Изначально он предназначался для вводного курса по информатике, хотя и не являлся структурированным. Он ориентируется на составление интерактивных программ, при реализации которых возможен диалог человека с компьютером. Сейчас это один из самых популярных языков для работы на персональных компьютерах. Он продолжает развиваться, впитывая в себя лучшие черты новейших алгоритмических языков и приспосабливаясь к современным компьютерам.

ПЛ/1 (PL/1, Programming Language One – язык программирования один) – был разработан в 1963-1966 годах сотрудниками фирмы IBM. Это многоцелевой универсальный язык программирования, в котором собраны средства для решения различных задач – научно-технических, информационных, экономических, задач управления и системного программирования. В нем объединены фундаментальные понятия алгоритмических языков Фортран, Алгол, Кобол. Для каждого конкретного класса задач выделяется подмножество языка ПЛ/1 путем исключения ненужных элементов.

Паскаль (Pascal) – создан в 1968 году профессором Высшей технической школы в Цюрихе Никлаусом Виртом. Язык содержит небольшое число основных понятий, удобен для обучения программированию и решения практических задач.

Ада (Ada) – универсальный алгоритмический язык для задач вычислительного характера, системного программирования, систем реального времени и параллельной обработки. Язык назван именем Ады Августы леди Лавлейс, дочери великого поэта Джорджа Байрона и сотрудницы Чарльза Беббиджа. Всего 50 страниц математической прозы, опубликованной в виде малозаметных “Приложений переводчика” к книге Л.Ф.Менабреа “Очерк аналитической машины, изобретенной Чарльзом Беббиджем”, прославили ее имя. В “Приложениях” она разработала первый язык общения с компьютером и, таким образом, стала первой программисткой. Терминология, которую ввела леди Ада, используется и современными программистами: рабочие ячейки, цикл и другие.

Язык Ада разработан в Париже группой авторов под руководством Жана Ушбиа. Он был создан по инициативе Министерства обороны США для компьютеров армии, флота и ВВС страны. Работа по созданию языка началась в 1975 году, руководство по нему опубликовано в 1979 году, а окончательная его версия, появившаяся в 1980 году, стала стандартом Министерства обороны США.

 




Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 394; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.037 сек.