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

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

.pdf
Скачиваний:
14
Добавлен:
04.06.2015
Размер:
6.14 Mб
Скачать

GPSS (General Purpose Simulation System — система моделирования общего назначения). Это язык высокого уровня, позволяет моделировать поведение вероятностных систем в осноном систем массового обслуживания. Моделирование производится путем изменения состояния моделируемого объекта и сводится к генерации этих изменений, обычно, случайных. Например, моделируя процесс обслуживания в магазине, достаточно генерировать случайные времена появления покупателей и окончание их обслуживания. Язык GPSS продолжает развиваться, в последнее время появились специальные версии этого языка даже для персональных компьютеров – GPSS/PC.

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

ориентированного проектирования Delphi.

 

Декларативные

языки

программирования

построены

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

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

Процедурные языки можно в свою очередь разделить на простые

(BASIC, Fortran, COBOL )и модульные (Pascal, Модула-2, С).

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

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

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

ситуация на рынке резко меняется, популярным становится язык Java и он получает 17,773 % от всей доли рынка (это очень высокий показатель). При этом, популярность такого уже «немолодого» языка как С, не снижается. Он занимает второе место после Java, и получает 15,822 % рынка.

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

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

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

Имеются два основных вида средств реализации языка:

компиляторы и интерпретаторы.

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

которую затем

можно

выполнять

без участия компилятора. Работа

с компилятором

состоит

из трех

этапов: сначала текст программы

создается при помощи редактора текстов или какой-либо другой программы текстовой обработки, затем текст компилируется и наконец скомпилированная программа выполняется.

Первая программа-компилятор для языка COBOL была создана Грейс Хоппер (1906-1992) в 1951году (рис.9.3). Этим вклад Хоппер

в развитие

программирования не

ограничивается. Она участвовала

в разработке

первых ЭВМ Марк

I и Марк II, первая ввела понятие

«подпрограмма». Вклад ее в развитие вычислительной техники и программирования так велик, что за свои заслуги в 1969 г. ее избрали первым «человеком года» в компьютерном мире США, а на военной службе она дослужилась до звания контр-адмирала ВМФ США.

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

Работа компиляторов и интерпретаторов отличается так же как работа переводчиков иностранного текста, написанного на бумаге и

134

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

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

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

Рис. 9.3. Грейс Хоппер (1906-1992) – выдающийся программист, разработчица первых ЭВМ и языков программирования

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

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

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

Таблица 9.1

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

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

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

Уровни

 

 

 

 

Сети ЭВМ

 

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

V

 

 

 

 

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

оболочки

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

IV

(ОО)

 

 

 

 

 

 

 

 

III

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

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

 

 

 

системами

 

 

 

 

 

 

 

 

 

 

 

II

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

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

 

 

 

 

 

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

Языки

программирования

I

 

 

высокого уровня

 

В качестве лингвистического обеспечения ОС выступают языки командного типа и языки управления заданиями – это третий уровень.

Например, MS DOS и OS/2 используют языки командного типа. Языки ОС позволяют использовать и управлять вычислительными ресурсами ЭВМ.

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

136

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

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

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

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

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

уровня?

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

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

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

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

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

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

ЭВМ?

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

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

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

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

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

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

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

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

Но понятие алгоритма относится к числу фундаментальных математических и нас интересует оно именно с точки зрения применимости к вычислительным процессам, их реализации, поэтому будем руководствоваться, приведенным ниже каноническим определением алгоритма, взятым из «Математической энциклопедии»: «Алгоритм, алгорифм − точное предписание, которое задает вычислительный процесс

(называемый в

этом случае алгоритмическим), начинающийся

с произвольного

исходного данного и направленный на получение

полностью определяемого этим исходным данным результата. Алгоритмами являются, например, известные с начальной школы правила сложения, вычитания, умножения и деления столбиком». (Т.1, стлб.

202−203). [14]

Слово «алгоритм» появилось в средние века, когда европейцы познакомились с работами великого арабского математика, астронома,

географа,

историка

и философа Мухамеда Мусы аль-Хорезми (783-

850 гг.).

Эти работы

произвели на них столь глубокое впечатление, что

появилось слово «алгоритм», которое происходит от имени ученого. Вначале, это слово обозначало нумерацию по арабской системе счисления.

138

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

Правильно разработанный алгоритм решения задачи должен отвечать следующим требованиям:

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

массовость − быть пригодным для решения класса задач одного типа, а не одной задачи из этого класса;

результативность − возможностью достижения результата за конечное число шагов.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Графический способ описания алгоритмов или описание алгоритмов с помощью блок-схем, обладает большой наглядностью. Алгоритм изображается в виде последовательности блоков, предписывающих выполнение отдельных функций и связей между ними. Внутри блоков помещается информация, поясняющая выполняемые ими действия. Каждый блок снабжается номером, который размещается в разрыве контура блока в левой верхней его части. При оформлении документов (отчетов, курсовых и дипломных работ, диссертаций, инструкций и т. п.), содержащих блок-схемы, необходимо руководствоваться ГОСТ 19.701 – 90 – «Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения».

Наиболее часто применяемые элементы блок-схем приведены на рис. 10.1.

В качестве примера, рассмотрим словесную запись алгоритма решения квадратного уравнения ax 2 bx c 0 :

1.Ввести значения a, b, c .

2.Вычислить дискриминант уравнения D.

3.Если D 0 , вычисления закончить, иначе вычислить корни

уравнения x1 и x2 .

4. Сохранить результаты во внешнем файле с именем korni.dat.

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

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

Операторный способ предполагает подробное указание действий ЭВМ или автоматизированных устройств на специальном формальном языке.

140

Символ

 

Описание символа

 

 

 

 

 

Процесс – формирование новых значений.

 

 

выполнение арифметических или логических

 

 

операций или действий, результаты которых

 

 

запоминается в оперативной памяти ЭВМ

 

 

 

 

 

Решение – проверка условия:

 

 

выбор одного из двух направлений

 

 

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

 

 

некоторого условия

 

 

 

 

 

Модификация – организация циклических

 

 

конструкций (начало цикла)

 

 

 

 

 

Предопределенный процесс – вычисление

 

 

по подпрограмме, использование ранее

 

 

созданных и отдельно описанных алгоритмов

 

 

 

 

 

Начало-конец программы или вход и выход

 

 

в программе

 

 

 

 

 

Ввод-вывод данных – связь алгоритма с

 

 

внешним миром. Вывод осуществляется на

 

 

носители информации (бумага, ВЗК) или на

 

 

экран

 

 

Соединитель – разрыв линий потока

 

 

 

 

 

Соединитель – перенос на другую строку

 

 

 

 

 

Комментарий – пояснения, содержание

 

 

подпрограмм

 

 

 

 

Рис. 10.1. Основные элементы блок-схем

10.4. Базовые структуры алгоритмов: следование, ветвление, цикл

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

Характерной особенностью этих структур является наличие у них одного входа и одного выхода.

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

расположения в алгоритме. Операторы

должны быть выполнены

последовательно друг за другом и только один раз.

Пример 1: Решить уравнение aX b

0 .

Для решения этого уравнения, требуется задать величины а и b, затем вычислить X b / 2a и напечатать результат. Алгоритм решения примера приведен на рис. 10.2.

Решение большинства практических задач не ограничивается линейными алгоритмами и предусматривает различные пути решения

Рис. 10.2. Блок-схема алгоритма линейной структуры

142