
Ооо “Универсал-центр” Методическое пособие по изучению программирования в интегрированной среде turbo pascal 7.0
Днепропетровск,1997
Программа
по изучению курса
“Программирование в среде TURBO PASCAL 7.0”
1.Алфавит языка
Идентификаторы
Разделители
Специальные символы
Неиспользуемые символы
2.Структура программы
3.Типы данных
Классификация типов данных
Простые типы данных
4.Выражения
Переменные
Константы
Стандартные функции
Знаки операций
Круглые скобки
Порядок вычислений
5.Операторы языка
Простые операторы ( присваивания, безусловного перехода,пустой)
Структурированные операторы (if,case,repeat,while,for)
6.Структурированные типы данных
Массивы
Строки
Записи
Множества
Файлы
7.Процедуры и функции
Процедура
Функция
Формальные и фактические параметры
Процедура exit
Рекурсии
8.Процедурные типы данных
9.Совместимость и преобразование типов
Идентичность типов
Совместимость типов
Преобразование типов
10.Динамические структуры данных
Указатели
Операции
11.Ввод-вывод
12.Модули
13.Стандартные модули
Crt
Graph
System
Printer
Алфавит языка.
Алфавит-совокупность допустимых в языке символов. Паскаль оперирует со следующим набором символов:
а) Прописные(заглавные) и строчные латинские буквы ( от A до Z ) ;
б)арабские цифры от 0 до 9;
в) Специальные символы:
знаки пунктуации
знак
Применение
{ } Скобки комментария
[ ] Выделение индексов массивов,элементов множеств,размера строки
( ) Выделение выражений,списков параметров
‘ Апостроф для выделения символа,строковой константы
:= Знак присваивания
; Разделение предложений программы (операторов и объявлений)
: отделение переменной или типизированной константы от
типа,метки,оператора.
= Отделение идентификатора типа от описания типа
,
Запятая для разделения элементов списка
..
Разделение границ диапазона
. Обозначение конца программы,отделение дробной части от целой в
вещественном числе,отделение полей в записи
^ Обозначение типа указателя
@ Обозначение адреса переменной
# Обозначение символа по его коду
$ Обозначение директивы компилятора
знаки операций
+ плюс , - минус , * умножить, / разделить
разделители
любой управляющий символ (коды от 0 до 31)
пробел
комментарий
Зарезервированные слова
Служебные слова ( операторы паскаля ,имена директив )
Некоторые символы ( %,?,& и т д ) не используются в паскале,но их можно
использовать в комментариях и символьных строках.
Структура программы.
В программе,написанной на языке Pascal,могут быть следующие разделы :
* заголовок программы; program имя;
* список используемых модулей; uses cписок исп.модулей;
* раздел объявления меток; label
* раздел объявления констант; const
* раздел объявления типов; type
* раздел объявления переменных; var
* раздел объявления процедур и функций; procedure,function
begin
..............
..............
* т е л о п р о г р а м м ы. End.
Заголовок программы состоит из зарезервированного слова program и имени программы (со списком параметров , заключенных в круглые скобки).Завершается заголовок точкой с запятой.
Порядок размещения разделов произвольный. Разделы могут отсутствовать.
Тело программы начинается словом begin , а заканчивается словом end с точкой, которая является признаком конца программы.
Раздел меток (label). Любой выполняемый оператор может иметь метку- целую положительную константу, содержащую не более 4 цифр ( от 0 до 9999) или обычный идентификатор. Все метки должны быть описаны в разделе label:
label : метка1,...,меткаn;
Метка отделяется от оператора двоеточием.
Раздел констант (const). Если в программе используются константы, то их можно описать в разделе const:
const имя1=значение1;
имя2=значение2;
.............................;
имяn=значениеn;
Двоеточие перед знаком равенства не ставится.
Допускается использование типизированных констант:
const имя:тип=значение;
Обычные константы могут быть целого,вещественного,символьного,логического типа и типа string, типизированные константы- любого типа,кроме типа файл.
Раздел типов: (tуре) .
В этом разделе описываются имена типов переменных, отличные от стандартных ,т.е. массивы, записи, множества и т.д.
type имя1=вид_типа_1;
имя2=вид_типа_2;
................................
имя1,имя2- идентификаторы вводимых типов.
Раздел переменных:
В этом разделе должны быть описаны все переменные,встречающиеся в программе:
var список1:тип_1;
список2:тип_2;
список_1,список_2-перечень переменных через запятую. Тип переменной можно задать двумя способами :
а) указать имя типа из раздела type,
б) описать сам тип.
Раздел процедур и функций содержит описание процедур и функций,вызываемых в теле программы.
Подробнее см. раздел Процедуры и функции.
Тело программы содержит операторы языка Pascal.
Типы данных
типы
данных
простые
структури указатели
рованные
Ограниченные
Скалярные объекты
записи
процедурные
перечисляемые стандартные множества
файлы
целые логические вещественные символьные массивы строки
Все простые типы, за исключением вещественных,называются порядковыми типами.
Целые типы
-
Тип
Диапазон
Формат
Размер в байтах
Shortint
-128..127
знаковый
1
Integer
-32768..32767
знаковый
2
Longint
-2147483648
2147483647
знаковый
4
Byte
0..265
Беззнаковый
1
Word
0..65535
беззнаковый
2
Стандартный логический тип Boolean ( размер -1 байт ) представляет собой тип данных,любой элемент которого может принимать лишь два значения: True и False.
При этом True >False
Ord(false)=0
Ord(true)=1
Succ(false)=true
Pred(true)=false.
Символьный тип.
Стандартный символьный тип char определяет полный набор ASCII-символов.
Функция ord от величины типа char дает код соответствующего символа. Сравниваются величины символьного типа по своим кодам.
Вещественные типы данныж.
Тип |
Диапазон |
Число знечащих цифр |
Размер в байтах |
real |
2.9*10^-39.. 1.7*10^38 |
11-12 |
6 |
Single |
1.5*10^-45.. 3.4*10^38 |
7-8 |
4 |
Double |
5.0*10^-324.. 1.7*10^308 |
15-16 |
8 |
Extended |
3.4*10^4932.. 1.1*10^4932 |
19-20 |
10 |
Comp |
-2^63+1.. 2^63-1 |
19-20 |
8
|
Тип comp фактически является типом целых чисел увеличенного диапазона, однако порядковым не считается.
Типы single,double,extended,comp можно использовать в программах только при наличии арифметического сопроцессора или включенного эмулятора сопроцессора.
Перечисляемый тип данных.
Перечисляемый тип данных задается списком значений ( объектов) , которые могут принимать переменные этого типа.
Type day=(mo,tu,we,th,fr,sa,sa);
var d1,d2,d3:day;
Применение перечислимого типа повышает наглядность программы и дает возможность автоматически контролировать допустимость значений переменных.
Т.о. переменные d1,d2,d3 типа day могут принимать при выполнении программы только одно из указанных семи значений.
Объект,указанный в списке,может присутствовать не более,чем в одном описании.
Имена объектов,указанных в описании перечисляемого типа, являются константами этого типа. Поэтому, имея описания type name=(jonn,tom,nick,ann,jane);
type color=(red,blue,black);
var x,y,z:name;
c1,c2,c3:color;
можно записать
c1:=blue;x:=ann;y:=tom;c2:=red;
Нельзя присваивать переменной значение из описания другого типа.
Для перечисляемого типа данных существенен порядок указанных объектов.
К данным перечисляемого типа применимы операции отношения.
Например, из предыдущего описания и примеров операторов следует, что выражения x>jonn,
c2<c1, y<x имеют значения true.
Для перечислимого типа данных определены стандартные функции pred, succ ,ord, имеющие тот же смысл, что и для стандартных скалярных типов. Например, для типа color результатом функции succ(red) является значение blue, pred(black) - blue. Функция Ord(blue) выработает значение, равное единице, т.к. нумерация объектов в списке начинается с нуля.
В языке Паскаль нельзя непосредственно вводить и выводить на внешние устройства значения перечисляемых типов.
В следующем фрагменте с внешнего носителя вводится порядковый номер объекта из списка значений перечисляемого типа . Оператор case присваивает соответствующее значение переменной clr. Аналогично осуществляется вывод значений переменной clr при помощи оператора варианта.
Program cas;
type color=(red,blue,black);
var x:integer;clr:color;
begin
write(‘ введите номер цвета ‘);
readln(x);
case x of
0: clr:=red;
1: clr:=blue;
2: clr:=black;
end;
write(‘ цвет-‘);
case clr of
red:writeln(‘red’);
blue:writeln(‘ blue’);
black:writeln(‘black’);
end;
end.