Конструктивные элементы языка PASCAL
<TBODY>Алгоритмический язык (как и любой другой язык) образуют три его составляющие: алфавит, синтаксис и семантика.
Алфавит– это фиксированный для данного языка набор основных символов, т.е. “букв алфавита”, из которых должен состоять любой текст на этом языке, никакие другие символы в тексте не допускаются.
Алфавит языка PASCAL содержит следующие символы:
1. 26 латинских букв a,…z , строчные и прописные.
2. Арабские цифры 0, … , 9.
3. Знаки арифметических операций + – * /.
4. Знаки отношения = < >
5. Знаки пунктуации . , ; : ‘ (апостроф), знак пробела.
6. Скобки ( ) [ ] { }.
7. Специальные парные символы <> <= >= .. := .
Синтаксис – это правила построения фраз, позволяющие определить, правильно или неправильно написана та или иная команда языка. Точнее говоря, синтаксис языка представляет собой набор правил, устанавливающих, какие комбинации символов являются осмысленными предложениями на этом языке.
Каждое понятие алгоритмического языка подразумевает некоторую синтаксическую единицу (конструкцию) и определяемые ею свойства программных объектов или процесса обработки данных. Основными понятиями в алгоритмических языках являются следующие.
1. Данные – величины, обрабатываемые программой.
2. Операции – действия, выполняемые программой над данными.
3. Имена (идентификаторы) – употребляются для обозначения объектов программы(данных), над которыми в программе выполняются действия. В языке PASCAL имена образуются по следующим правилам.
1) Имя – последовательность букв и цифр, начинающаяся с буквы.
2) Длина имени может быть любой, но распознаются только первые 8 символов.
Например, имена mamapapadubиmamapapadedбудут считаться одинаковыми.
3) PASCAL не различает строчные и прописные (большие и маленькие) буквы.
Эту особенность можно использовать для придания именам большей выразительности. Например, имя NumberDay читается легче, чем numberday.
Пример 2.4.Неправильные имена:
1x(начинается с цифры); x 2 (содержит пробел);
Num-Students (содержит дефис);
var (является служебным словом).
4. Ключевые слова (служебные слова) – зарезервированные слова, имеющие строго определенный смысл, который не может быть изменен. Некоторые ключевые слова языка PASCAL приведены в примере 2.1 после программы. Более полный перечень дан в Приложении 1.
5. Выражения (формулы) – сочетания основных символов алфавита, предназначенные для выполнения необходимых вычислений, состоят из констант, переменных, указателей функций (например, sin(x)), объединенных знаками операций.
Выражения записываются в виде линейных последовательностей символов(без подстрочных и надстрочных символов, “многоэтажных” дробей и т.д.), что позволяет вводить их в компьютер, последовательно нажимая на соответствующие клавиши клавиатуры.
6. Операторы (команды) – содержательное понятие языка, каждый оператор представляет собой законченную фразу языка и определяет некоторый вполне законченный этап обработки данных. В состав операторов входят:
· ключевые слова;
· данные;
· выражения и т.д.
7. Комментарий – заключается в фигурные скобки. Текст комментария может содержать любые символы (но не должен начинаться с символа $).
Например: {Это комментарий}
Семантикаопределяет смысловое значение предложений языка. Являясь системой правил истолкования отдельных языковых конструкций,семантика устанавливает, какие последовательности действий описываются теми или иными фразами языка и, в конечном итоге, какой алгоритм определен данным текстом на алгоритмическом языке.
2.6.Обзор языков программирования
Язык программирования – набор правил, определяющих систему записей, составляющих программу, синтаксис и семантику используемых грамматических конструкций.
Алгоритм, записанный по правилам языка программирования, является исходной программой на этом языке.
Компьютеры непосредственно выполняют программы на машинном языкепрограммирования данной ЭВМ. При этом программа представляет собой набор отдельных команд компьютера. Эти команды являются достаточно "простыми", например, сложение, умножение, сравнение и пересылка отдельных данных. Каждая команда содержит в себе сведения о том, какая операция должна быть выполнена (код операции), с какими операндами (адреса данных или непосредственно сами данные) выполняются вычисления и куда (адрес) должен быть помещен результат.
Машинные языки были первыми языками программирования. Программирование на них затруднительно ввиду того, что, во-первых, эти языки различны для каждого типа ЭВМ, во-вторых, являются трудоемкими для большинства пользователей по причине необходимости знания особенностей каждой ЭВМ и большого количества реализуемых ею операций (команд). Данные языки обычно используются для разработки системных программ. Однако чаще применяются специальные экономичные языки – Ассемблеры, близкие к соответствующим машинным языкам. Их называют языками низкого уровня.
Языки программирования высокого уровня значительно ближе и понятнее человеку, нежели компьютеру. Особенности устройства конкретных вычислительных машин в них не учитываются, поэтому создаваемые программы легко переносятся на другие ЭВМ, для которых создан транслятор этого языка.
Первые языки высокого уровня относились к так называемому процедурному стилю программирования. В программах, соответствующих этому стилю основное внимание уделяется описанию тех действий (процедур), которые необходимо произвести с исходными данными для получения результата.
Pаsса1 (Паскаль) является одним из наиболее популярных среди прикладных программистов процедурным языком программирования, особенно для ПЭВМ. Этот язык удобен для организации диалога, обеспечивает создание надежных программ, позволяет осуществлять манипулирование с нечисловыми данными, дает возможность пользователям вводить и использовать необходимые для них типы данных произвольного характера.
В языке Pascal реализован ряд концепций, рассматриваемых как основа "дисциплинированного" программирования и заимствованных впоследствии разработчиками многих языков. Одним из существенных признаков языка Pascal является последовательная и достаточно полная реализация концепции структурного программирования.
Смысл структурного программирования состоит в акцентировании отдельных блоков программы, её четкое разделение на части, выполняющие некоторые законченные операции: ветви условного оператора, тело цикла, вычисление некоторой совокупности выражений и т.д. При записи текста программы используется так называемая лесенка, что позволяет физически выделить отдельные блоки программы. Подобный прием позволяет проследить строение программы и лучше понять смысл выполняемых действий.
Кроме того, в языке реализована концепция определения новых типов данных на основе уже имеющихся.
Pascal характеризуется высоким уровнем, широкими возможностями, стройностью, простотой и краткостью, строгостью, способствующей написанию эффективных и надежных программ, высоким коэффициентом реализации на ЭВМ.
В настоящее время широко используются такие версии этого языка для ПЭВМ, как Воrland Раsсаl, Тurbо Раsсаl со специальной библиотекой объектно-ориентированного программирования Тurbo Vsion.
Язык АДА, созданный на основе языка ПАСКАЛЬ предназначен для программирования задач, решаемых в реальном масштабе времени, т.е. задачи решаются в том же темпе, что и описываемый или управляемый процесс.
В настоящее время на смену процедурному программированию приходят следующие новые стили программирования:
• функциональное;
• логическое;
• объектно-ориентированное.
Сущность функционального (аппликативного) программирования определена А. П. Ершовым как "... способ составления программ, в которых единственным действием является вызов функции, единственным способом расчленения программы на части является введение имени для функции, а единственным правилом композиции – оператор суперпозиции функции (функция от функции). Никаких ячеек памяти, ни операторов присваивания, ни циклов, ни, тем более, блок-схем, ни передачи управления".
Роль основной конструкции в функциональных языках играет выражение. К нему относятся скалярные константы, структурированные объекты, функции, тела функций и вызовы функций.
Аппликативный язык программирования включает следующие элементы:
• классы констант, которыми могут манипулировать функции;
• набор базовых функций, которые программист может использовать без предварительного объявления и описания;
• правила построения новых функций из базовых;
• правила формирования выражений на основе вызовов функций.
Аппликативные языки – языки программирования очень высокого уровня. Первым таким языком был LISP(ЛИСП) (LISt Processing – обработка списков), созданный в 1959 году. Цель его создания состояла в организации удобства обработки символьной информации. Существенная черта этого языка – унификация программ и структур данных: все выражения записываются в виде списков. Язык ЛИСП предназначается для обработки строк и рекурсивных данных, выполнения арифметических и логических операций. Он широко применяется в создании программ для интеллектуальных систем обработки информации.
Логическое, или реляционное программирование‚ открыло появление языка РROLOG (Пролог) (PROgramming in LOGic — программирование в терминах логики). Этот язык был создан французским ученым А. Кольмероэ в 1973 году. В настоящее время известны и другие языки, однако наиболее развитым и распространенным языком логического программирования является именно Пролог. Языки логического программирования широко используются в системах искусственного интеллекта.
Центральным понятием в логическом программировании является отношение – некоторое соответствие между парой каких-либо объектов (в арифметике и языке Pascal используются отношения между числами: =, >=, <> и т.д.). Программа представляет собой совокупность определений отношений между объектами (в терминах условий или ограничений) и цели (запроса), определяющей результат, который надо получить после выполнения программы. Языки логического программирования характеризуются:
- высоким уровнем;
- строгой ориентацией на символьные вычисления;
- возможностью инверсных вычислений, т. е. переменные в процедурах не делятся на входные и выходные;
- возможной логической неполнотой, поскольку зачастую невозможно выразить в программе определенные логические соотношения, а также невозможно получить из программы все выводы правильные.
Логические программы, в принципе, имеют небольшое быстродействие, т. к. вычисления осуществляются методом проб и ошибок, поиском с возвратами к предыдущим шагам.
В основе объектно-ориентированного стиля программирования лежит понятие объекта, а суть его выражается формулой:
объект = данные + набор операций (процедуры).
Каждый объект интегрирует в себе некоторую структуру данных и доступные только ему процедуры их обработки. Объединение данных и процедур в одном объекте называется инкапсуляцией и присуще только объектно-ориентированному программированию.
Для описания объектов используют класс, который определяет свойства и методы объекта, принадлежащего этому классу. Соответственно любой объект можно определить как элемент класса. Программирование этого стиля заключается в выборе имеющихся или создании новых объектов и организации взаимодействия между ними. При создании новых объектов их свойства могут добавляться или наследоваться от объектов-предков.
К наиболее современным объектно-ориентированным языкам программирования относятсяС++ и Jаvа. Они являются языками высокого уровня.
Язык программирования С (Си) первоначально был разработан для реализации операционной системы UNIX в начале 70-х годов. В последующем приобрел высокую популярность среди программистов. Этот язык реализован на большинстве современных ЭВМ. Он является высокоэффективным языком для получения экономных машинных программ с точки зрения быстродействия и объема занимаемой памяти.
В Си сочетаются достоинства современных высокоуровневых языков с возможностями доступа к аппаратным средствам ЭВМ на уровне, который обычно доступен языкам низкого уровня типа языка Ассемблера. Язык Си имеет синтаксис, обеспечивающий краткость программы, а компиляторы способны генерировать эффективную машинную программу.
Язык С++ был разработан в начале 80-х годов Б. Cтрауструпом. Им была создана компактная компилирующая система, в которой за основу был взят язык С, дополненный элементами языков ВСРL, Simu1а-67 и А1gо1-68. К 1990 году была выпущена третья версия языка С++, принятая комитетом АNSI в качестве исходного материала для его стандартизации.
В 1990 году Д. Гослинг на основе расширения С++ разработал объектно-ориентированный язык Оаk, основным достоинством которого было обеспечение сетевого взаимодействия различных по типу устройств. Новая интегрируемая в Internet версия языка, получила название Jаvа. Первый браузер, который поддерживал язык Jаvа, получил название NоtJаvа. С января 1995 года Jаvа получает распространение в Intеrnеt.
Согласно официальному определению авторов, Jаvа «…является простым объектно-ориентированным и архитектурно нейтральным языком, типа, обеспечивающим надежность и безопасность, обладающим высокой производительностью в сочетании с многопоточностью и динамичностью».
В последнее время многие программы, в особенности объектно-ориентированные, реализуются каксистемы визуального программирования. Отличительной особенностью таких систем является мощная среда разработки программ из готовых «строительных блоков», позволяющая создать интерфейсную часть программного продукта в диалоговом режиме, практически без кодирования программных операций. К числу объектно-ориентированных систем визуального программирования относятся: Visual Basic, C++ Builder и Visual C++.
Тема 3.Общие принципы организации и функционирования компьютера