ТОП 10:

Приобретение навыков программирования сложных линейных программ



Приобретение навыков программирования сложных линейных программ

Цель:

Ознакомление с основными принципами построения сложных линейных программ

СОСТАВ ЯЗЫКА. Обычный разговорный язык состоит из четырех основных
элементов: символов, слов, словосочетаний и предложений. Алгоритмический язык содержит подобные элементы, только слова называют элементарными конструкциями, словосочетания-выражениями, предложения-операторами. Символы, элементарные конструкции, выражения и операторы составляют иерархическую структуру, поскольку элементарные конструкции образуются из последовательности символов, выражения-это последовательность элементарных конструкций и символов, а оператор-последовательность выражений, элементарных конструкций и символов.

ОПИСАНИЕ ЯЗЫКА есть описание четырех названных элементов. Описание символов заключается в перечислении допустимых символов языка. Под описанием элементарных конструкций понимают правила их образования. Описание выражений- это правила образования любых выражений, имеющих смысл в данном языке. Описание операторов состоит из рассмотрения всех типов операторов, допустимых в языке. Описание каждого элемента языка задается его СИНТАКСИСОМ и СЕМАНТИКОЙ. Синтаксические определения устанавливают правила построения элементов языка. Семантика определяет смысл и правила использования тех элементов языка, для которых были даны синтаксические определения.

СИМВОЛЫ языка-это основные неделимые знаки, в терминах которых пишутся все тексты на языке.

ЭЛЕМЕНТАРНЫЕ КОНСТРУКЦИИ -это минимальные единицы языка, имеющие самостоятельный смысл. Они образуются из основных символов языка.

ВЫРАЖЕНИЕ в алгоритмическом языке состоит из элементарных конструкций и символов, оно задает правило вычисления некоторого значения.

ОПЕРАТОР задает полное описание некоторого действия, которое необходимо выполнить. Для описания сложного действия может потребоваться группа операторов. В этом случае операторы объединяются в СОСТАВНОЙ ОПЕРАТОР или БЛОК.

Действия, заданные операторами, выполняются над ДАННЫМИ. Предложения алгоритмического языка, в которых даются сведения о типах данных, называются ОПИСАНИЯМИ или неисполняемыми операторами. Объединенная единым алгоритмом совокупность описаний и операторов образует ПРОГРАММУ на алгоритмическом языке. В процессе изучения алгоритмического языка необходимо отличать алгоритмический язык от того языка, с помощью которого осуществляется описание изучаемого алгоритмического языка. Обычно изучаемый язык называют просто языком, а язык, в терминах которого дается описание изучаемого языка - МЕТАЯЗЫКОМ. Синтаксические определения могут быть заданы формальными или неформальным способами. Существуют три формальных способа:

-металингвистическая символика, называемая Бэкуса-Наура формулами;

-синтаксические диаграммы;

-скобочные конструкции.

Мы в последующем изложении будем пользоваться неформальным способом.

О С Н О В Н Ы Е С И М В О Л Ы

Основные символы языка-буквы, цифры и специальные символы-составляют его алфавит. ТУРБО ПАСКАЛЬ включает следующий набор основных символов:
1) 26 латинских строчных и 26 латинских прописных букв:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
a b c d e f g h i j k l m n o p q r s t u v w x y z
2) _ подчеркивание
3) 10 цифр:
0 1 2 3 4 5 6 7 8 9
4) знаки операций:
+ - * / = <> < > <= >= := @
5) ограничители:
. , ' ( ) [ ] (. .) { } (* *) .. : ;
6) спецификаторы:
^ # $
7) служебные (зарезервированные) слова:

ABSOLUTE EXPORTS LIBRARY SET
ASSEMBLER EXTERNAL MOD SHL
AND FAR NAME SHR
ARRAY FILE NIL STRING
ASM FOR NEAR THEN
ASSEMBLER FORWARD NOT TO
BEGIN FUNCTION OBJECT TYPE
CASE GOTO OF UNIT
CONST IF OR UNTIL
CONSTRUCTOR IMPLEMENTATION PACKED USES
DESTRUCTOR IN PRIVATE VAR
DIV INDEX PROCEDURE VIRTUAL
DO INHERITED PROGRAM WHILE
DOWNTO INLINE PUBLIC WITH
ELSE INTERFACE RECORD XOR
END INTERRUPT REPEAT
EXPORT LABEL RESIDENT

Кроме перечисленных, в набор основных символов входит пробел. Пробелы нельзя использовать внутри сдвоенных символов и зарезервированных слов.

3. Э Л Е М Е Н Т А Р Н Ы Е К О Н С Т Р У К Ц И И
Элементарные конструкции языка ПАСКАЛЬ включают в себя имена, числа и строки. Имена (идентификаторы) называют элементы языка - константы, метки, типы, переменные, процедуры, функции, модули, объекты. Имя - это последовательность букв и цифр, начинающаяся с буквы. В именах может использоваться символ _ подчеркивание. Имя может содержать произвольное количество символов, но значащими являются 63 символа. Не разрешается в языке ПАСКАЛЬ использовать в качестве имен служебные слова и стандартные имена, которыми названы стандартные константы, типы, процедуры, функции и файлы. Для улучшения наглядности программы в нее могут вставляться пробелы. По крайней мере один пробел требуется вставить между двумя последовательными именами, числами или служебными и стандартными именами. Пробелы нельзя использовать внутри имен и чисел.

Примеры имен языка ПАСКАЛЬ:

A b12 r1m SIGMA gamma I80_86

Числа в языке ПАСКАЛЬ обычно записываются в десятичной системе
счисления. Они могут быть целыми и действительными. Положительный
знак числа может быть опущен. Целые числа записываются в форме без
десятичной точки, например:

217 -45 8954 +483

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

28.6 0.65 -0.018 4.0 5Е12 -1.72Е9 73.1Е-16

ПАСКАЛЬ допускает запись целых чисел и фрагментов действительных чисел в форме с порядком в шестнадцатиричной системе счисления:

$7F $40 $ABC0

Строки в языке ПАСКАЛЬ - это последовательность символов, записан-
ная между апострофами. Если в строке в качестве содержательного сим-
вола необходимо употребить сам апостроф, то следует записать два
апострофа. Примеры строк:

'СТРОКА' 'STRING' 'ПРОГРАММА' 'АД''ЮТАНТ'

4. К О Н Ц Е П Ц И Я Т И П АД Л Я Д А Н Н Ы Х

В математике принято классифицировать переменные в соответствии с
некоторыми важными характеристиками. Производится строгое разграниче-
ние между вещественными, комплексными и логическими переменными, между переменными, представляющими отдельные значения и множество значений и так далее.
При обработке данных на ЭВМ такая классификация еще более важна. В
любом алгоритмическом языке каждая константа, переменная, выражение
или функция бывают определенного типа.
В языке ПАСКАЛЬ существует правило: тип явно задается в описании
переменной или функции, которое предшествует их использованию. Концепция типа языка ПАСКАЛЬ имеет следующие основные свойства:
-любой тип данных определяет множество значений, к которому принадлежит константа, которые может принимать переменная или выражение, или вырабатывать операция или функция;
-тип значения, задаваемого константой, переменной или выражением,
можно определить по их виду или описанию;
-каждая операция или функция требует аргументов фиксированного типа и выдает результат фиксированного типа.
Отсюда следует, что транслятор может использовать информацию о типах для проверки вычислимости и правильности различных конструкций.
Тип определяет:
-возможные значения переменных, констант, функций, выражений, принадлежащих к данному типу;
-внутреннюю форму представления данных в ЭВМ;
-операции и функции, которые могут выполняться над величинами,
принадлежащими к данному типу.
Обязательное описание типа приводит к избыточности в тексте программ, но такая избыточность является важным вспомогательным средством разработки программ и рассматривается как необходимое свойство
современных алгоритмических языков высокого уровня. В языке ПАСКАЛЬ
существуют скалярные и структурированные типы данных.
К cкалярным типам относятся стандартные типы и типы, определяемые пользователем.
Стандартные типы включают целые, действительные, символьный,
логические и адресный типы. Типы, определяемые пользователем, - перечисляемый и интервальный.
Структурированные типы имеют четыре разновидности: массивы, множества, записи и файлы.
Кроме перечисленных, TURBO PASCAL включает еще два типа - процедурный и объектный.
Из группы скалярных типов можно выделить порядковые типы,
которые характеризуются следующими свойствами:
-все возможные значения порядкового типа представляют собой
ограниченное упорядоченное множество;
-к любому порядковому типу может быть применена стандартная
функция Ord, которая в качестве результата возвращает порядковый номер конкретного значения в данном типе;
-к любому порядковому типу могут быть применены стандартные
функции Pred и Succ, которые возвращают предыдущее и последующее значения соответственно;
-к любому порядковому типу могут быть применены стандартные функции Low и High, которые возвращают наименьшее и наибольшее значения
величин данного типа.
В языке ПАСКАЛЬ введены понятия эквивалентности и совместимости типов.
Два типа Т1 и Т2 являются эквивалентными (идентичными), если выполняется
одно из двух условий:
-Т1 и Т2 представляют собой одно и то же имя типа;
-тип Т2 описан с использованием типа Т1 с помощью равенства или
последовательности равенств. Например:

type
T1 = Integer;
T2 = T1;
T3 = T2;

Менее строгие ограничения определены совместимостью типов. Напри-
мер, типы являются совместимыми, если:
-они эквивалентны;
-являются оба либо целыми, либо действительными;
-один тип - интервальный, другой - его базовый;
-оба интервальные с общим базовым;
один тип - строковый, другой - символьный.
В ТУРБО ПАСКАЛЬ ограничения на совместимость типов можно обойти с
помощью приведения типов. Приведение типов позволяет рассматривать
одну и ту же величину в памяти ЭВМ как принадлежащую разным типам.
Для этого используется конструкция

Имя_Типа(переменная или значение).

Напрмер,

Integer('Z')

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

Byte(534)

даст значение 22, поскольку целое число 534 имеет тип Word и занимает два байта, а тип Byte занимает один байт, и в процессе приведения
старший байт будет отброшен.

В Ы Р А Ж Е Н И Я

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

1. унарная операция not, унарный минус -, взятие адреса @
2. операции типа умножения * / div mod and shl shr
3. операции типа сложения + - or xor
4. операции отношения = <> < > <= >= in
{}
Выражения входят в состав многих операторов языка ПАСКАЛЬ, а также
могут быть аргументами встроенных функций.

Приобретение навыков программирования сложных линейных программ

Цель:

Ознакомление с основными принципами построения сложных линейных программ

СОСТАВ ЯЗЫКА. Обычный разговорный язык состоит из четырех основных
элементов: символов, слов, словосочетаний и предложений. Алгоритмический язык содержит подобные элементы, только слова называют элементарными конструкциями, словосочетания-выражениями, предложения-операторами. Символы, элементарные конструкции, выражения и операторы составляют иерархическую структуру, поскольку элементарные конструкции образуются из последовательности символов, выражения-это последовательность элементарных конструкций и символов, а оператор-последовательность выражений, элементарных конструкций и символов.

ОПИСАНИЕ ЯЗЫКА есть описание четырех названных элементов. Описание символов заключается в перечислении допустимых символов языка. Под описанием элементарных конструкций понимают правила их образования. Описание выражений- это правила образования любых выражений, имеющих смысл в данном языке. Описание операторов состоит из рассмотрения всех типов операторов, допустимых в языке. Описание каждого элемента языка задается его СИНТАКСИСОМ и СЕМАНТИКОЙ. Синтаксические определения устанавливают правила построения элементов языка. Семантика определяет смысл и правила использования тех элементов языка, для которых были даны синтаксические определения.

СИМВОЛЫ языка-это основные неделимые знаки, в терминах которых пишутся все тексты на языке.

ЭЛЕМЕНТАРНЫЕ КОНСТРУКЦИИ -это минимальные единицы языка, имеющие самостоятельный смысл. Они образуются из основных символов языка.

ВЫРАЖЕНИЕ в алгоритмическом языке состоит из элементарных конструкций и символов, оно задает правило вычисления некоторого значения.

ОПЕРАТОР задает полное описание некоторого действия, которое необходимо выполнить. Для описания сложного действия может потребоваться группа операторов. В этом случае операторы объединяются в СОСТАВНОЙ ОПЕРАТОР или БЛОК.

Действия, заданные операторами, выполняются над ДАННЫМИ. Предложения алгоритмического языка, в которых даются сведения о типах данных, называются ОПИСАНИЯМИ или неисполняемыми операторами. Объединенная единым алгоритмом совокупность описаний и операторов образует ПРОГРАММУ на алгоритмическом языке. В процессе изучения алгоритмического языка необходимо отличать алгоритмический язык от того языка, с помощью которого осуществляется описание изучаемого алгоритмического языка. Обычно изучаемый язык называют просто языком, а язык, в терминах которого дается описание изучаемого языка - МЕТАЯЗЫКОМ. Синтаксические определения могут быть заданы формальными или неформальным способами. Существуют три формальных способа:

-металингвистическая символика, называемая Бэкуса-Наура формулами;

-синтаксические диаграммы;

-скобочные конструкции.

Мы в последующем изложении будем пользоваться неформальным способом.

О С Н О В Н Ы Е С И М В О Л Ы

Основные символы языка-буквы, цифры и специальные символы-составляют его алфавит. ТУРБО ПАСКАЛЬ включает следующий набор основных символов:
1) 26 латинских строчных и 26 латинских прописных букв:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
a b c d e f g h i j k l m n o p q r s t u v w x y z
2) _ подчеркивание
3) 10 цифр:
0 1 2 3 4 5 6 7 8 9
4) знаки операций:
+ - * / = <> < > <= >= := @
5) ограничители:
. , ' ( ) [ ] (. .) { } (* *) .. : ;
6) спецификаторы:
^ # $
7) служебные (зарезервированные) слова:

ABSOLUTE EXPORTS LIBRARY SET
ASSEMBLER EXTERNAL MOD SHL
AND FAR NAME SHR
ARRAY FILE NIL STRING
ASM FOR NEAR THEN
ASSEMBLER FORWARD NOT TO
BEGIN FUNCTION OBJECT TYPE
CASE GOTO OF UNIT
CONST IF OR UNTIL
CONSTRUCTOR IMPLEMENTATION PACKED USES
DESTRUCTOR IN PRIVATE VAR
DIV INDEX PROCEDURE VIRTUAL
DO INHERITED PROGRAM WHILE
DOWNTO INLINE PUBLIC WITH
ELSE INTERFACE RECORD XOR
END INTERRUPT REPEAT
EXPORT LABEL RESIDENT

Кроме перечисленных, в набор основных символов входит пробел. Пробелы нельзя использовать внутри сдвоенных символов и зарезервированных слов.

3. Э Л Е М Е Н Т А Р Н Ы Е К О Н С Т Р У К Ц И И
Элементарные конструкции языка ПАСКАЛЬ включают в себя имена, числа и строки. Имена (идентификаторы) называют элементы языка - константы, метки, типы, переменные, процедуры, функции, модули, объекты. Имя - это последовательность букв и цифр, начинающаяся с буквы. В именах может использоваться символ _ подчеркивание. Имя может содержать произвольное количество символов, но значащими являются 63 символа. Не разрешается в языке ПАСКАЛЬ использовать в качестве имен служебные слова и стандартные имена, которыми названы стандартные константы, типы, процедуры, функции и файлы. Для улучшения наглядности программы в нее могут вставляться пробелы. По крайней мере один пробел требуется вставить между двумя последовательными именами, числами или служебными и стандартными именами. Пробелы нельзя использовать внутри имен и чисел.

Примеры имен языка ПАСКАЛЬ:

A b12 r1m SIGMA gamma I80_86

Числа в языке ПАСКАЛЬ обычно записываются в десятичной системе
счисления. Они могут быть целыми и действительными. Положительный
знак числа может быть опущен. Целые числа записываются в форме без
десятичной точки, например:

217 -45 8954 +483

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

28.6 0.65 -0.018 4.0 5Е12 -1.72Е9 73.1Е-16

ПАСКАЛЬ допускает запись целых чисел и фрагментов действительных чисел в форме с порядком в шестнадцатиричной системе счисления:

$7F $40 $ABC0

Строки в языке ПАСКАЛЬ - это последовательность символов, записан-
ная между апострофами. Если в строке в качестве содержательного сим-
вола необходимо употребить сам апостроф, то следует записать два
апострофа. Примеры строк:

'СТРОКА' 'STRING' 'ПРОГРАММА' 'АД''ЮТАНТ'

4. К О Н Ц Е П Ц И Я Т И П АД Л Я Д А Н Н Ы Х

В математике принято классифицировать переменные в соответствии с
некоторыми важными характеристиками. Производится строгое разграниче-
ние между вещественными, комплексными и логическими переменными, между переменными, представляющими отдельные значения и множество значений и так далее.
При обработке данных на ЭВМ такая классификация еще более важна. В
любом алгоритмическом языке каждая константа, переменная, выражение
или функция бывают определенного типа.
В языке ПАСКАЛЬ существует правило: тип явно задается в описании
переменной или функции, которое предшествует их использованию. Концепция типа языка ПАСКАЛЬ имеет следующие основные свойства:
-любой тип данных определяет множество значений, к которому принадлежит константа, которые может принимать переменная или выражение, или вырабатывать операция или функция;
-тип значения, задаваемого константой, переменной или выражением,
можно определить по их виду или описанию;
-каждая операция или функция требует аргументов фиксированного типа и выдает результат фиксированного типа.
Отсюда следует, что транслятор может использовать информацию о типах для проверки вычислимости и правильности различных конструкций.
Тип определяет:
-возможные значения переменных, констант, функций, выражений, принадлежащих к данному типу;
-внутреннюю форму представления данных в ЭВМ;
-операции и функции, которые могут выполняться над величинами,
принадлежащими к данному типу.
Обязательное описание типа приводит к избыточности в тексте программ, но такая избыточность является важным вспомогательным средством разработки программ и рассматривается как необходимое свойство
современных алгоритмических языков высокого уровня. В языке ПАСКАЛЬ
существуют скалярные и структурированные типы данных.
К cкалярным типам относятся стандартные типы и типы, определяемые пользователем.
Стандартные типы включают целые, действительные, символьный,
логические и адресный типы. Типы, определяемые пользователем, - перечисляемый и интервальный.
Структурированные типы имеют четыре разновидности: массивы, множества, записи и файлы.
Кроме перечисленных, TURBO PASCAL включает еще два типа - процедурный и объектный.
Из группы скалярных типов можно выделить порядковые типы,
которые характеризуются следующими свойствами:
-все возможные значения порядкового типа представляют собой
ограниченное упорядоченное множество;
-к любому порядковому типу может быть применена стандартная
функция Ord, которая в качестве результата возвращает порядковый номер конкретного значения в данном типе;
-к любому порядковому типу могут быть применены стандартные
функции Pred и Succ, которые возвращают предыдущее и последующее значения соответственно;
-к любому порядковому типу могут быть применены стандартные функции Low и High, которые возвращают наименьшее и наибольшее значения
величин данного типа.
В языке ПАСКАЛЬ введены понятия эквивалентности и совместимости типов.
Два типа Т1 и Т2 являются эквивалентными (идентичными), если выполняется
одно из двух условий:
-Т1 и Т2 представляют собой одно и то же имя типа;
-тип Т2 описан с использованием типа Т1 с помощью равенства или
последовательности равенств. Например:

type
T1 = Integer;
T2 = T1;
T3 = T2;

Менее строгие ограничения определены совместимостью типов. Напри-
мер, типы являются совместимыми, если:
-они эквивалентны;
-являются оба либо целыми, либо действительными;
-один тип - интервальный, другой - его базовый;
-оба интервальные с общим базовым;
один тип - строковый, другой - символьный.
В ТУРБО ПАСКАЛЬ ограничения на совместимость типов можно обойти с
помощью приведения типов. Приведение типов позволяет рассматривать
одну и ту же величину в памяти ЭВМ как принадлежащую разным типам.
Для этого используется конструкция

Имя_Типа(переменная или значение).

Напрмер,

Integer('Z')

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

Byte(534)

даст значение 22, поскольку целое число 534 имеет тип Word и занимает два байта, а тип Byte занимает один байт, и в процессе приведения
старший байт будет отброшен.







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

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