Реферат: Основные понятия алгоритмического языка
ческие операции, дающие действительный результат:
сложение + , вычитание - , умножение * , деление / .
К величинам действительного типа применимы все операции отношения,
дающие булевский результат.
Один из операндов, участвующих в этих операциях, может быть целым.
К действительным аргументам применимы функции, дающие действитель-
ный результат:
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 является одноместной, она изменяет каждый бит целого