Чтение RSS
Рефераты:
 
Рефераты бесплатно
 

 

 

 

 

 

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

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

1. О С Н О В Н Ы Е П О Н Я Т И Я

А Л Г О Р И Т М И Ч Е С К О Г О Я З Ы К А

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

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

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

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

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

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

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

ОПЕРАТОР или БЛОК.

Действия, заданные операторами, выполняются над ДАННЫМИ. Предложе- ния алгоритмического языка, в которых даются сведения о типах данных, называются ОПИСАНИЯМИ или неисполняемыми операторами.

Объединенная единым алгоритмом совокупность описаний и операторов образует ПРОГРАММУ на алгоритмическом языке.

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

Синтаксические определения могут быть заданы формальными или не- формальным способами. Существуют три формальных способа:

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

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

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

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

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

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

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 занимает один байт, и в процессе приведения старший байт будет отброшен.

5. С Т А Н Д А Р Т Н Ы Е Т И П Ы

Д А Н Н Ы Х

К стандартным относятся целые, действительные, логические, символьный и адресный типы.

ЦЕЛЫЕ типы определяют константы, переменные и функции, значения которых реализуются множеством целых чисел, допустимых в данной ЭВМ.

тип диапазон значений требуемая память

__________________________________________________________

Shortint -128 .. 127 1 байт

Integer -32768 .. 32767 2 байта

Longint -2147483648 .. 2147483647 4 байта

Byte 0 .. 255 1 байт

Word 0 .. 65535 2 байта

__________________________________________________________

Над целыми операндами можно выполнять следующие арифметические операции: сложение, вычитание, умножение, деление, получение остатка от деления. Знаки этих операций:

+ - * div mod

Результат арифметической операции над целыми операндами есть вели- чина целого типа. Результат выполнения операции деления целых величин есть целая часть частного. Результат выполнения операции получения остатка от деления - остаток от деления целых. Например:

17 div 2 = 8, 3 div 5 = 0.

17 mod 2 = 1, 3 mod 5 = 3.

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

В языке ПАСКАЛЬ имеются следующие операции отношения: равенство =, неравенство , больше или равно >=, меньше или равно , меньше < .

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

Abs(X), Sqr(X), Succ(X), Pred(X),

и которые определяют соответственно абсолютное значение Х, Х в квад- рате, Х+1, Х-1.

Следующая группа стандартных функций для аргумента целого типа да- ет действительный результат:

Sin(X), Cos(X), ArcTan(X), Ln(X), Exp(X), Sqrt(X).

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

Результат выполнения функции проверки целой величины на нечетность

Odd(X) имеет значение истина, если аргумент нечетный, и значение ложь, если аргумент четный:

X=5 Odd(X)=TRUE , X=4 Odd(X)=FALSE.

Для быстрой работы с целыми числами определены процедуры:

Inc(X) X:=X+1

Inc(X,N) X:=X+N

Dec(X) X:=X-1

Dec(X,N) X:=X-N

ДЕЙСТВИТЕЛЬНЫЕ типы определяет те данные, которые реализуются подмножеством действительных чисел, допустимых в данной ЭВМ.

Тип Диапазон Количество цифр Требуемая значений мантиссы память (байт)

---------------------------------------------------------------

Real 2.9e-39 .. 1.7e+38 11 6

Single 1.5e-45 .. 3.4e+38 7 4

Double 5.0e-324 .. 1.7e+308 15 8

Extended 3.4e-4932 .. 1.1e+4932 19 10

Comp -9.2e+18 .. 9.2e+18 19 8

---------------------------------------------------------------

Тип Real определен в стандартном ПАСКАЛЕ и математическим сопро- цессором не поддерживается.

Остальные действительные типы определены стандартом IEEE 457 и ре- ализованы на всех современных компьютерах.

Для их использования при наличии сопроцессора или при работе на

ЭВМ типа 80486 необходимо компилировать программу с ключом {$ N+}, а при отсутствии сопроцессора - с ключами {$N-,E+}.

Тип Comp хотя и относится к действительным типам, хранит только длинные целые значения.

Над действительными операндами можно выполнять следующие арифмети- ческие операции, дающие действительный результат:

сложение + , вычитание - , умножение * , деление / .

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

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

К действительным аргументам применимы функции, дающие действитель- ный результат:

Abs(X), Sqr(X), Sin(X), Cos(X), ArcTan(X), Ln(X), Exp(X),

Sqrt(X), Frac(X), Int(X), Pi.

Функция Frac(X) возвращает дробную часть X, функция Int(X) - целую часть X.

Безаргументная функция Pi возвращает значение числа Пи действи- тельного типа.

К аргументам действительного типа применимы также функции

Trunc(X) и Round(X),

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

ЛОГИЧЕСКИЙ тип (Boolean) определяет те данные, которые могут при- нимать логические значения TRUE и FALSE.

К булевским операндам применимы следующие логические операции:

not and or xor.

Логический тип определен таким образом, что FALSE < TRUE. Это поз- воляет применять к булевским операндам все операции отношения.

В ТУРБО ПАСКАЛЬ введены еще разновидности логического типа:

ByteBool, WordBool и LongBool, которые занимают в памяти ЭВМ один, два и четыре байта соответственно.

СИМВОЛЬНЫЙ тип (Char) определяет упорядоченную совокупность симво- лов, допустимых в данной ЭВМ. Значение символьной переменной или константы - это один символ из допустимого набора.

Символьная константа может записываться в тексте программы тремя способами:

-как один символ, заключенный в апострофы, например:

'A' 'a' 'Ю' 'ю';

-с помощью конструкции вида #K, где K - код соответствущего симво- ла, при этом значение K должно находиться в пределах 0..255;

-с помощью конструкции вида ^C, где C - код соответствущего управ- ляющего символа, при этом значение C должно быть на 64 больше кода управляющего символа.

К величинам символьного типа применимы все операции отношения.

Для величин символьного типа определены две функции преобразования

Ord(C) Chr(K).

Первая функция определяет порядковый номер символа С в наборе сим- волов, вторая определяет по порядковому номеру К символ, стоящий на

К-ом месте в наборе символов. Порядковый номер имеет целый тип.

К аргументам символьного типа применяются функции, которые опреде- ляют предыдущий и последующий символы:

Pred(C) Succ(C). Pred('F') = 'E' ; Succ('Y') = 'Z' .

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

Для литер из интервала 'a'..'z' применима функция UpCase(C), кото- рая переводит эти литеры в верхний регистр 'A'..'Z'.

АДРЕСНЫЙ тип (Pointer) определяет переменные, которые могут содер- жать значения адресов данных или фрагментов программы. Для хранения адреса требуются два слова (4 байта), одно из них определяет сегмент, второе - смещение.

Работа с адресными переменными (указателями) будет рассмотрена позже, сейчас отметим, что для получения значения адреса какой-либо переменной введена унарная операция @.

6. К О Н С Т А Н Т Ы

Тип констант в языке ПАСКАЛЬ определяется по их виду: константы целого типа - это целые числа, не содержащие десятичной точки, конс- танты действительного типа - действительные числа, логические конс- танты - логические значения TRUE и FALSE, символьные константы - либо строки длиной в один символ, либо конструкции вида #K или ^K.

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

7. П Е Р Е М Е Н Н Ы Е.

И Н И Ц И А Л И З А Ц И Я П Е Р Е М Е Н Н Ы Х

Тип переменных определяется пользователем в разделе описания пере- менных:{}

В настоящее время в профессиональном программировании принято записывать имена переменных с использованием так называемой венгерс- кой нотации.

Венгерская нотация - это соглашение о наименованиях переменных и функций. Соглашение широко используется при программировании на язы- ках PASCAL, C и в среде WINDOWS.

Венгерская нотация основывается на следующих принципах:

-имена переменных и функций должны содержать префикс, описывающий их тип;

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

Префиксы записываются малыми буквами, первая буква каждого слова - заглавная, префиксы и слова записываются либо слитно, либо через сим- вол _ (подчеркивание).

Для языка PASCAL могут быть рекомендованы следующие префиксы для скалярных переменных и функций:

Префикс Тип

--------------------- by Byte sh Shortint i Integer w Word l Longint r Real si Single d Double e Extended c Comp ch Char b Boolean p Pointer x,у координаты символа или точки на экране

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

a Array s String sz Stringz se Set re Record f File t Text

Например:

rV, arVector[1..20], sName, iCount.

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

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

имя переменной: тип = значение;

которая должна быть размещена в разделе описания констант, например:

const rWeight: Real = 0.4;

8. В Ы Р А Ж Е Н И Я

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

1. унарная операция not, унарный минус -, взятие адреса @

2. операции типа умножения * / div mod and shl shr

3. операции типа сложения + - or xor

4. операции отношения = < > = in

{}

Выражения входят в состав многих операторов языка ПАСКАЛЬ, а также могут быть аргументами встроенных функций.

9. О П Е Р А Т О Р П Р И С В А И В А Н И Я

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

10. О П Е Р А Т О Р Ы В В О Д А

И В Ы В О Д А

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

Для ввода и вывода данных используются стандартные процедуры ввода и вывода Read и Write, оперирующие стандартными последовательными файлами

INPUT и OUTPUT.

Эти файлы разбиваются на строки переменной длины, отделяемые друг от друга признаком конца строки. Конец строки задается нажатием кла- виши ENTER.

Для ввода исходных данных используются операторы процедур ввода:

Read(A1,A2,...AK);

ReadLn(A1,A2,...AK);

ReadLn;

Первый из них реализует чтение К значений исходных данных и прис- ваивание этих значений переменным А1, А2, ..., АК. Второй оператор реализует чтение К значений исходных данных, пропуск остальных значе- ний до начала следующей строки, присваивание считанных значений пере- менным А1, А2, ..., АК. Третий оператор реализует пропуск строки ис- ходных данных.

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

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

var rV, rS: Real; iW, iJ: Integer; chC, chD: Char;

................

Read(rV, rS, iW, iJ);

Read(chC, chD);

Значения исходных данных могут отделяться друг от друга пробелами и нажатием клавиш табуляции и Enter.

Для вывода результатов работы программы на экран используются операторы:

Write(A1,A2,...AK);

WriteLn(A1,A2,...AK);

WriteLn;

Первый из этих операторов реализует вывод значений переменных А1,

А2,...,АК в строку экрана. Второй оператор реализует вывод значений переменных А1, А2, ..., АК и переход к началу следующей строки. Третий оператор реализует пропуск строки и переход к началу следующей строки.

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

Вывод каждого значения в строку экрана происходит в соот- ветствии с шириной поля вывода, определяемой конкретной реализацией языка.

Форма представления значений в поле вывода соответствует типу пе- ременных и выражений: величины целого типа выводятся как целые деся- тичные числа, действительного типа - как действительные десятичные числа с десятичным порядком, символьного типа и строки - в виде сим- волов, логического типа - в виде логических констант TRUE и FALSE.

Оператор вывода позволяет задать ширину поля вывода для каждого элемента списка вывода. В этом случае элемент списка вывода имеет вид А:К, где

А - выражение или строка, К - выражение либо константа целого типа.

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

Пример записи операторов вывода:

. . . . . . . . . . . . var rA, rB: Real; iP,iQ:Integer; bR, bS: Boolean; chT, chV, chU, chW: Char;

. . . . . . . . . . . .

WriteLn(rA, rB:10:2);

WriteLn(iP, iQ:8);

WriteLn(bR, bS:8);

WriteLn(chT, chV, chU, chW);

11. С Т Р У К Т У Р А П Р О Г Р А М М Ы

Программа на языке ПАСКАЛЬ состоит из заголовка, разделов описаний и раздела операторов.

Заголовок программы содержит имя программы, например:

Program PRIM;

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

Раздел описания модулей определяется служебным словом USES и со- держит имена подключаемых модулей (библиотек) как входящих в состав системы TURBO PASCAL, так и написанных пользователем. Раздел описания модулей должен быть первым среди разделов описаний. Имена модулей от- деляются друг от друга запятыми:

uses CRT, Graph;

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

label 3, 471, 29, Quit;

Описание констант позволяет использовать имена как синонимы конс- тант, их необходимо определить в разделе описаний констант:

const K= 1024; MAX= 16384;

В разделе описания переменных необходимо определить тип всех пере- менных, используемых в программе:

var P,Q,R: Integer;

A,B: Char;

F1,F2: Boolean;

Описание типов, прцедур и функций будет рассмотрено ниже. Отдель- ные разделы описаний могут отсутствовать, но следует помнить, что в

ПАСКАЛЬ - программе должны быть обязательно описаны все компоненты программы.

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

begin.......end

последовательность операторов. Операторы отделяются друг от друга символом ;.

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

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

{ и закрывающей скобкой комментариев }.

Текст ПАСКАЛЬ - программы может содержать ключи компиляции, кото- рые позволяют управлять режимом компиляции. Синтаксически ключи ком- пиляции записываются как комментарии. Ключ компиляции содержит символ

$ и букву-ключ с последующим знаком + (включить режим) или - (выклю- чить режим). Например:

{$E+} - эмулировать математический сопроцессор;

{$F+} - формировать дальний тип вызова процедур и функций;

{$N+} - использовать математический сопроцессор;

{$R+} - проверять выход за границы диапазонов.

Некоторые ключи компиляции могут содержать параметр, например:

{$I имя файла} - включить в текст компилируемой программы назван- ный файл.

Пример записи простой программы:

Program TRIANG; var A, B, C, S, P: Real; begin

Read(A,B,C);

WriteLn(A,B,C);

P:=(A+B+C)/2;

S:=Sqrt(P*(P-A)*(P-B)*(P-C));

WriteLn('S=',S:8:3) end.

12. Б И Т О В А Я А Р И Ф М Е Т И К А

Битовая или поразрядная арифметика введена в TURBO PASCAL для обеспечения возможности работы с двоичными разрядами (битами). Опера- ции битовой арифметики применимы только к целым типам.

Первая группа операций - логические операции not, and, or и xor.

Операция not является одноместной, она изменяет каждый бит целого числа на обратный.

Операции and, or и xor - двуместные, операнды этих операций - целые величины одинаковой длины. Операции выполняются попарно над всеми двоичными разрядами операндов.

Вторая группа операций - это операции сдвига влево shl и сдвига вправо shr:

I shl N

I shr N.

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

13. О П Е Р А Т О Р П Е Р Е Х О Д А

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

goto 218;

14. Э Л Е М Е Н Т Ы С Т Р У К Т У Р Н О Г О

П Р О Г Р А М М И Р О В А Н И Я

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

{}

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

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

Конструкция, состоящая из развилки, двух операций и слияния, назы- вается ветвлением. Одна из операций может отсутствовать.

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

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

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

Операция может быть реализована любым оператором языка ПАСКАЛЬ

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

В языке ПАСКАЛЬ количество базовых конструкций увеличено до шести, это:

-следование;

-ветвление;

-цикл с предусловием;

-цикл с постусловием;

-цикл с параметром;

-вариант.

Далее рассмотрим, как эти базовые конструкции реализуются в языке

ПАСКАЛЬ.

15. У С Л О В Н Ы Й О П Е Р А Т О Р

{}

Условный оператор в короткой форме работает по правилу: если бу- левское выражение B истинно, то выполняется оператор ОР1, далее вы- полняется оператор, следующий за условным. Если булевское выражение B ложно, то будет выполняться оператор, следующий за этим условным опе- ратором.

16. Ц И К Л С П Р Е Д У С Л О В И Е М{}

17. Ц И К Л С П О С Т У С Л О В И Е М{}

18. Ц И К Л С П А Р А М Е Т Р О М{}

19. О П Е Р А Т О Р Ы З А В Е Р Ш Е Н И Я Ц И К Л А

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

В версии ТУРБО ПАСКАЛЬ 7.0 определены стандартные процедуры Break и

Continue. Процедура Break выполняет безусловный выход из цикла. Проце- дура Continue обеспечивает переход к началу новой итерации цикла.

20. О П Е Р А Т О Р В А Р И А Н Т А{}

21. П Е Р Е Ч И С Л Я Е М Ы Й Т И П Д А Н Н Ы Х

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

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

Например, перечисляемый тип Rainbow(РАДУГА) объединяет скалярные значения

RED, ORANGE, YELLOW, GREEN, LIGHT_BLUE, BLUE, VIOLET (КРАСНЫЙ,

ОРАНЖЕВЫЙ, ЖЕЛТЫЙ, ЗЕЛЕНЫЙ, ГОЛУБОЙ, СИНИЙ, ФИОЛЕТОВЫЙ). Пе- речисляемый тип Traffic_Light (СВЕТОФОР) объединяет скалярные значения RED, YELLOW, GREEN (КРАСНЫЙ, ЖЕЛТЫЙ, ЗЕЛЕНЫЙ).

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

type

Rainbow = (RED, ORANGE, YELLOW, GREEN, LIGHT_BLUE, BLUE, VIOLET);

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

Описание переменных, принадлежащих к скалярным типам, которые объ- явлены в разделе описания типов, производится с помощью имен типов.

Например:

type Traffic_Light= (RED, YELLOW, GREEN); var Section: Traffic_Light;

Это означает, что переменная Section может принимать значения RED,

YELLOW или GREEN.

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

var Section: (RED, YELLOW, GREEN);

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

К переменным перечисляемого типа может быть применим оператор присваивания:

Section:= YELLOW;

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

Succ, Ord.

Переменные и константы перечисляемого типа не могут быть элемента- ми списка ввода или вывода.

22. И Н Т Е Р В А Л Ь Н Ы Й Т И П Д А Н Н Ы Х

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

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

{}

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

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

23. М А С С И В Ы

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

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

A[5] S[k+1] B[3,5].

В качестве индекса может быть использовано выражение. Тип индексов может быть только интервальным или перечисляемым. Действительный и целый типы недопустимы. Индексы интервального типа, для которого ба- зовым является целый тип, могут принимать отрицательные, нулевое и положительные значения.{}

В операторной части программы один массив может быть присвоен другому, если их типы иден- тичны, например:

R1:=Z.

Для ввода или вывода массива в список ввода или вывода помещается переменная с индексом, а операторы ввода или вывода выполняются в цикле.

{}

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

Двумерные массивы хранятся в памяти ЭВМ по строкам.

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

Первый способ - с использованием типизированных констант, напри- мер:

type Dim10= Array[1..10] of Real;

const raM10: Dim10 = ( 0, 2.1, 4, 5.65, 6.1, 6.7, 7.2, 8, 8.7, 9.3 );

При инициализации двумерных массивов значения компонент каждого из входящих в него одномерных массивов записывается в скобках:

type Dim3x2= Array[1..3,1..2] of Integer;

const iaM3x2: Dim3x2= ( (1, 2)

(3, 4)

(5, 6) );

Второй способ инициализации - использование разновидности процеду- ры FillChar:

FillChar( var V; NBytes: Word; B: Byte );

Эта процедура заполняет участок памяти однобайтовым значением. Напри- мер, для обнуления массива A[1..10] of Real можно записать:

FillChar(A, 40, 0);

или

FillChar(A, SizeOf(A), 0);

{}

24. С Т Р О К И

Особое место в языке ПАСКАЛЬ занимают массивы символов. Стандарт- ный ПАСКАЛЬ допускает два способа хранения символьных массивов в па- мяти ЭВМ: распакованный и упакованный. Распакованные массивы символов хранятся в памяти ЭВМ по одному символу в машинном слове, упакованные

- по одному символу в байте. При описании упакованного массива симво- лов используют служебное слово PACKED, например:

var MAS: Packed Array[1..20] of Char;

Описание распакованного массива символов имеет вид:

var M: Array[1..20] of char;

Для преобразования символьного массива из распакованной формы в упакованную и наоборот, из упакованной в распакованную, в язык ПАС-

КАЛЬ введены две стандартные функции Pack, UnPack.

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

 
     
Бесплатные рефераты
 
Банк рефератов
 
Бесплатные рефераты скачать
| Интенсификация изучения иностранного языка с использованием компьютерных технологий | Лыжный спорт | САИД Ахмад | экономическая дипломатия | Влияние экономической войны на глобальную экономику | экономическая война | экономическая война и дипломатия | Экономический шпионаж | АК Моор рефераты | АК Моор реферат | ноосфера ба забони точики | чесменское сражение | Закон всемирного тяготения | рефераты темы | иохан себастиян бах маълумот | Тарых | шерхо дар борат биология | скачать еротик китоб | Семетей | Караш | Influence of English in mass culture дипломная | Количественные отношения в английском языках | 6466 | чистонхои химия | Гунны | Чистон | Кус | кмс купить диплом о language:RU | купить диплом ргсу цена language:RU | куплю копии дипломов для сро language:RU
 
Рефераты Онлайн
 
Скачать реферат
 
 
 
 
  Все права защищены. Бесплатные рефераты и сочинения. Коллекция бесплатных рефератов! Коллекция рефератов!