Порядок вычисления выражений
Введение
Система программирования Турбо Паскаль, разработанная американской корпорацией Borland, остается одной из самых популярных систем программирования в мире. Этому способствуют, с одной стороны, простота лежащего в ее основе языка программирования Паскаль, а с другой стороны – труд и талант сотрудников Borland во главе с создателем Турбо Паскаля Андерсом Хейлсбергом.
Придуманный, примерно в 1970 году, швейцарским ученым Никласом Виртом как средство для обучения студентов программированию, язык Паскаль стараниями А. Хейлсберга превратился в мощную современную профессиональную систему программирования, которой по плечу любые задачи.
Данное пособие основывается на версию – Турбо Паскаль 7.0
Пакет Турбо Паскаль 7.0 обладает ограниченными возможностями и позволяет работать только в обычном режиме MS DOS. Начинающему программисту целесообразно начать изучение языка и среды именно с этого пакета.
Турбо Паскаль включает в себя как язык программирования – одно из расширений языка Паскаль для ЭВМ типа IBM, так и среду, предназначенную для написания, запуска и отладки программ.
Язык характеризуется расширенными возможностями по сравнению со стандартом, хорошо развитой библиотекой модулей, позволяющей использовать возможности операционной системы, создавать оверлейные структуры, организовывать ввод-вывод, формировать графические изображения и т.д.
Среда программирования позволяет создавать тексты программ, компилировать* их, находить ошибки и исправлять их, компоновать программы из отдельных частей, включая стандартные модули, отлаживать и выполнять отлаженную программу.
В данном пособии описаны основные возможности языка, которые предлагаются учащимся старших классов общеобразовательной школы. Отметим, что программа курса информатики (раздел программирование) казанской школы № 152 соответствует содержанию пособия.
Алфавит языка
Программа записывается в соответствии с синтаксисом Паскаля и используется его алфавит.
Алфавит – совокупность допустимых в языке символов.
Латинские буквы
A,B,...,Z;
a,b,…,z;
Прописные и строчные буквы не различаются.
Арабские цифры
0,1,2,…, 9;
Специальные символы
| { } | [ ] | ( ) | ‘ | := | ; | : | = | , | .. | . | ^ | @ | # | $ |
Знаки операций
Знаки операций предназначены для обозначения арифметических, логических или других действий (см. таблицы темы “”)
1.5.Служебные слова:
and, array,…,while, with, xor
Неиспользуемые символы
Некоторые символы, например: | % | & | и т.д. не используются в Турбо Паскале, но их можно использовать в комментариях и строках
Типы данных (простые)
Программа на Паскале делится на две части - это:
1. Описание данных, над которыми совершаются действия
2. Описание действий над данными
В соответствии с описанием данных компилятор распределяет память, т.е. выделяет ячейки нужной длины
Под типом данных понимается множество допустимых значений этих данных, а также совокупность операций над ними.
В Турбо Паскале имеются следующие группы простых типов:
Целые типы
Тип | Диапазон | Формат | Размер в байтах |
Integer | 215 | Знаковый | |
Longint | 231 | Знаковый | |
Byte | 28 | Беззнаковый | |
Word | 216 | Беззнаковый | |
Shortint | 27 | Знаковый |
В программе записывается как последовательность цифр со знаком или без.
Примеры:
+4; 168; -1245; +000;
Действительный (вещественный) тип
Real
Под хранение значений действительного типа отводятся ячейки длиной в 6 байт. В этих 6-ти байтах под хранение порядка отводится столько бит, сколько позволяет записать порядок (до 99). Остальные биты отводятся под хранение мантиссы, что обеспечивает точность в 12 -14 значащих цифр.
В программе может записываться в двух формах:
- естественная форма
В виде последовательности цифр со знаком или без, в которой целая и дробная части разделены точкой.
Примеры:
+13.167; -0.0002;
- форма с порядком
MEp
m – мантисса – либо целое число, либо действительное в естественной форме.
Р – порядок – двузначное целое число (не более 99)
Е – десятичное основание степени
Пример:
3.123Е-; 1234Е12
Символьный тип
Char
Для хранения данных символьного типа выделяются ячейки длиной в 1 байт. В программе записывается как любой символ клавиатуры, заключенный в апострофы
Пример:
’1’; ’d’; ’#’;
3. Строковый тип
Для хранения данных строкового типа выделяются ячейки длиной 256 байт, 1-й байт содержит признак строки, поэтому длина строки не должна превышать 255 символов
В программе записывается, как последовательность символов, заключенных в апострофы.
Примеры:
’информатика’; ’******************’; ’35545767’;
Логический тип
Boolean
Для хранения данных логического типа выделяются ячейки длиной 1 байт. В программе записывается:
True - истина;
False - ложь.
Строковый тип (относится к структурным)
String
Для хранения данных типа String отводятся ячейки длиной 256 байт. 1-й байт содержит признак строки, поэтому длина строки не должна превышать 255 символов. В программе записывается, как последовательность символов, заключенных в апострофы.
Пример:
S:=’информатика’;
Задачи
1.К какому типу в Паскале относятся следующие последовательности символов?
а) –123; б) 0.003; в) ’d’; г)’1.245’; д) ’Учебник по информатике’; е) True
2.Как хранится в памяти компьютера следующая последовательность символов?
а)12; б)-34.02; в) ’s’
Сколько байт выделяется для хранения? Почему?
Выражения
Выражения определяют действия и порядок их выполнения при вычислении значений
Выражения в Паскале формируются из следующих элементов:
Константы
Константы – это величины, которые в ходе выполнения программы не изменяют свое значение. Они могут задаваться:
- в явном виде и тогда их вид определяет тип константы
Примеры:
17 - Integer; 3.14 - Real; ’h’ - Char; ’Tyrbo Pascal’ - String; True - Boolean
- в виде именованной константы, тогда имя константы должно быть описано и указано ее значение.
Примеры:
С1=17;
С2=3.14;
С3=’h’;
Переменные
Переменные используются для обозначения величин, которые изменяются в ходе выполнения программы.
Для обозначения переменных используются имена (идентификаторы). В качестве имен можно использовать последовательность латинских букв, цифр, знак подчеркивания. Имена должны начинаться с буквы
Примеры:
Мах
Summa_1
Y_1
Переменные разделяются на простые и структурированные. У простых переменных одному имени, в любой момент выполнения программы, соответствует только одно значение. У структурированных переменных, одному имени соответствует совокупность значений.
Пример структурированной переменной – таблица.
Стандартные функции
Стандартные функции служат для облегчения записи и обращения к наиболее часто используемым функциям обработки данных.
Имя функции | Действие | Тип аргумента | Тип результата (значение функции) |
Арифметические функции | |||
PI | Real | ||
ABS(X) | |X| | Integer Real | Integer Real |
SQR(X) | X2 | Integer Real | Integer Real |
SIN(X) | Sin x | Integer Real | Real |
COS(X) | Cos x | Integer Real | Real |
EXP(X) | Ex | Integer Real | Real |
LN(X) | Ln x | Integer Real | Real |
SQRT(X) | Integer Real | Real | |
ARCTAN(X) | Arctg x | Integer Real | Real |
Функции преобразования типов | |||
ORD(X) | Преобразует любой порядковый тип в целый (можно узнать ASCII-коды символов) | Любой порядковый тип | Integer |
CHR(X) | Преобразует ASCII-коды в символ | Integer | Char |
ROUND(X) | Округление до ближайшего целого | Real | Longint |
TRUNG(X) | Целая часть числа | Real | Longint |
Функции для величин порядкового типа | |||
PRED(X) | Определение предыдущего значения | Любой порядковый тип | Значение функции того же типа, что и аргумент |
SUCC(X) | Определение следующего значения | Любой порядковый тип | Значение функции того же типа, что и аргумент |
ODD(X) | Проверяет величину X на нечетность | Integer | Boolean |
Функции разнообразного назначения | |||
RANDOM[(X)] | Формирует случайное число | Word X - параметр, указывающий диапазон значений случайного числа | Задан х - Word : 0<=Rez<x Не задан х – Real: 0.0<=Rez<1.0 |
Знаки операций
- Арифметические операции
Знак | Операция | Тип операндов | Тип результата |
+ | Сложение | Целые Хотя бы один действительный | Целый Действительный |
- | Вычитание | Целые Хотя бы один действительный | Целый Действительный |
* | Умножение | Целые Хотя бы один действительный | Целый Действительный |
/ | Деление | Целые или действительные | Действительные |
div | Деление целых чисел | Целые | Целый |
mod | Остаток от деления целых чисел | Целые | Целый |
- Операции отношения
Знак | Операция | Тип операндов | Тип результата |
= | Равно | Любой сравнимый тип (оба операнда должны быть одного типа) | Логический |
<> | Не равно | ----/----- | ----/----- |
> | Больше | ----/----- | ----/----- |
> | Меньше | ----/----- | ----/----- |
>= | Больше или равно | ----/----- | ----/----- |
<= | Меньше или равно | ----/----- | ----/----- |
- Логические операции
X | Y | X and Y | X or Y | X xor Y |
False | False | False | False | False |
False | True | False | True | True |
True | False | False | True | True |
True | True | True | True | False |
Круглые скобки
Круглые скобки используются для заключения в них части выражения, значения которой необходимо выполнить в первую очередь
Порядок вычисления выражений
Группа | Типы действий | Операции или элементы |
Вычисления в круглых скобках | ( ) | |
Вычисление значения функции | Функции | |
Операции подобные умножению | *, / , div , mod, and | |
Операции типа сложения | +, - , or, xor | |
Операции отношения | = , <> , < , > , >= , <=, in |
Пример:
(X>0) and (X<5)
В этом примере сначала выполняются 2 операции сравнения (операции 5-й группы), а затем логическая операция (операция 3 группы).
Задачи:
1.Какие из следующих последовательностей символов являются именами (идентификаторами)?
а) X; б)x1; в)Max; г)Symma_1; д)Kor 1; е)10_e; ж)Класс; з)R-1;
2.Найти значение функции:
а)Ord(’a’); б)Chr(125); в)Round(123.6); г)Trung(34.999); д)Pred(’Z’); е(Succ(1); ж)Odd(13);
3.Найти значение выражения:
а)17 Div 5; б)17 Mod 5; в)5>3; г)11<>11;
4.Какие из следующих последовательностей символов, являются выражениями, записанными по правилам Паскаля? К какому типу выражений они относятся? Из каких элементов состоят?
а)1; б)2-(Y Mod X)+Sqr(X); в)X2+Y4; г)2xy+15; д)(y>x) or (12=x); е)’11111+2222’;
Структура программы
Программа состоит из заголовка программы и блока программы
Заголовок:
Program <имя программы>;
<имя программы> - любой идентификатор.
Блок программы:
Состоит из 6-ти разделов, 5 из которых служат для описания данных, а 6-ой для описания действий над данными:
1. Раздел описания меток;
2. Раздел определения констант;
3. Раздел описания типов;
4. Раздел описания переменных;
5. Раздел описания процедур и функций;
6. Раздел операторов;
В Турбо Паскале порядок следования описательных разделов произвольный, но с обязательным соблюдением правила, что любое имя до его исполнения должно быть описано.
Некоторые из описательных разделов могут отсутствовать за ненадобностью.
Раздел описания меток
Label <метки>;
В Турбо Паскале в качестве меток разрешается использовать имена (идентификаторы). Метками помечаются те операторы программы, на которые предусмотрена передача управления. Метка, помечающая оператор, отделяется от него двоеточием. Все метки, используемые в разделе операторов, обязательно должны быть описаны в разделе описания меток.
Пример:
:
Label 1,3,15,155,Sum,Max;
:
155:A:=25+B;
Goto 155;
:
Те операторы, на которые нет передачи управления, не нужно снабжать метками.