Автор работы: Пользователь скрыл имя, 28 Января 2013 в 18:43, курсовая работа
Цель работы - Изучить язык программирования Турбо Паскаль. Написать игру "Змейка". Правила игры: на поле размером 25*80 движется змейка, состоящая из нескольких сегментов и разбросана еда. Цель игры - двигаться по полю буквами w (вверх), s(вниз), a(влево), d(вправо) и собирать еду. Каждая собранная еда увеличивает длину змейки на один сегмент. Если змейка ударяется о стену, игра заканчивается.
Введение
3
1 Язык программирования Turbo Pascal
5
1.1 Процедуры и функции
8
1.2 Операторы. Выражения
10
2 Лексические основы языка Pascal
12
2.1 Структура программы на языке Pascal
14
2.2 Типы данных, используемые в Pascal
18
2.3 Стандартные функции языка Pascal
23
2.4 Построение арифметических выражений
25
2.5 Встроенные константы. Элементы структурного программирования
26
3 Описание алгоритма программы
28
3.1 Структурное описание разработки
28
3.2 Функциональное описание
29
Заключение
31
Список литературы
32
Приложение
Строка представляет собой последовательность, содержащую ноль и более символов из расширенного набора символов американского стандарта кодирования информации ASCII. Строка записывается в одной строке программы и заключается в апострофы. Строка символов может быть нулевой (не содержит символов). Два последовательных апострофа в строке символов обозначают один символ - апостроф. Атрибут длины строки символов выражается действительным количеством символов между апострофами, например:
'Строка символов'
' ' ' '
';'
'' {пустая строка}
' ' {пробел}
Разрешается вставлять в строку символов управляющие символы, которые начинаются со знака #, за которым без пробела следует целая константа без знака в диапазоне от 0 до 255. Константа обозначает соответствующий этому значению символ в коде ASCII. Аналогично, если несколько управляющих символов входит строку символов, то между ними не должно быть разделителей. Например:
#13#10 'Перевод строки и возврат каретки'
'Строка 1'#13'Строка 2'
Символы разделители используются для отделения одних выражений от других (;), меток от операторов, переменных от типов (:), для завершения программы (.).
В программе могут использоваться комментарии. Они игнорируются компилятором и применяются для пояснения исходных текстов программы. Комментарий может начинаться символами { и (*, соответственно заканчиваться } *). Например:
{Это комментарий}
(* И это комментарий *)
В Turbo Pascal строки программы могут иметь максимальную длину в 126 символов.
2.1 Структура программы на языке Pascal
Программа состоит из трёх блоков: заголовок программы, раздел описаний, тело программы. Ниже приведена схема программы со всеми возможными разделами. Если нет необходимости использовать какие-либо разделы описаний, то они опускаются, последовательность записи разделов описаний не обязательная, причём некоторые разделы могут повторяться.
Program Name (Input, Output); {Заголовок программы}
Uses {Описание используемых модулей}
Label {Описание меток}
Const {Описание констант} Раздел описаний
Type {Описание типов}
Var {Описание переменных}
Procedure {Описание процедур}
Function {Описание функций}
Begin
Оператор 1;
Оператор 2; {Раздел операторов ... (тело программы)}
Оператор n
End.
Заголовок программы начинается служебным словом Program, за которым записывается идентификатор программы (имя). Имя программы строится в соответствии с правилами записи идентификаторов, после имени программы иногда указывают в круглых скобках имена стандартных файлов ввода и вывода, связанных соответственно с клавиатурой и экраном монитора (Input, Output). Заканчивается описание заголовка символом " ; ". Например:
Program MyProgram (Input, Output);
Program MyProgram;
Затем после служебного слова uses через запятую перечисляются модули, процедуры и функции которые, используются в программе. В конце ставится " ; ". Это могут быть как стандартные модули Pascal - Crt, Graph, так и модули, разработанные пользователем. Например:
Uses Crt, Graph;
За служебным словом Label следуют перечисленные через запятую идентификаторы меток, которые используются в программе.
Метка - это идентификатор, заканчивающийся двоеточием " : ", помечающий место в программе, на которое передаётся управление при помощи оператора безусловного перехода.
Label M1, M2, M3;
Следом располагается раздел описаний констант, начинающийся служебным словом Const. Идентификатор константы отделяется от значения знаком "=". После каждой константы ставится " ; ".
Константы - это данные, значения которых не могут изменяться в процессе выполнения программы. Константы распознаются компилятором по форме их записи. В языке Pascal используются константы трех видов: числовые, булевские и символьные. Числовые константы предназначены для представления числовых данных (целых и вещественных). Булевские константы используются для представления данных, имеющих смысл логических высказываний (истина-ложь). Символьные константы представляют данные, являющиеся последовательностями символов. Например:
const
A = 12; {целочисленная константа A}
B: Real = 23.05; {типизированная константа B}
S= Строка ; {строковая константа}
Типы данных, вводимые пользователем, описываются после служебного слова Type. Новый тип данных вводится своим идентификатором, за которым после знака равенства " = ", записывается расшифровка типа. Например:
Type
Color = (Red, Green, Blue); {Перечисляемый тип}
Scale = 2 * (A - B).. (A + B); {Тип диапазон}
MassivReal=array[1..100] of Real; {Массив из ста элементов типа Real}
MassivChar=array[0..19] of Char; {Массив из 20 элементов типа Char}
Раздел описания переменных начинается служебным словом Var. Значения переменных могут изменяться во время выполнения программы. Переменные идентифицируются по именам (идентификаторам), с каждой переменной программы связывается один тип данных. При описании они отделяются двоеточием " : ". Если необходимо различным переменным назначить один тип данных, то они перечисляются через запятую, после последнего идентификатора ставится двоеточие, за которым указывается тип данных.
Тип - это множество значений переменной вместе с множеством операций, которые можно выполнять над элементами этого множества. Заданием переменной некоторого типа, явно определяется множество значений, которые можно присваивать этой переменной, а также операции, с помощью которых можно манипулировать ее значениями. Число отдельных значений, принадлежащих некоторому типу, называется мощностью типа. Так, например, мощность типа Boolean - 2.
Var
X,Y,Z: real; {переменные типа Real}
I,J,K: integer; {переменные типа Integer}
Digit: 0..9; {переменная перечисляемого типа}
C: Color; {переменная типа Color, который описан в разделе Type}
Done, Error: boolean; {переменные типа boolean }
Operator: (plus, minus, times); {переменная перечисляемого типа}
Matrix: array[1..10,1..10] of Real; {переменная - массив}
Следом идёт раздел описания процедур и функций. Он будет рассмотрен позднее при рассмотрении вопросов, связанных с организацией подпрограмм.
Тело программы начинается служебным словом Begin, которое определяет точку начала выполнения программы. Затем следуют операторы, описывающие алгоритм решения задачи. Они отделяются друг от друга точкой с запятой " ; ". Завершается тело программы служебным словом End за которым ставится точка.
Кроме описаний и операторов Pascal-программа может содержать комментарии, которые представляют собой произвольную последовательность символов, расположенную между открывающей скобкой комментариев {и закрывающей скобкой комментариев}.
2.2 Типы данных, используемые в Pascal
При обработке данных на ЭВМ важна классификация переменных в соответствии с некоторыми важными характеристиками. Производится строгое разграничение между вещественными, комплексными и логическими переменными, между переменными, представляющими отдельные значения и множество значений и так далее. В любом алгоритмическом языке каждая константа, переменная, выражение или функция бывают определенного типа.
В языке Pascal существует такое правило: тип явно задается в описании переменной или функции, которое предшествует их использованию. Концепция типа языка Pascal имеет следующие основные свойства:
любой тип данных определяет множество значений, к которому принадлежит константа, которые может принимать переменная или выражение, или вырабатывать операция или функция;
тип значения, задаваемого константой, переменной или выражением, можно определить по их виду или описанию;
каждая операция или функция требует аргументов фиксированного типа и выдает результат фиксированного типа.
Из этого следует, что транслятор может использовать информацию о типах для проверки вычислимости и правильности различных конструкций.
Тип определяет:
возможные значения переменных, констант, функций, выражений, принадлежащих к данному типу;
внутреннюю форму представления данных в ЭВМ;
операции и функции, которые могут выполняться над величинами, принадлежащими к данному типу.
В Pascal все типы данных разделятся на следующие группы:
скалярные (к скалярным относятся типы данных, значения которых не содержат составных частей, то есть простые типы: целочисленный, вещественный, логический, символьный, перечисляемый, интервальный (тип диапазон));
ссылочный (являются указателями на данные других типов);
структурированные (в своей основе имеет один или несколько скалярных типов данных: строковые, регулярные - массивы, множественные, комбинированные - записи, файловые);
процедурные и объектные (используются в объектно-ориентированном программировании).
Рассмотрим скалярные типы данных. Они определяют упорядоченные множества значений. Ниже описаны скалярные типы, записанные по группам.
В Turbo Pascal пять предопределенных целочисленных типов: Shortint (короткое целое), Integer (целое), Longint (длинное целое), Byte (длиной в байт беззнаковый) и Word (длиной в слово беззнаковый). Каждый тип обозначает определенное подмножество целых чисел.
Byte. Диапазон значений типа: 0..255. Занимает размер памяти 1 байт.
Word. Диапазон значений типа Word: 0..65535. Занимает размер памяти 2 байта.
Shortint. Диапазон значений типа: -128…127. Занимает размер памяти 1 байт.
Integer. Диапазон значений типа: -32768..32767. Занимает размер памяти 2байта.
Longint. Диапазон значений типа: -2147483648…2147483647. Занимает размер памяти 4 байта.
К данными целого типа применимы следующие операции:
сравнения ("=" равенство, "<>" неравенство, "<" меньше, "<=" меньше либо равно, ">" больше, ">=" больше либо равно);
сложение (+);
одноместный (унарный) плюс (+);
вычитание (-);
одноместный (унарный) минус (-);
умножение (*);
деление на цело (получение частного) (DIV);
получение остатка от деления на цело (для беззнаковых второй операнд должен быть положительным) (MOD);
логический сдвиг влево (ShL);
логический сдвиг вправо (ShR).
При логическом сдвиге биты, оказавшиеся за пределами разрядной сетки кода, отбрасываются, а вместо недостающих устанавливаются нули.
К вещественному типу относится подмножество вещественных чисел, которые могут быть представлены в формате с плавающей точкой с фиксированным числом цифр. Имеется пять видов вещественных типов: вещественное (Real), с одинарной точностью (Single), с двойной точностью (Double), с повышенной точностью (Extended) и сложное (Comp). Действия над типами с одинарной точностью, с двойной точностью и с повышенной точностью и над сложным типом могут выполняться только при наличии математического сопроцессора.
Real. Диапазон значений типа: 2.9E-39..1.7E+38 (здесь и далее значения приводятся по абсолютной величине). Данные типа Real имеют точность 11-12 значащих цифр после запятой. Занимают размер в памяти 6 байт.
Single. Диапазон значений типа: 1.5E-45…3.4E+38 . Точность 7-8 значащих цифр после запятой. Занимают размер в памяти 4 байта.
Double. Диапазон значений типа: 5.0E-324...1.7E+308. Точность 15-16 значащих цифр после запятой. Занимают размер в памяти 8 байт.
Extended. Диапазон значений типа: 3.4E-4932...1.1E+4932. Точность 15-16 значащих цифр после запятой. Занимают размер в памяти 10 байт.
Comp. Диапазон значений типа: -9.2E+18…9.2E+18. Это 64-битное целое число. Занимают размер в памяти 8 байт.
Над данными вещественных типов допустимы следующие операции:
сложение (+);
одноместный (унарный) плюс (+);
вычитание (-);
одноместный (унарный) минус (-);
умножение (*);
деление (получение частного) (/);
Множеством значений типа данных Char являются символы, упорядоченные в соответствии с расширенным набором символов кода ASCII. При вызове функции Ord(Ch), где Ch - значение символьного типа, возвращается порядковый номер Ch. Строковая константа с длиной 1 может обозначать значение константы символьного типа. Любое значение символьного типа может быть получено с помощью стандартной функции Chr(N), где N - порядковый номер символа кода ASCII. Над данными типа Char допустимы операции сравнения (= , <>, <, <=, >, >=).
Данные типа Boolean могут принимать два значения: True (Истина) и False (Ложь). Над данными типа Boolean допустимы следующие операции:
сравнения (=, <>, <, <=, >, >=);
And (логическое И);
Or (логическое ИЛИ);
Xor (логическое исключающее ИЛИ);
Not (логическое отрицание).
Перечислимые типы определяют упорядоченные множества значений через перечисление идентификаторов, которые обозначают эти значения. Упорядочение множеств выполняется в соответствии с последовательностью, в которой перечисляются идентификаторы. При указании идентификатора в списке идентификаторов перечислимого типа он описывается как константа для блока, в котором указано описание перечислимого типа. Типом этой константы является описанный перечислимый тип. Порядковый номер перечислимой константы определяется её позицией в списке идентификаторов при описании. Перечислимый тип, в котором описывается константа, становится ее типом. Первая перечислимая константа в списке имеет порядковый номер 0. Пример перечислимого типа: