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


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

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



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

В ЯП можно выделить такие свойственные обычным языкам компоненты:

  • алфавит — перечень используемых символов;
  • словарь — перечень типовых «слов» (сочетаний символов) и слов, создаваемых пользователем;
  • грамматика — морфология (правила написания слов) и синтаксис (правила объединения слов в предложение, разграничения предложений и объединения их в программу);
  • семантика (смысловое значение предложений языка и текста в целом).

Однако ЯП по сравнению с естественными языками подчиняется гораздо более строгим правилам и ограничениям — они жестко формализованы в противоположность гибким и пластичным живым языкам. В частности, исключена неоднозначность толкования текста. Например, житейское «горе мне с тобой!..» в принципе могло бы означать как «горе мне и тебе», так и «горе мне из-за тебя».

Рассмотрим основные компоненты ЯП.

5.3.1. Алфавит

Множество разрешенных к употреблению символов ограничено. В него входят десятичные цифры, прописные буквы латинского алфавита, знак «=», знаки арифметических операций «+», «–», «*», «/», круглые скобки, символы пробела, точки, запятой и апострофа. В разных языках и версиях алфавит расширен за счет добавления квадратных и фигурных скобок, обратной косой черты «\», кавычек, двоеточия и точки с запятой, знаков операций отношения «>» и «<», обозначений логических операций, стрелок, символов «%», «@», «!», «?» и некоторых иных, а также строчных латинских букв.

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

5.3.2. Словарь

Словарь каждого ЯП включает набор зарезервированных слов (часто их называют ключевыми), смысл которых в тексте программ строго определен, например, READ, WRITE, IF, FUNCTION. Многие ключевые слова есть в словаре всех императивных ЯП, но их полный перечень, смысловая нагрузка и правила использования различны.

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

Для разных элементов словаря имеется общий термин лексемы.

5.3.3. Синтаксис

Морфология — система правил формирования лексем ЯП из элементов алфавита — относительно проста. Сложнее свод синтаксических правил, по которым из лексем формируются отдельные инструкции и целые программы.

Можно выделить ряд основных синтаксических элементов.

Структура программы — это порядок следования ее составных частей определенного функционального назначения, а именно описаний и действий.

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

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

Действия определяют процессы трансформации данных. Их описывают с помощью выражений и операторов.

Выражения назначают правила получения новых значений для изменяемых данных.

Операторы задают способы использования данных и управляют ходом вычислений.

Разделители указывают границы между лексемами, выражениями и операторами.

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

5.3.4. Семантика

Как уже отмечалось, в ЯП исключается всякая неоднозначность смысла программных конструкций. Например, отдельный оператор Бейсика А = В означает, что переменная по имени А получает числовое значение, которое при подходе к этому участку программы имеет переменная по имени В. Иные истолкования этой конструкции («сделать В равным А по численному значению», «впредь полагать А и В тождественными», «если А равно В») неверны в этом контексте. Начинающие программисты нередко игнорируют или неверно понимают связь грамматики и семантики ЯП, что приводит не только к ошибкам синтаксиса, но и к смысловым ошибкам.

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

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

 

Типы данных

Данные представляют ту или иную обрабатываемую информацию и различаются по ряду признаков. Тип данных указывает, какие операции можно над ними производить. Рассмотрим основные признаки типизации.

5.4.1. Константы и переменные

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

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

Все имена должны быть разными (исключения обсуждаются в п. 5.4.6).

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

Программу легче читать, если имена несут какую-то смысловую нагрузку.

5.4.2. Тип представляемой информации

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

Числовые данные подразделяют на целые (с подтипами), действительные и комплексные (наличие последних зависит от ЯП). Здесь эти понятия к близки к обычным математическим.

Для таких данных предусмотрена стандартная разрядность («длина») и диапазон изменения. Можно задать увеличенную разрядность, тогда арифметические операции над действительными и комплексными данными выполняются с меньшими погрешностями округлений и расширяется диапазон допустимых значений для всех числовых данных. Стандарт и возможности увеличения длины зависят от ЯП или его диалекта; аналогично обстоит дело с наличием комплексных данных. Для целых данных можно задавать уменьшенную разрядность — это экономит память.

Логические данные являются бинарными, то естьвозможны два их различимых значения: «истина» или «ложь» (в Паскале TRUE и FALSE, в Си 1 и 0).

Символьными данными могут быть любые элементы алфавита ЯП.

Значениями текстовых данных могут быть последовательности элементов алфавита.

Допускается преобразование типов — например, целого в действительный и наоборот (во втором случае это либо округление, либо отбрасывание дробной части).

5.4.3. Структура данных

По этому признаку различают простые и структурированные типы.

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

Структурированные данные входят как элементы в определенные упорядоченные совокупности. Из названных в п. 5.4.2 типов структурированными являются строковые данные.

Рассмотрим такие структурированные типы, как массивы, множества, записи и файлы.

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

Данные типа множеств — это наборы до 256 однотипных объектов, объединяемых по какому-либо признаку. Наличие такого признака лишь подразумевается, но не объявляется и не контролируется средствами ЯП. Наличие такого типа в ЯП очень упрощает сложную логическую обработку. Порядок размещения данных в множестве не определен.

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

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

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

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

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

5.4.4. Объектный тип данных

Этот особый тип данных используется в Объектно-ориентированном программировании (ООП). Объект в ООП состоит как из собственно данных (эти данные определяют свойства объекта; они занимают в объекте определенные поля), так и из методов — процедур и функций, которые этими данными управляют. С объектами связан ряд новых понятий:

  • инкапсуляция — объединение в одном типе полей данных и методов, обрабатывающих эти данные;
  • наследование — при иерархическом построении дочерний объект наследует свойства и методы родительского объекта;
  • полиморфизм — метод, с указанным именем, обрабатывает данные в соответствии с особенностями уровня иерархии.

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

5.4.5. Способы описания данных

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

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

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

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

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

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

5.4.6. Операции над данными

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

5.4.7. Глобальные и локальные переменные

Такое подразделение актуально при расчленении сложной программы на автономные части — подпрограммы, о чем уже упоминалось и что еще будет обсуждаться в п. 5.7. Важно создать наилучшие условия для монтажа программы с использованием готовых модулей, в том числе снять проблему случайного совпадения имен переменных в разных модулях. Для этого и предусмотрена возможность различать глобальные и локальные переменные.

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

Выражения

5.5.1. Роль и состав выражений

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

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

Для каждого вида выражений существует определенный набор операций.

В ЯП могут быть операции и выражения для данных типа строк, множеств, массивов.

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

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

Системы приоритета операций в разных ЯП не одинаковы.

5.5.2. Арифметические выражения

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

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

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

Ограничения на выполнение арифметических операций над операндами разных типов также не одинаковы для разных ЯП.

5.5.3. Выражения отношения

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



Поделиться:


Последнее изменение этой страницы: 2016-09-20; просмотров: 1052; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.221.41.214 (0.072 с.)