Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

инфопособие2011

.pdf
Скачиваний:
31
Добавлен:
27.02.2016
Размер:
6.34 Mб
Скачать

Информатика

 

 

 

 

123

 

 

 

 

 

 

 

 

используется

в

основном

вычислительная

функция

компьютера.

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

Вновь создаваемые языки являются развитием других языков. Приведем краткие характеристики наиболее известных языков высокого уровня.

Рис9.1 Генеалогическое древо первых языков программирования

ФОРТРАН. Этот язык первый из самых распространенных и на сей день языков программирования. Создание этого языка было обусловлено необходимостью привлечения пользователей к составлению программ

124

Глава 9.ЯЗЫКИ ПРОГРАММИРОВАНИЯ ЭТАПЫ РАЗРАБОТКИ ПРОГРАММ

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

За более, чем сорокалетнюю историю ФОРТРАНА на нем было написано огромное количество прикладных программ, поэтому отказываться от этого языка нецелесообразно. Существует даже такой лозунг: «Настоящие программисты пишут только на ФОРТРАНЕ».

В ФОРТРАН-программе операторы не нумеруются и выполняются в порядке следования в программе. При необходимости изменения этого порядка, используются метки, поставленные перед соответствующими операторами.

В настоящее время ФОРТРАН переживает ренессанс. Он вновь популярен у программистов.

Язык ФОРТРАН очень хорош для опытных программистов, хорошо владеющих математическим аппаратом, поэтому для тех, кто только осваивает азы программирования на основе языка ФОРТРАН был разработан язык Бэйсик

(BASIC).

БЭЙСИК. Многоцелевой язык символических инструкций для начинающих. Научиться работе на языке Бэйсик можно за час. Но, несмотря на свою простоту, он позволяет решать сложные программы. Проблемы с применением этого языка могут возникнуть из-за большого количества его диалектов. Поэтому, переходя от одной машины к другой всегда нужно интересоваться особенностями Бэйсика для этой машины.

Все операторы Бэйсика нумеруются, и выполнение их происходит в порядке нумерации.

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

АЛГОЛ. Этот язык был создан в 1960 году, поэтому его иногда называют Алгол-60, оказал большое влияние на развитие языков программирования. Этот язык применяют в научно-технических расчетах и научно-исследовательских работах.

Р

ис.9.2 Генеалогическое древо, включающее современные языки программирования

Информатика

125

126

Глава 9.ЯЗЫКИ ПРОГРАММИРОВАНИЯ ЭТАПЫ РАЗРАБОТКИ ПРОГРАММ

 

 

Существует более поздняя разработка Алгола –

Алгол-68.

К алголоподобным языкам относятся языки Паскаль и Ада.

 

ПАСКАЛЬ. Этот язык - прямое развитие направлений Алгола, создан в 1969 г. Очень популярен в настоящее время. В связи с его простотой, его часто используют для обучения приемам программирования. Транслятор

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

сБэйсиком очень популярным, особенно для персональных компьютеров.

АДА. Это язык создан в 1979 году, является следующим продолжением направления Алгола программировании. Его основное назначение программирование работы самых разнообразных систем управления на ЭВМ и вообще сложных программных систем. Создание больших программных систем затрудняется тем, что они ненадежны ввиду неизбежных ошибок, допускаемых при программировании. В Аде большое внимание уделяется обеспечению надежности программ даже в ущерб легкости их написания. Поэтому основным элементом программы на язык Ада являются подпрограммы. В отличие от других языков, где подпрограммы играют вспомогательную, в Аде они играют главную роль.

К более поздним разработкам алголоподобных языков относятся С и С++.

КОБОЛ. COBOL – означает – Common Business-Oriented Language. .

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

PL/1. Родился в результате попытки создания единого универсального языка программирования. Разработчики этого языка стремились совместить в нем все лучшее, что есть в АЛГОЛЕ и КОБОЛЕ. Главная цель его создания - иметь в языке средства, необходимые всем категориям программистов. Это очень мощный, но очень громоздкий язык. Этот язык может обслуживать программирование как экономических, так и научно-технических задач.

Информатика

127

 

 

GPSS.GPSSозначает «общецелевая система моделирования». Это язык высокого уровня, позволяет моделировать поведение вероятностных систем, например, систем массового обслуживания, вычислительных. Моделирование

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

Язык программирования состоит из двух составляющих синтаксиса и семантики. Переход от языковых конструкций к машинным командам осуществляет транслятор. Языки высокого уровня можно также разделить на декларативные (Пролог, ЛИСП) и процедурно-ориентированные (СИ, Бэйсик, Паскаль, Ада). Процедурно-ориентированные языки развиваются в объектноориентированные к ним относятся С++, Eiffel, Java, ObjectPascal, а также Система визуального объектно-ориентированного проектирования Delphi.

Декларативные языки программирования построены на предварительном описании данных и явном указании того, что должно получиться в результате.

В основу процедурно-ориентированных языков положен принцип действий: ‖Что надо сделать, чтобы решить задачу‖. Действия записываются и выполняются операторами.

Процедурные языки можно в свою очередь разделить на простые (Бэйсик, ФОРТРАН, Кобол)и модульные (Паскаль, Модула-2, СИ).

Процедурные языки называют также

операторными

или

оперативными.

 

 

Как видим: все зависит от задачи, пользователя, организации библиотеки программ, самого компьютера, его внешней памяти и многих других обстоятельств. Так что нельзя предугадать, какой язык лучше, - все зависит от обстоятельств. Это и гарантирует каждому языку широкую область применения. Кроме того, существует мода на языки программирования. Зачастую по непонятным причинам, тот или иной язык программирования становится особенно популярен среди программистов, что дает стимул к его совершенствованию и выходу на рынок новых версий этого языка. Так например, самым популярным и широко используемым языком программирования на 2010 год был язык Python. Популярность появилась из-за захвата большой доли рынка. Рейтинг Python за 2010 год вырос почти на 2%. Этот язык используется в анализе данных, он все чаще применяется в различных сферах. А в 2011 году ситуация на рынке резко меняется, популярность падает на язык Java и он получает 17.773% от всей доли рынка (это очень высокий показатель). При этом, популярность такого уже

128

Глава 9.ЯЗЫКИ ПРОГРАММИРОВАНИЯ ЭТАПЫ РАЗРАБОТКИ ПРОГРАММ

«немолодого» языка как С не снижается – он занимает второе место после Java,

иполучает 15.822% рынка.

Ивсѐ-таки ни один из рассмотренных языков не обладает заметным преимуществом при решении простых вычислительных задач. Преимущество проявляется тогда, когда придется обратиться к библиотеке программ. Лучшим будет тот язык, который обеспечит решение конкретной задачи за минимальное число обращений к памяти и не потребует высокой квалификации пользователя.

9.3Компиляторы и интерпретаторы языков программирования

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

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

Первая программа-компилятор была создана полковником (а в последствии адмиралом) ВМФ США Грейс Хоппер в 1951году.

Интерпретаторы переводят на машинный язык по одному предложению программы по ходу ее выполнения.

Работа компиляторов и интерпретаторов отличается как работа переводчиков иностранного текста, написанного на бумаге и синхронного переводчика живой речи. Переводчик с листа выдает полный перевод написанного сразу, а синхронный переводчик переводит фразу за фразой.

9.4 Лингвистическое обеспечение современных ЭВМ

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

Информатика

129

 

 

Поэтому современная ВТ требует соответствующего лингвистического обеспечения. Для лингвистического обеспечения современных вычислительных систем и их программного обеспечения служат формальные языки различного изобразительного уровня и назначения. Их можно разбить на пять уровней:

Программное обеспечение

Языки работы с программами

Уровни

 

 

 

 

Сети ЭВМ –

 

Сетевые командные языки –

V

 

 

 

 

Операционные

оболочки

Языки работы с оболочкой –

IV

(ОО) –

 

 

 

 

 

 

 

 

III

Операционные системы –

Языки

работы с операционными

 

 

 

системами –

 

 

 

 

 

 

 

 

 

 

II

Прикладное ПО (ППО) –

Языки прикладного ПО –

 

 

 

 

 

Инструментальное ПО –

Языки

программирования высокого

I

 

 

уровня –

 

Влокальных и/или глобальных вычислительных сетях функцию общения

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

Интерфейс ОО обеспечивают языки графического, командного,

табличного типов, типа меню или смешанного типа -IV.

В качестве лингвистического обеспечения ОС выступают языки командного типа и языки управления заданиями - III. Например, MS DOS и OS/2 используют языки командного типа. Языки ОС позволяют использовать и управлять вычислительными ресурсами ЭВМ. Средства ППО располагают собственными языками - II, обеспечивающими как интерфейсные функции (инсталляции, запроса обслуживающих функций, управление режимами, выполнение работ в среде пакета, инструментальные (например, разработку документов в среде пакета)).

130

Глава 9.ЯЗЫКИ ПРОГРАММИРОВАНИЯ ЭТАПЫ РАЗРАБОТКИ ПРОГРАММ

И, последнее: инструментальное ПО включаеттрансляторы современных языков программирования различного типа и назначения - I, это ЯВУ о которых мы уже говорили ранее.

Контрольные вопросы и задания:

1.Дайте определение слову «программа».

2.Что такое машинный язык и чем он отличается от языка высокого

уровня?

3.Где и кем в настоящее время используется Ассемблер?

4.Для сего служат языки моделирования?

5.Почему в настоящее время программисты не довольствуются всего одним языком программирования?

6.Какой принцип заложен в процедурно-ориентированные языки?

7.Зачем нужны компиляторы и интерпретаторы? Чем их работа отличается друг от друга?

8.Что понимается под лингвистическим обеспечением современных

ЭВМ?

9.Каким образом происходит общение с компьютером в среде различного программного обеспечения?

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

11.Кто был разработчиком первого компилятора?

12.Какой язык считается первым языком программирования высокого уровня? Когда он был создан?

131

Глава 10. АЛГОРИТМЫ

 

 

Глава 10 АЛГОРИТМЫ

10.1 Понятие алгоритма

С понятием алгоритма мы уже встречались, когда рассматривали этапы разработки программ для ЭВМ и давали определение программе. Это слово прочно вошло в обиход и стало вполне бытовым понятием. Сегодня можно услышать, например, как давая задание, руководитель может сказать: «Алгоритм твоих действий должен быть таким: вначале нужно…». Далее следует поэтапное разъяснение последовательности действий, которые должны привести к намеченной цели.

Но понятие алгоритма относится к числу фундаментальных математических понятий и нас интересует оно именно с точки зрения применимости к вычислительным процессам, их реализации, поэтому, будем руководствоваться, приведенным ниже определением алгоритма, взятым из «Математической энциклопедии»: «Алгоритм, алгорифм, − точное предписание, которое задает вычислительный процесс (называемый в этом случае алгоритмическим), начинающийся с произвольного исходного данногои направленный на получение полностью определяемого этим исходным данным результата. Алгоритмами являются, например, известные с начальной школы правила сложения, вычитания, умножения и деления столбиком». (Т.1, стлб. 202−203).

Из определения программы, взятого для данных лекций, также, из «Математической энциклопедии», и уже цитированного ранее, алгоритм определяется как «...конечная совокупность команд (инструкций), каждая из которых побуждает выполнить некоторую элементарную операцию над данными, хранящимися в памяти исполнителя и имена которых являются параметрами команды». Как видим, это определение, сохраняя суть, несколько отличается от предыдущего, так как приложено уже к понятию «программа». В повседневной жизни слово «алгоритм», войдя прочно в обыденный лексикон, понимается как: точное правило, инструкция, указание того, как нужно действовать, чтобы получить результат. В этом смысле главу лекций «Этапы разработки программы на ЭВМ», можно рассматривать тоже как алгоритм. Вообще, слово «алгоритм» появилось в средние века, когда европейцы познакомились с работами великого арабского математика аль-Хорезми (783-855 г.г.). Эти работы произвели на них столь глубокое впечатление, что появилось слово «алгоритм», которое происходит от имени ученого. И в начале, это слово обозначало нумерацию по арабской системе счисления.

132

Глава 10. АЛГОРИТМЫ

 

 

10.2 Свойства и состав алгоритмов

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

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

Рассмотрим из чего состоят алгоритмы решения задач на ЭВМ:

1.Описание, используемых переменных.

2.Операции ввода, присваивающие некоторым переменным значения исходных данных.

3.Вычислений или другой обработки информации.

4. Операций присваивания переменным значений полученных

врезультате вычисления выражений.

5.Операции условного перехода, проверяющей некоторое условие, и

взависимости от того, выполняется заданное условие или нет, указывающей,

вкачестве следующей, выполнение какой-либо из двух операций.

6.Операции вывода обработанной информации.

10.3 Способы записи алгоритмов. Блок-схемы

Существуют три способа записи алгоритмов: словесный, графический и

операторный (на языках программирования).

 

 

Графический способ

описания

алгоритмов

или описание

алгоритмов

с помощью блок-схем,

обладает

большой

наглядностью.

Алгоритм

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