Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Стандартные функции языка «Pascal»

Содержание:

Введение

Язык программирования «Pascal» был разработан в конце 60-х годов профессором Высшего технического училища в Цюрихе (Швейцария) Никлаусом Виртом. Предложенный им алгоритмический язык он назвал именем французского ученого Блеза Паскаля (1623 - 1662), который создал первую в мире вычислительную машину. Язык предназначался для обучения студентов программированию.

Благодаря своей эффективности, простоте и логичности «Pascal» быстро получил широкое распространение во всем мире. Тексты программ легко проверяются на правильность. Число операторов языка сведено до минимума. «Pascal» позволяет рационализировать рабочий процесс программирования, постепенно уточняя отдельные части программы и, наряду с небольшими несложными программами, создавать структурированные программы трудоемких и сложных вычислений.

Целью данной курсовой работы является изучение основ языка «Pascal». Его элементов, структуры программы, операторов и основных типов величин.

1. Элементы языка

1.1. Словарь языка «Pascal»

Алфавит языка «Pascal» включает в себя следующие символы:

1. Латинские буквы (заглавные и прописные).

2. Цифры от 0 до 9.

3. Знаки арифметических операций:

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

4. Знаки отношений:

> - больше; < - меньше; = - равно; >= - больше или равно; <= - меньше или равно; <> - не равно.

5. Разделители:

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

, - для разделения элементов в списке;

; - для разделения операторов;

: - для отделения переменной или константы от типа и метки от оператора;

‘ ‘ - выделение символа или строковой константы;

() - выделение выражений, списков параметров;

[] - выделение индексов массивов, элементов множеств;

{} - скобки комментариев.

6. Спецификаторы:

^ - значение величины по ее указателю;

@ - обозначение адреса переменной;

# - обозначение символа по его коду;

$ - обозначение директивы компилятора или знак 16-ричного числа.

7. _ - знак подчеркивания.

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

1. Указатели функций. В языке «Pascal» существует ряд стандартных функций, которые записываются следующим образом:

<имя функции> (<список параметров>)

Например,

SIN(Х) - синус х;

ABS(5) - модуль (абсолютная величина) числа 5;

Х MOD 2 - остаток от деления величины х на 2.

Язык «Pascal» также позволяет пользователю создавать свои собственные функции.

2. Имена величин (идентификаторы) обозначаются набором символов состоящих из латинских букв (A-Z, A-z) и цифр (0-9).

Имена указывают на элементы языка - константы, метки, типы, переменные, процедуры, функции, модули, объекты. При указании имени на первом месте должна стоять буква. Можно использовать в именах переменных знак подчеркивания «_». Нельзя использовать в качестве имен величин служебные слова языка.

В качестве имен в языке «Pascal» не разрешено использовать служебные слова, стандартные константы, типы, процедуры, функции и файлы.

Также имена величин не могут содержать: русских букв, знаков препинания, специальных символов (~, #, $, % и других).

Имя переменной может быть любой длины, не превышающей 250 символов. Также не учитывается регистр букв, то есть переменные с именами Primer и pRiMeR будут рассматриваться как одна и та же переменная.

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

Например, физическая величина СКОРОСТЬ. Она может принимать различные значения 15 м/с, 200 км/ч и т.д.

Также каждая величина имеет свои допустимые значения (интервал значений). Например, величина РОСТ ЧЕЛОВЕКА может принимать значения 1 м 40 см, 2 м 2 см и т.д. Интервал значений данной величины находится в промежутке (приблизительно) от 40 см до 2 м.

Все величины языка «Pascal» можно условно разделить на две группы: постоянные и переменные.

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

Постоянные величины делятся на числовые и литерные (символьные, строковые).

Например, числовые величины - 5; -45.6; -45216; литерные величины - ‘стол’; ‘125’.

Литерные величины всегда берутся в одиночные кавычки (апострофы).

Переменные величины в ходе выполнения программы могут принимать разное количество значений. Переменные величины могут иметь буквенное обозначение или с индексом. Например, простые - Х; DF; с индексом - Х1; DF25.

4. Типы величин. В зависимости от значения величины подразделяются на целые, вещественные, литерные, табличные и логические, которые, в свою очередь имеют деление и обозначение в зависимости от размерности значения величины. Целые: INTEGER, SHORTING, BYTE, WORD, LONGINT; вещественные - REAL, SINGLE, DOUBLE, EXTENDED, COMP; литерные - CHAR, STRING; табличные - ARRAY; логические - BOOLEAN.

5. Выражения. Выражения языка «Pascal» задают правила вычисления некоторого значения. Все выражения языка «Pascal» можно разделить на арифметические и литерные.

Арифметические выражения записываются с помощью знаков арифметических операций по определенным правилам. Например, 15+2; 12.3*12.8; D-F.

К литерным выражениям относится операция слияния (соединения), которое обозначается знаком сложения (+), но имеет несколько другой смысл, нежели обычное сложение двух чисел. Например, ‘сто’+’л’

6. Условия. Условия на языке «Pascal» бывают простые и составные.

Простые условия записываются с помощью знаков отношения в виде:

<выражение><знак отношения><выражение>

Например, F>5; H=2; name<>’ваня’.

Составные условия включают в себя несколько простых условий соединенных с помощью служебных слов NOT (не), AND (и), OR (или):

<простое условие>{AND, OR}<простое условие>

Например, D>50 AND T<200; F1=5 OR T2<=15.

7. Служебные слова (операторы). Все служебные слова языка являются словами английского языка. Операторы задают последовательность некоторых действий (команд), которые необходимо выполнить. Для описания сложных действий используют группу операторов. В этом случае операторы объединяются в составной оператор или блок.

Примеры некоторых операторов языка «Pascal»:

PROGRAM (программа) - название программы;

BEGIN (начало) - начало программы;

END (конец) - конец программы;

VAR (variable - переменная величина);

LABEL (метка);

CONST (константа);

TYPE (тип);

IF (если)... THEN (то) ... ELSE (иначе) - условный оператор (команда ветвления);

CASE - оператор выбора;

GOTO - оператор безусловного перехода;

FOR ... TO ... DO - оператор повторения (цикла);

REPEAT (повторять). UNTIL (до тех пор, пока не) - оператор повторения;

WHILE (пока). DO - оператор повторения (цикла);

PROCEDURE (процедура);

FUNCTION (функция).

1.2. Структура программы

Программа на языке «Pascal» имеет строгую структуру и несколько обязательных разделов, которые следуют один за другим в определенном порядке.

Program имя программы; - заголовок программы

Var

описание величин - раздел описаний

begin

{Операторы} - раздел операторов

End.

Под заголовком программы понимается имя, помогающее определить ее назначение. Заголовок программы состоит из служебного слова PROGRAM и имени программы. Имя программы, или идентификатор, может начинаться с большой или малой буквы латинского алфавита или знака «_», далее могут следовать буквы, цифры или знак

«_». Имя (идентификатор) программы не должно содержать пробелов. После имени программы ставится «;».

Например,

Program test2;

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

1. описание типов данных (обязательный подраздел)

2. описания процедур и функций

3. описание модулей

При описании типов данных придерживаются следующей последовательности:

Label ...; - метки

Const ...; - константы

Type .. .; - типы пользователя.

Var ...; - переменные

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

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

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

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

Например,

Var P, Q, R: Integer;

F1, F2: Boolean;

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

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

Например,

Function f(x, y: integer): integer;

Begin

If x>0 Then f:=y Else f:= y*y;

End;

Для записи процедур используется служебное слово PROCEDURE, после которого идет имя процедуры, а сама процедура записывается в виде:

Procedure MyProc;

Begin

{действия}

End;

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

Выполнение операторов осуществляется последовательно.

При записи программ знак «;» нужно ставить после каждого оператора. Из этого правила есть только три исключения:

1. Знак «;» не ставится перед служебным словом ELSE;

2. Знак «;» может не ставиться перед служебным словом END;

3. В конце программы после служебного слова END ставится точка.

Обязательность знака «;» связана с тем, что «Pascal» не контролирует размещение операторов по строкам. Знак окончания строки (невидимый в текстовом редакторе) система приравнивает к пробелу. Вся программа как бы размещена в одной длинной строке, и операторы должны отделяться один от другого знаком «;». Лишний знак «;» в программе повредить не может, поскольку воспринимается как знак, который отделяет «пустой оператор».

Возможность построения конструкций обеспечивается тем, что «Pascal» автоматически игнорирует лишние пробелы между служебными словами, именами величин и знаками. Используя пробелы, можно произвольно менять расположения оператора в строке. Так как знак окончания строки в системе программирования приравнивается к пробелу, можно произвольно менять расположение операторов по строкам.

Для того чтобы программа была более ясной и понятной, в тексте программы используются комментарии. Комментарии записываются между знаками { и } и могут располагаться в любом месте текста программы. Для записи комментариев вместо знаков { и } могут использоваться пары знаков (* и *) соответственно.

1.3. Запись арифметических выражений

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

Числа на языке «Pascal» обычно записываются в десятичной системе счисления. Они могут быть целыми и действительными. Положительный знак числа может быть опущен. Целые числа записываются в форме без десятичной точки. Например, 217, -45.

Действительные числа записываются в форме с десятичной точкой или в форме с использованием десятичного порядка, который изображается буквой Е. В такой записи буква E означает «умножить на 10 в степени». Например, 28.6, -0.018, 5Е12, -1.72Е9, 3.1Е-16.

«Pascal» допускает запись целых чисел и фрагментов действительных чисел в форме с порядком в шестнадцатеричной системе счисления. Например, $7F, $ABC0.

Литерные величины в языке «Pascal» - это последовательность символов, записанная между апострофами. Если в строке в качестве содержательного символа необходимо употребить сам апостроф, то следует записать два апострофа. Например, 'СТРОКА', 'STRING'.

Сложение обозначается символом «+», вычитание «-», умножение «*», деление «/».

При вычислении операции выполняются в следующем порядке: возведение в степень, изменение знака; логическое NOT; арифметические умножение и деление, логическое AND; арифметические сложение и вычитание, логическое OR; операции отношения.

Рядом стоящие умножение и деления выполняются слева направо, равно как и рядом стоящие сложения и вычитания. Для определения порядка действий используются скобки. Число скобок не ограничено. Единственное правило - количество открывающихся скобок должно быть равно количеству закрывающихся. Например, выражение A*B/C*D означает то же, что и (A*B/C)*D. Чтобы C*D было в знаменателе, нужно написать A*B/(C*D).

1.4 Стандартные функции языка «Pascal»

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

PI - возвращает значение 3,14159...

SIN() - функция синуса; аргумент задается в радианах; функция возвращает вещественное значение. Например, SIN(0)=1, SIN(PI/2)=0.

COS() - функция косинуса; значение аргумента в радианах; функция возвращает вещественное значение. Например, COS(0)=0, COS(PI/2)=1.

ARCTAN () - функция арктангенса; тип результата - вещественный.

ABS() - абсолютная величина аргумента. Например, ABS(-5)=5, ABS(146)=146. Аргумент для данной функции может быть целым либо вещественным; тип возвращаемого значения определяется типом аргумента.

SQRT() - корень квадратный из аргумента. Например, SQRT(9)=3.

A MOD B - остаток от деления числа А на B. A и B - целые числа. Например, 123 MOD 10 = 3; 17 MOD 12 = 5.

A DIV B - вычисление целой части частного от деления числа A на B. Например, 123 DIV 10 = 12, 5 DIV 8=0.

TRUNK() - нахождение целой части аргумента. Например, TRUNK(23.45)=23, TRUNK(125)=125.

INT () - возвращает целую часть аргумента в виде вещественного значения. Например, INT (23.5)=23.

FRAC() - дробная часть аргумента. Например, FRAC (23.45)=0.45.

ROUND()- округляет аргумент до целого значения; тип результата - Longint. Например, ROUND(12.15)=12, ROUND(12.51)=13.

EXP() - вычисляет значение ex (экспоненциальная функция); тип результата - вещественный.

LN() - натуральный логарифм аргумента. Тип функции - вещественный.

SQR() - возведение аргумента в квадрат. Аргумент может быть как целого, так и вещественного типа; результат имеет вещественный тип. Например, SQR(2)=4, SQR(-5)=25.

DEC (Х,[А]) - уменьшает значение Х на заданное число или на другую переменную. Параметр Х может быть значением любого типа. Например, для целочисленного аргумента Х процедура DEC(X;1) аналогична оператору Х:=Х-1. Параметр А является необязательным. При его отсутствии значение Х уменьшается на единицу. Например, DEC(5)=4, DEC(5, 3)=2.

INC (Х, [А]) - увеличивает переменную на заданное число или на другую переменную. Например, INC(6)=7, INC(3,10)=13.

ODD () - проверяет аргумент на четность; возвращает значение TRUE, если аргумент - нечетное число, и FALSE - в противном случае. Тип функции - Boolean. Например, ODD (12)=TRUE, ODD (15)=FALSE.

В языке «Pascal» нет обозначения для операции возведения в степень. Эта операция строится с помощью функций EXP() и LN(). Например, Y:=EXP(LN(X)*5) - возведение числа Х в степень 5.

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

Язык «Pascal» предусматривает и создание новых пользовательских функций.

1.5. Организация ввода и вывода данных

При построении алгоритмов решения задач выделяются следующие составные части программы:

- ввод исходных данных;

- обработка данных;

- вывод результатов.

Исходные данные на языке «Pascal» можно вводить в тексте программы или в процессе ее исполнения. Результаты выводятся в процессе исполнения программы, и их вывод организуется специальным образом. Для ввода данных можно воспользоваться возможностями оператора присваивания.

Ввод данных возможен не только с помощью операторов присваивания. На языке «Pascal» можно одновременно описать величину и ее начальное значение с помощью типа данных, который называется «константа» со служебным словом CONST. В тексте программе тип данных CONST описывается раньше типа VAR.

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

Ввод данных в процессе исполнения программы организуется с помощью операторов READ и READLN. Операторы ввода записываются в следующем виде:

READ (список ввода);

READLN (список ввода);

READLN;

Список ввода представляет собой список величин, которые предварительно описаны в разделе описаний программы и в списке записаны через запятую. С помощью операторов READ() и READLN() этим величинам присваиваются значения.

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

В случае операторов READ() и READLN() со списком ввода вводимые данные отображаются на экране пользователя и последовательно становятся значениями величин из списка ввода. Тип вводимых данных должен соответствовать типу величин списка, иначе исполнение программы прерывается и выдается сообщение об ошибке.

Если в списке ввода несколько числовых величин, то вводимые значения отделяются одно от другого либо знаком «пробел», либо нажатием клавиши ENTER. Если числа разделять пробелами, то они будут располагаться в одной строке экрана пользователя. Если числа разделять нажатием клавиши ENTER, то на экране пользователя вводимые числа будут последовательно занимать новые строки.

Если в списке ввода есть величина типа STRING, то ввод каждой строки символов обязательно должен заканчиваться нажатием клавиши ENTER.

Оператор READLN не имеет списка ввода, поэтому его называют оператором «пустого» ввода и обычно используют в программе для организации задержки ее исполнения до нажатия клавиши ENTER.

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

Операторы вывода записываются в следующем виде:

WRITE (список вывода);

WRITELN (список вывода);

WRITELN;

В списке вывода через запятую можно задавать числа, величины, арифметические выражения и функции (они автоматически вычисляются), строки символов (ограниченные знаками апостроф «’»).

Между WRITE и WRITELN существует единственное различие: после выполнения оператора WRITELN курсор переходит на новую строку.

Оператор WRITELN, который не имеет списка вывода, просто переводит курсор на экране пользователя на новую строку.

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

2. Операторы языка

2.1 Оператор присваивания

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

<имя изменяемой переменной>:=<выражение>

Выполнение этой команды приведет к изменению значения переменной, имя которой указано слева от знака присваивания :=.

Справа записывается выражение, определяющее новое значение переменной. Например, запись вида А:=5 означает, что переменная А принимает значение 5. Запись вида A:=B+C означает, что величина А принимает значение суммы величин B и C.

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

Также в операторе присваивания можно использовать одну и ту же переменную. Например, запись А:=А+1 означает, что величина А получает новое значение, увеличенное на 1. Записи такого рода являются обычными для языка «Pascal».

2.2. Условные операторы

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

Язык «Pascal» допускает использование трех типов условных операторов:

1. Условный оператор IF;

2. Оператор выбора CASE;

3. Оператор безусловного перехода GOTO.

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

1. Неполная форма записи

IF <условие> THEN <оператор>;

2. Полная форма записи

IF <условие>

THEN <оператор 1> ELSE <оператор 2>;

Если проверяемое условие верное, то выполняется оператор, указанный после слова THEN. Если же условие не верное, то выполняется оператор, указанный после слова ELSE.

Слова ELSE может и не быть. Это используется тогда, когда нужно выполнить проверку только одного условия.

Если после проверки условия нужно выполнить не один, а несколько операторов применяются служебные слова BEGIN и END. В таком случае после слова END ставится точка с запятой, а не точка.

Например,

Program Primer;

Var A, B: integer;

Begin

Readln (A, В);

If A+B>50 Then Begin

A:=A+10; В:=В-5;

End;

Else A:=A-B;

Write(A);

End.

В качестве выполняемого оператора можно использовать и сам оператор IF. В таком случае оператор называется вложенным.

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

Case Выражение of

Вариант1: Оператор1;

Вариант2: Оператор2;

Вариант№ ОператорN;

Else ОператорШ;

End;

В качестве вариантов можно использовать:

1. Константное выражение такого же типа, как и выражение после CASE.

2. Интервал, например: 1..5, 'A'..'Z'.

3. Список значений или интервалов, например: 1, 3, 5..8, 10, 12.

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

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

Program Primer;

Label First;

Var A, B: integer;

Begin

First;

Readln (A); Readln (B);

If A > B Then Goto First; End.

При выполнении этой программы, в случае, когда A>B происходит переход на место помеченное словом First.

2.3. Операторы цикла

При составлении программ часто приходится выполнять одни и те же операторы несколько раз. Чтобы избавиться от многократной записи одинаковых операторов «Pascal» предусматривает использование трех вариантов циклов.

1. Цикл с предусловием WHILE;

2. Цикл с постусловием REPEAT;

3. Цикл с параметром FOR.

Оператор WHILE (пока), записывается в виде:

WHILE<условие или величина типа Boolean> DO <оператор>;

Оператор WHILE может в своем составе содержать только один исполняемый оператор. Чтобы выполнить любое число операторов, их можно объединять с помощью служебных слов BEGIN и END по следующей форме:

BEGIN оператор 1; оператор 2; ...; оператор n END;

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

Например,

Program Primer;

Var i, s: integer;

Begin

s:=2; i:=10;

While i>5 Do

Begin

s:=s+2; i:=i-1;

End;

Writeln (s);

End.

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

REPEAT

оператор 1 оператор 2

оператор n

UNTIL < логическое выражение>;

Оператор REPEAT (повторять) ... UNTIL (до тех пор, пока не) содержит логическое выражение (после UNTIL), которое управляет повторением последовательности операторов, записанных между REPEAT и UNTIL.

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

При использовании оператора REPEAT . UNTIL необходимо учитывать следующее:

• последовательность операторов должна содержать хотя бы один оператор, влияющий на значение логического выражения;

• для того чтобы цикл завершился, логическое выражение рано или поздно должно принять значение TRUE.

В случае если после UNTIL записать FALSE цикл будет повторяться бесконечное число раз.

Например,

Program Primer;

Var i, s: integer;

Begin

s:=2;

i:=10;

Repeat s:=s+2; i:=i-1;

Until i>5;

Writeln (s);

End.

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

FOR i:=1 TO n DO оператор;

Вместо величины n может быть записано конкретное целое число.

Например, FOR i:=1 TO 5 DO А:=А+1;

В случае необходимости уменьшения переменной i вместо DO используется служебное слово DOWNTO.

Например, FOR i:= 10 DOWNTO 1 DO

Если необходимо выполнить несколько операторов, используется конструкция BEGIN ... END;

Например,

Program Primer;

Var i; s, a: integer;

Begin

s:=2; a:=10;

For i:=1 To 10 Do Begin

s:=s+2; a:=a-s;

End;

Writeln(s, a);

End.

3. Типы величин языка «Pascal» и операции над ними

В языке «Pascal» существует несколько основных типов величин: числовые (целые и действительные), логические, литерные, табличные.

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

3.1. Числовые величины

Числовые величины в языке «Pascal» подразделяются на целые и действительные.

Целые числа (натуральные, им противоположные и ноль) описываются с помощью служебного слова INTEGER.

Над целыми числами можно выполнять сложение, вычитание, умножение, деление, получение остатка от деления.

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

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

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

Следующая группа стандартных функций для аргумента целого типа дает действительный результат: SIN(), COS(), ARCTAN(), LN(), EXPO, SQRT().

Результат выполнения функции проверки целой величины на нечетность ODD() имеет значение истина, если аргумент нечетный, и значение ложь, если аргумент четный.

Вещественные числа на языке «Pascal» описываются с помощью служебного слова REAL.

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

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

К действительным аргументам применимы функции, дающие действительный результат: ABS(), SQR(), SIN(), COS(), ARCTAN(), LN(), Exp(), SQRT(), INT(), PI. К аргументам действительного типа применимы также функции TRUNC() и ROUND(), дающие целый результат. Первая из них выделяет целую часть действительного аргумента путем отсечения дробной части, вторая округляет аргумент до ближайшего целого.

3.2. Логические величины

Для описания логических величин используется служебное слово BOOLEAN. Логические величины принимают только два значения: TRUE (истинно) и FALSE (ложно). Результатами обработки логических величин также являются величины логического типа.

Для задания значения логической величине используется оператор присваивания. Например:

Program ff;

Var а, b : Boolean;

Begin

а: = true; b: = false;

End.

Логические выражения строятся из логических величин, функций, выражений, отношений и логических операций.

Основными логическими операциями являются NOT (НЕ), AND (И), OR (ИЛИ). Эти операции являются фундаментом булевой логики, разработанной в XIX веке математиком Джорджем Булем.

Например, (С+1>5) OR (К<10); NOT((A>3) AND (А<= -2).

Операция NOT изменяет значение величины на обратное. Действие операции NOT: Not true = false; Not false = true.

Для простоты запоминания действий операций OR и AND необходимо усвоить два основных правила:

1. Логическое выражение А OR В истинно, если хотя бы одно из условий А или В истинно.

2. Логическое выражение А AND В истинно, когда оба условия А и В истинны.

В ходе исполнения программы в первую очередь выполняется операция NOT, затем AND и в последнюю очередь - OR. Изменить порядок действия можно с помощью скобок. В логических выражениях могут встречаться и арифметические операции: +, -, *, /, mod, div, а также знаки сравнения.

3.3. Литерные величины

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

Символьные переменные на языке «Pascal» описываются типом CHAR.

Значения символьных констант и переменных заключаются в апострофы (одинарные кавычки).

Например, 'A', 'B', 'C', '4', '7', ' ' (пробел).

Если нужен сам апостроф, то он удваивается: В :=’’’’.

Символьные значения можно задавать и их числовыми кодами. Например, код пробела равен 32, код ‘A’ - 65, ‘B’ - 66, ‘C’ - 67, код символа ‘1’ - 48, ‘2’ - 49, ‘.’ - 46 и т.п.

В случае использования кода перед ним записывают знак #.

Над символьными величинами можно выполнять следующие действия: присваивание, ввод и вывод, сравнение. Вывод символьных величин выполняется с помощью стандартных процедур WRITE() и WRITELN(). Ввод символьных переменных выполняется с помощью стандартных процедур READ() и READLN().

Сравнение символьных величин производится по тем же правилам, что и сравнение чисел с использованием знаков отношений =, <>, <, >, <=, >=. В этом случае сравнивает не сами символы, а их коды. Таблица кодов ASCII составлена таким образом, что коды букв (латинских и большинства русских) возрастают при движении в алфавитном порядке, а коды цифр расположены по порядку.

Из двух символов большим считается тот, код которого больше. Например, '1' <'9,' 'A' < 'B', 'б' < 'я'.

«Pascal» также содержит несколько стандартных функций для работы с символьными величинами.

ORD() - определяет код символа. Например, ORD(2)=49.

CHR() - возвращает символ с указанным кодом. Например, CHR(C)=67.

SUCC () - выдает символ со следующим кодом.

PRED () - символ с предыдущим кодом.

Записи вида SUCC(#255) или PRED(#0) приводят к ошибкам в программе.

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

Основные действия, которые можно выполнять над строковыми переменными: ввод и вывод, присваивание, сравнение, соединение.

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

Вывод строковых переменных выполняется с помощью стандартных процедур WRITE () и WRITELN() и не отличается от вывода данных других типов.

Процедура WRITE выводит значения в одну строку. При этом выводимые значения необходимо отделять пробелами или иными символами (например, запятой, точкой с запятой), иначе все они будут напечатаны слитно. Процедура WRITELN выводит каждое значение с новой строки (в столбец).

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

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

Например, строка ‘стол’ меньше строки ‘стул’ (первые два символа совпадают, третий символ 'о’<‘у’).

Сравнивать можно строки и разной длины. Например, строка ‘пар’ меньше строки ‘парад’, 'ABC' <'ADBA’.

Для определения длины строковой величины используется функция LENGTH (). Например, LENGTH (Информатика)=11.

Функцию LENGTH () можно использовать в команде присваивания.

Строковая величина может не содержать ни одного символа.

Она обозначается двумя подряд идущими символами «» и называется пустым текстом. Ее длина равна 0.

Строковая величина, состоящая из одного пробела, имеет длину 1.

Операция соединения позволяет соединять значения литерных величин и констант. Операция соединения обозначается знаком «+».

Результат операции соединения присваивается величине литерного типа.

Например, 'пар'+ 'о' +'ход' дает в результате 'пароход'.

Также для соединения строк используется функция CONCAT (S1, S2, Sx);. где, S1, S2, ..., Sx - список строк, которые будут сложены.

Эта функция - аналог операции сложения.

Использование сложения строк через «+» лучше, чем использование CONCAT, так как занимает меньше места в программе.

Для определения поиска строки в строке используется функция POS (S, S1); где S - это искомая строка, то есть та, которую функция пытается найти, S1 - строка, в которой производится поиск. Если строка S в S1 не обнаружена, то функция принимает значение ноль.

Функция COPY (S; I; C); - выделяет из строки S подстроку длиной C символов, начиная с позиции I.

Для удаления подстроки длиной C символов в строке S с позиции с номером I используется функция DELETE (S; I; C);

INSERT (X; S; I); - используется для вставки подстроки X в строку S начиная с позиции с номером I.

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

Для взаимного преобразования типов в «Pascal» существует две процедуры:

STR (X; S); - преобразует вещественное число X в строку S.

VAL (S; X; код); - преобразует строку S в вещественное число Х. Код - переменная для указания ошибки. При наличии ошибки указывает номер символа в строке, в котором содержится ошибка, в случае отсутствия таковых устанавливается в 0.

3.4. Массивы

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

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

Для описания массивов используется служебное слово ARRAY. Сам массив задается в виде:

VAR <имя> : ARRAY [диапазон индекса] OF <тип элементов>;

Например, VAR Temp : ARRAY [1..7] OF INTEGER; - массив с именем Temp, состоящий из семи элементов целочисленного типа.

Доступ к отдельным элементам массива осуществляется по индексу.

Например, доступ к третьему элементу - Temp[3], к пятому- Temp[5], и т.д.

Имя массива, так же, как и имена величин, выбирается произвольно.

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

Например,

For I:= 1 To 7 Do Temp[I]:=0; { все элементы массива Temp равны 0 }

Ввод элементов массива также осуществляется в цикле:

For I:= 1 To 7 Do Begin

Writeln('Введите ',1,'-ый элемент массива');

Readln(Temp [I]);

End;

Вывод значений элементов массива выполняется аналогично:

For I:= 1 To 7 Do

Writeln(Temp[I]); {вывод всего массива}

Writeln(Temp[6]); {вывод 6-го элемента}

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

Описывается двумерный массив следующим образом:

VAR <имя> : ARRAY [диапазон строк, диапазон столбцов] OF <тип элементов>;

Например, VAR Temp : ARRAY [1..4, 1...3] OF INTEGER; - массив с именем Temp, состоящий из четырех строк, трех столбцов целочисленного типа.

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

Например,

For i:= 1 To 4 Do

For j:= 1 To 3 Do

Temp[i, j]:=0;

Ввод элементов двумерного массива также осуществляется в цикле:

Например,

For i:= 1 To 4 Do For j:= 1 To 3 Do Readln (Temp[i, j]);

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

Например,

For i:= 1 To 4 Do For j:= 1 To 3 Do

Writeln (Temp[i, j]); - вывод всего массива

Writeln (Temp[2, 3]); - вывод элемента 2-й строки 3-го столбца.

Список литературы

1. Аляев Ю.А. Алгоритмизация и языки программирования Pascal, C++, Visual Basic: Учебно-справочное пособие / Ю.А. Аляев, О.А. Козлов. - М.: Финансы и статистика, 2002. - 320 с.

2. Бежанова М.М. Практическое программирование. Приемы создания программ на языке Паскаль / М.М. Бежанова, Л.А. Москвина. - М.: Научный Мир, 2000. - 270 с.

3. Гусева А.И. Учимся программировать: Pascal 7.0. Задачи и методы их решения / А.И. Гусева. - М.: Диалог-МИФИ, 1998. - 272 с.

4. Демидов Д.В. Основы программирования в примерах на языке Паскаль: Учебное пособие / Д.В. Демидов. - М.: НИЯУ МИФИ, 2010. - 172 с.

5. Долинский М.С. Алгоритмизация и программирование на Turbo Pascal: от простых до олимпиадных задач: Учебное пособие / М.С. Долинский. - СПб.: Питер, 2005. - 237 с.

6. Епанешников А. Программирование в среде Turbo Pascal 7.0 / А. Епанешников, В. Епанешников. - М.: Диалог-МИФИ, 1995. - 288 с.

7. Меженный О.А. Turbo Pascal. Самоучитель / О.А. Меженный. - М.: Вильямс, 2008. - 336 с.

8. Павловская Т.А. Паскаль. Программирование на языке высокого уровня: Учебник для вузов / Т.А. Павловская. - Спб.: Питер, 2007. - 393 с.

9. Потопахин В. В. Turbo Pascal: решение сложных задач / В.В. Потопахин. - СПб.: БХВ-Петербург, 2006. - 208 с.

10. Прайс Д. Программирование на языке Паскаль: Практическое руководство. / Д. Прайс. - М.: Мир, 1987. - 232 с.

11. Рапаков Г.Г. Программирование на языке Pascal. / Г.Г. Рапаков, С.Ю. Ржеуцкая. - СПб.: БХВ-Петербург, 2004. - 480 с.

12. Фаронов В.В. TurboPascal 7.0. Учебный курс : учебное пособие / В.В. Фаронов. - М.: КНОРУС, 2011. - 368 с.

13. Федоренко Ю. Алгоритмы и программы на Turbo Pascal. Учебный курс / Ю. Федоренко. - СПб.: Питер, 2001. - 240 с.