Добавлен: 28.04.2023
Просмотров: 241
Скачиваний: 1
Кроме того, побитовые и или xor операции не могут использоваться для целых чисел. При выполнении этих операций каждое значение представляется в виде набора двоичных цифр. Действие выполняется для каждой пары соответствующих битов операндов. Например, результатом операций 3 и 2 будет 2, поскольку двоичное представление числа 3 равно 11, число 2 равно 10. Для операций с целочисленными значениями также предназначены сдвиги влево и вправо. Слева от знака операции находится значение, по которому будет выполняться операция, а справа - если для сдвига значения требуются двоичные цифры. Например, результатом операции 12 shr 2 будет 3, потому что двоичное представление 12 равно 1100.
Реальные типы. Фактические типы данных не хранятся в памяти компьютера как целые числа. Внутреннее представление действительного числа состоит из двух частей: мантиссы и ордена, и каждая часть имеет знак. Например, число 0,087 представляется как 0,87 * 10-1, а мантисса 87 и порядок -1 сохраняются в памяти (для ясности мы упустили из виду тот факт, что данные фактически представлены в двоичной записи), и это немного сложнее). Существует несколько типов материалов, которые отличаются точностью и диапазоном представления данных. Точность числа определяется длиной мантиссы, а интервал - длиной порядка.
Таблица 5
|
Тип |
Название |
Размер |
Значащих цифр |
Диапазон значения |
|
real |
вещественный |
6 |
11-12 |
2.9e-39..1.7e+38 |
|
single |
одинарной точности |
4 |
7-8 |
1.5e-45..3.4e+38 |
|
double |
двойной точности |
8 |
15-16 |
5.0e-324..1.7e+308 |
|
extended |
расширенный |
10 |
19-20 |
3.4e-4932..1.1e+4923 |
|
comp |
большое целое |
8 |
19-20 |
-9.22e18..9.22e18(-263..263-1) |
Операции. Арифметические операции также могут выполняться с фактическими величинами. Результатом их реализации является материал. В общем случае во время выполнения операции операнды должны быть одного типа, но целые и действительные значения могут быть смешаны.
Стандартные характеристики. Для фактических значений вы можете применять стандартные функции, перечисленные ниже:
Таблица 6
|
Имя |
Описание |
Результат |
Пояснения |
|
abc |
модуль |
Вещественный |
|x| записывается abs(x) |
|
arctan |
арктангенс угла |
Вещественный |
arctg x записывается arctan(x) |
|
cos |
косинус угла |
Вещественный |
cos x записывается cos(x) |
|
exp |
экспонента |
Вещественный |
ex записывается exp(x) |
|
frac |
дробная часть аргумента |
Вещественный |
frac(3.1) даст в результате 0.1 |
|
int |
целая часть аргумента |
Вещественный |
frac(3.1) даст в результате 3.0 |
|
ln |
натуральный логарифм |
Вещественный |
logex записывается ln(x) |
|
pi |
значение числа п |
Вещественный |
3.1415926536 |
|
round |
округление до целого |
Целый |
round(3.1) даст в результате 3 round(3.8) даст в результате 4 |
|
sin |
синус угла |
Вещественный |
sin x записывается sin(x) |
|
sqr |
квадрат |
Целый |
x2 записывается sqr(x) |
|
sqrt |
квадратный корень |
Вещественный |
записывается sqrt(x) |
|
trunc |
целая часть аргумента |
Целый |
trunc(3.1) даст в результате 3 |
Символьный тип. Этот тип данных, обозначаемый ключевым словом char, служит для представления любого символа из набора допустимых символов. Под каждый символ отводится 1 байт. К символам можно применять операции отношения (<, <=, >,>=, =, <>), при этом сравниваются коды символов. Меньшим окажется символ, код которого меньше. Стандартных функций для работы с символами тоже немного:
Таблица 7
|
Имя |
Описание |
Результат |
Пояснения |
|
ord |
порядковый номер символа |
Целый |
ord('b') даст в результате 98 ord('ю') даст в результате 238 |
|
chr |
преобразование в символ |
Символьный |
chr(98) даст в результате 'b' chr(238) даст в результате 'ю' |
|
pred |
предыдущий символ |
Символьный |
pred('b') даст в результате 'a' |
|
succ |
последующий символ |
Символьный |
pred('b') даст в результате 'a' |
|
upcase |
перевод в верхний регистр |
Символьный |
upcase('b') даст в результате 'B' |
Порядковые типы. Группа типов заказов объединяет целочисленный, символьный, логический, перечислимый и интервальный типы. Это происходит потому, что они имеют следующие общие характеристики:
Все возможные значения порядкового типа являются ограниченным упорядоченным набором.
Стандартная функция Ord может быть применена к любому порядковому типу, который в результате возвращает порядковый номер определенного значения в этом типе.
Стандартные функции Pred и Succ могут применяться к любому порядковому типу, который возвращает предыдущее или следующее значение.
к любому порядковому типу могут быть применены стандартные функции Low и High, которые возвращают наименьшее и наибольшее значения величин данного типа [6].
1.3 Операторы языка
Операторы языка описывают некоторые шаги алгоритма, которые необходимо выполнить для решения проблемы. Содержание программы может быть представлено в виде строки таких операторов. Следующие инструкции программы разделяются точкой с запятой. Все операторы Паскаля можно разделить на две группы: простые и упорядоченные.
Простые операторы. Операторы, которые не содержат других операторов, просты. К ним относятся:
оператор присваивания;
ссылка на процедуру;
GOTO оператор безусловного перехода;
пустое заявление.
Оператор присваивания. С помощью этого оператора переменной или функции присваивается значение выражения. Для этого используется знак присваивания :=, слева от которого записывается имя переменной или функции, которой присваивается значение, а справа - выражение, значение которого вычисляется перед присваиванием. Допустимо присваивание значений переменным и функциям любого типа, за исключением типа файл. Тип выражения и тип переменной (или функции) должны быть совместимы для присваивания. Пример:
:= Y;:= А + В;:= (I>0) and (I<100);:= Sqr(J) + I*К;
Оператор безусловного перехода GOTO. Использование меток
Оператор GOTO позволяет изменить стандартный последовательный порядок выполнения операторов и перейти к выполнению заданного оператора. Оператор, на который происходит переход, должен быть помечен меткой. Эта же метка должна быть указана и в операторе GOTO. Метки, используемые в Turbo Pascal, могут быть двух типов:
целым числом в пределах от 0 до 9999;
обычным идентификатором.
Все используемые метки должны быть перечислены в разделе объявления меток, начинающемся зарезервированным словом label, например: label 1, 2, Metka;
Только один оператор может быть помечен тегом. Метка отделяется двоеточием от помеченного оператора. Использование оператора GOTO должно быть чрезвычайно осторожным. Его широкое использование без какой-либо конкретной причины ухудшает понимание логики программы. Безусловный переход может быть выполнен в любом месте программы, а не в любом месте программы. Следовательно, вы не можете использовать этот оператор для переключения из основной программы в подпрограмму или выхода из подпрограммы; не рекомендуется вводить структурированный оператор, так как это может дать неправильный результат и т. д.
Пустое утверждение. Пустое объявление не выполняет никаких действий и никак не отображается в программе (за исключением, возможно, меток или точек с запятой, которые отделяют пустое объявление от предыдущих или последующих объявлений). Может быть, необходимо сделать безусловный переход к нему.
Структурированные операторы. Структурированными являются такие операторы, которые включают в себя другие операторы.
К структурированным операторам относятся:
составной оператор;
условный оператор IF;
условный оператор CASE;
оператор цикла REPEAT;
оператор цикла WHILE;
оператор цикла FOR;
оператор над записями WITH.
Составной оператор. Составной оператор представляет собой совокупность последовательно выполняемых операторов, заключенных в операторные скобки begin и end:
begin
<оператор 1>;
<оператор 2>;
. . .
<оператор N>
end;
Это может быть необходимо в тех случаях, когда в соответствии с правилами создания языковых структур вы можете использовать ОДИН оператор и выполнять несколько действий. Такой составной оператор включает в себя ряд операторов, которые выполняют требуемые действия. Если в будущем будет указано, что оператор может использоваться, он также может быть составным оператором. Отдельные операторы в составном операторе отделены друг от друга точкой c. Поскольку составной оператор в конце конца слова не является отдельным предложением, вы можете опустить точку с запятой раньше, в противном случае компилятор предполагает, что перед словом стоит пустой оператор. Можно предположить, что основная часть самой программы, поскольку она заключена в круглые скобки оператора начала и конца, также является составным оператором.
Условный оператор IF. Оператор IF реализует алгоритмическую конструкцию FORKING и изменяет порядок выполнения операторов в зависимости от истинности или ложности конкретного условия. Есть два варианта оператора:
if S then A
else В; {полная развилка}
и
if S then А; {укороченная развилка}
В этих операторах:
S - Некоторое логическое выражение, истинность которого проверяется;
A - Оператор, который выполняется, если выражение S истинно;
B - Оператор, который выполняется, если выражение S ложно.
Так как условный оператор IF является единым предложением, ни перед then, ни перед else точку с запятой ставить нельзя. Примеры использования оператора:
if X < 0 then X := -Y;
if X < 1.5 then Z := X + Y else Z := 1.5;
ПОВТОРНАЯ инструкция цикла. Оператор цикла REPEAT организует выполнение цикла, состоящего из любого количества инструкций с неизвестным числом повторений. Тело цикла выполняется как минимум один раз. Выход из цикла выполняется, если логическое выражение истинно.
WHILE цикл инструкция. Инструкция цикла WHILE организует выполнение одной инструкции заранее неизвестное количество раз. Цикл оставляется, если логическое выражение ложно. Поскольку истинность логического выражения проверяется в начале каждой итерации (то есть перед выполнением тела), тело цикла не может быть выполнено один раз.
Оператор цикла FOR. Оператор цикла FOR организует выполнение одного оператора заданное количество раз. Есть два варианта оператора:
for <переменная цикла>:=<начальное значение> to <конечное значение> do <оператор>;
for <переменная цикла>:=<начальное значение> downto <конечное значение> do <оператор>;
В этих операторах:
<переменная цикла> - переменная порядкового типа;
<начальное значение> - выражение (порядкового типа), определяющее начальное значение переменной цикла;
<конечное значение> - выражение (порядкового типа), определяющее конечное значение переменной цикла (при этом значении тело цикла (т е <оператор>) выполняется последний раз);
<оператор> - выполняемый оператор.
<начальное значение> и <конечное значение> должны быть совместимы для присваивания с переменной цикла.
Цикл работает следующим образом:
Сначала начальные и конечные значения рассчитываются и сохраняются.
Затем переменная цикла получает начальное значение.
Затем значение переменной цикла сравнивается с окончательным значением.
Кроме того, хотя параметр цикла меньше или равен конечному значению (в первой версии оператора) или больше или равен конечному значению (во второй версии), выполняется следующая итерация; в противном случае цикл закончится. Выполнение следующей итерации включает в себя первое выполнение _0_, а затем
присвоение переменной цикла следующему наибольшему значению (в первой версии оператора) или следующему наименьшему значению (во второй версии).
Конечно, если первый вариант 4 или второй вариант меньше, чем 2,
инструкция не выполняется один раз. После выхода из цикла 3 не определено, если только выход из цикла не был выполнен с использованием инструкции GOTO или стандартной процедуры прерывания.
Использование стандартных процедур Break и Continue в операторах циклов REPEAT, WHILE и FOR. В версии 7.0 в циклах REPEAT, WHILE и FOR можно использовать две стандартные процедуры
Break и Continue. Процедура Break позволяет досрочно выйти из цикла, не дожидаясь выполнения условия выхода. Процедура Continue позволяет начать новую итерацию цикла, даже если предыдущая не завершена [7].
2 КЛАССИФИКАЦИЯ КОМПЬЮТЕРНЫХ ИГР
2.1 Виды компьютерных игр
Компьютерные и видеоигры можно классифицировать по двум критериям: пол и количество игроков. Классификация игр по жанрам. Четкая классификация затруднена из-за того, что иногда сложно отнести игру к определенному жанру. Игра может быть смесью существующих жанров и не распространяется ни на один из них. Несмотря на это, при разработке компьютерных игр. [8].