- •ПРЕДИСЛОВИЕ
- •1.1. История и классификация языков программирования высокого уровня
- •1.2. Первое (знакомство с Паскалем
- •Задания
- •Лекция 2
- •2.1. Некоторые сведения о системе ТУрбо-Паскаль
- •2.2. Способы описания языка программирования
- •Лекция 3
- •3.2. Типы данных
- •4.1. Структура Паскаль-программы
- •4.2. Арифметические операции, функции, выражения Арифметический оператор присваивания
- •Форматы процедуры write
- •Задания
- •1. Что будет напечатано программой
- •если последовательно вводятся три числа: 36, -6, 2345?
- •5.2. Функции, связывающие различные типы данных
- •Задания
- •Теперь посмотрим, как это программируется наТЛаскале.
- •Здесь
- •<параметр цикла>::= <имя простой переменной порядкового типа>
- •Задания
- •7.1. Подпрограммы-процедуры
- •7.2. Подпрограммы-функции
- •7.4. Рекурсивные подпрограммы
- •8.1. Что такое рекуррентная последовательность
- •8.2. Программирование вычислений рекуррентных последовательностей
- •Задания
- •Задания
- •6. Вывод результата.
- •Теперь будем составлять подпрограммы.
- •Задания
- •12.2. Операции над множествами
- •12.3. Примеры использования множеств
- •Красивая программа! К сожалению, ею нельзя воспользоваться для
- •В этой программе использована функция определений размера файла:
- •.Fiiesize(<HMH файловой переменной>);
- •Задания
- •14.2. Работа с файлами записей
- •Задания
- •15.2. Связанные списки
- •Лекция 16
- •16.1. Организация внешних подпрограмм
- •16,2. Создание и использование модулей
- •распечаткой текста программы с подробными комментариями.
- •выполнения следующих операции над обыкновенными дробями вида -q
- •(Р — целое, Q — натуральное):
- •1) сложение;
- •2) вычитание;
- •3) умножение;
- •4) деление;
- •5) сокращение дроби;
- •7) функции, реализующие операции отношения (равно, не равно,
- •Используя этот модуль, решить задачи:
- •При разработке модуля рекомендуется такая последовательность
- •Задания
- •Приведем текст программы целиком.
- •ЗАДАНИЯ ПО ТЕМЕ “ЛИНЕЙНЫЕ АЛГОРИТМЫ”
- •ЦЕЛОЧИСЛЕННАЯ АРИФМЕТИКА
- •Сортировка массивов
- •ЗАДАЧИ ПО ТЕМЕ “ОБРАБОТКА СТРОК”
- •ЗАДАНИЯ ПО ТЕМЕ “МОДУЛИ”
- •ЗАДАНИЯ ПО ТЕМЕ “ДИНАМИЧЕСКИЕ ПЕРЕМЕННЫЕ”
- •Задачи, предлагавшиеся на школьных олимпиадах по программированию (Пермская область)
- •Учебное издание
Лекция 3
3.1.Элементы яоыка ТУрбо-Паскаль
Алфавит. Алфавит языка состоит из множества символов, включа ющих в себя буквы, цифры и специальные символы.
Латинские буквы: от А до Z (заглавные) и от а до z (строчные).
Цифры: 0, |
1, 2, 3, 4, |
5, 6, |
7, 8, 9. |
|
|
||
Шестнадцатиричные цифры: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, А, В, С, D, Е, |
|||||||
F. |
|
|
|
|
|
|
|
Специальные символы: Ч— |
* / = = < > [ ] |
( ) ; { } @ $ # . |
|||||
Следующие комбинации специальных символов являются едиными |
|||||||
символами (их нельзя разделять пробелами): |
|
||||||
:= |
знак присваивания; |
|
|
>= |
больше или равно; |
||
О |
не равно; |
|
|
(* *) |
ограничители комментариев (наряду с { }); |
||
<= |
меньше или равно; |
|
|
(. .) |
эквивалент [ ]. |
Пробелы — символ пробела (ASCII-32) и все управляющие символы кода ASCII (от 0 до 31).
К спецсимволам относятся служебные слова, смысл которых опре делен однозначно. Служебные слова не могут быть использованы для других целей. С точки зрения языка — это единые символы. Вот спи сок служебных слов Турбо-Паскаля:
absolute |
end |
inline |
procedure |
type |
and |
external |
interface |
program |
unit |
array |
file |
interrupt |
record |
until |
begin |
for |
label |
repeat |
uses |
case |
forward |
mod |
set |
var |
const |
function |
nil |
shl |
while |
div |
goto |
not |
shr |
with |
do |
if |
of |
string |
xor |
downto |
implementation |
or |
then |
|
else |
in |
packed |
to |
|
Последние версии ТУрбо-Паскаля содержат еще ряд служебных слов, относящихся к работе с объектами и встроенным ассемблером. Следу ющие конструкции представляют собой комментарии и поэтому игно рируются компилятором:
{ любой текст, не содержащий символ “}” } (* любой текст, не содержащий символы “*)” *)
Буквы русского алфавита употребляются только в комментариях, в литерных и текстовых константах.
Строка, начинающаяся с символов “{$” или “(*$” , является дирек тивой компилятора. За этими символами следует мнемоника команды компилятора.
Идентификатором называется символическое имя определенного программного объекта. Такими объектами являются: имена констант, переменных, типов данных, процедур и функций, программ. С по мощью синтаксической диаграммы идентификатор можно определить следующим образом:
< идентификатор>
» <буква>
Расшифровать это можно так: идентификатор — это любая после довательность букв и цифр, начинающаяся с буквы. В Турбо-Паскале
кбуквам приравнивается также знак подчеркивания.
ВТурбо-Паскале длина идентификатора может быть произвольной, но значащими являются только первые 63 символа.
3.2.Типы данных
Концепция типов данных является одной из центральных в любом языке программирования. Напомним, что с типом величины связаны три ее свойства: форма внутреннего представления, множество прини маемых значений и множество допустимых операций. Паскаль харак теризуется разветвленной структурой типов данных.
В стандартном Паскале отсутствует строковый тип. Кроме того, в ТУрбо-Паскале целые и вещественные — это группы типов. В старших версиях Турбо-Паскаля существует процедурный тип и тип “объект” .
Каждый тип имеет свой идентификатор.
Таблица 3.1
Идентификатор |Длина, байт |Диапазон (множество) значений |
|
||||
|
|
|
Целые типы |
|
|
integer |
|
2 |
|
-32768..32767 |
|
byte |
|
1 |
|
0..255 |
|
word |
|
2 |
|
0..65535 |
|
shortint |
|
1 |
|
—128..127 |
|
longint |
|
4 |
|
-2Д47.483648..2147483647 |
|
real |
|
б |
Вещественные типы |
|
|
|
|
2 ,9 -КГ38 — 1,7 10м |
(И-12) |
||
single |
|
4 |
|
1,5 •10“ " — 3,4 •1038 |
(7-8) |
double |
|
8 |
|
5 . ю-324 _ 1Д . юз»* |
(15-16) |
extended |
|
10 |
|
3,4 •10-4<ш — 1,1 •104832 |
(19-20) |
|
|
|
Логический тип |
|
|
boolean |
1 |
1 |
I |
true, false |
|
|
|
|
Символьный тип |
|
|
char |
1 |
1 |
| |
все символы кода ASCII |
|
Втабл. 3.1 представлена информация о простых типах данных, определенных в ТУрбо-Паскале. Для вещественных типов в скобках указано количество сохраняемых значащих цифр мантиссы в десятич ном представлении числа.
Встандарте Паскаля из вещественных типов определен только тип real; из целых типов — integer.
Типы single, double, extended употребляются в Паскаль-программах только в том случа'е, если ПК снабжен сопроцессором “плавающей арифметики”
Тип данных называется порядковым, если он состоит из счетного количества значений, которые можно пронумеровать. Отсюда следует, что на этом множестве значений существуют понятия “следующий” и “предыдущий” .
Описание переменных. Для всех переменных величин, использу емых в программе, должны быть указаны их типы. Это делается в разделе переменных программы. Структура раздела переменных:
< раздел переменных> |
-> < описание переменных> |
------------------------------------> Уаг |
|
|
|
|
О |
|
<описание переменных> |
|
|
|||
--------------- --------------Ж* < идентификатор> |
<тип> |
----- ► |
|||
|
|
|
---------- О — |
|
|
Пример раздела переменных программы: |
|
|
|||
Var m, |
n, |
k |
Integer; |
|
|
x, |
у, |
z |
Real; |
|
|
Symbol |
|
Char; J |
|
|
|
К он стан ты . Тип[константы определяется по |
контексту, |
т.е. по |
|||
форме ее записи в пр.Ьграмме. |
|
|
Целые десятичные константы записываются в обычной форме це лого числа со знаком или без знака. Например: 25, -24712, 376.
Целые шестнадцатиричные константы записываются с префиксом “$” Они должны находиться в диапазоне от $00000000 до SFFFFFFFF.
Вещественные константы с фиксированной точкой записываются в обычной форме десятичного числа с дробной частью. Разделитель целой и дробной части — точка “.” Например: 56.346, 0.000055, -345678.0.
Вещественные константы с плавающей точкой имеют форму:
<мантисса>Е<порядок>
Здесь мантисса — целое или вещественное число с фиксированной точкой, порядок — целое со знаком или без. Например: 7Е-2 (7 10” 2), 12.25Е6 (12,25-106), 1Е-25 (Ю” 25).
Символьная константа — любой символ алфавита, заключенный в апострофы. Например: ’W ’, ’9’.
Логическая константа — одно из двух слов: true, false. |
|
||
Строковая константа — строка символов, |
заключенная в апо |
|
|
строфы. Например: ’Turbo-Pascal’, ’Ответ: |
, ’35-45-79’. Максимальная |
|
|
длина — 255 символов. |
|
|
|
Константе может быть поставлено в соответствие определенное |
|
||
имя. Назначение имени константе производится в разделе констант |
|
||
программы. Структура раздела констант: |
|
|
|
<раздел констант> |
< описание константы> |
|
|
Const |
|
||
|
|
C D |
|
< описание константы> |
^ |
► <константа> |
► |
------------------------------------>• < идентификатор> — >(==)-------- |
Пример:
Const
Мах 'т 1000;
G = 9.81;
Cod * уошибка*;
В дополнение к сказанному: в Турбо-Паскале допустимо употре бление типизированных констант. Типизированная константа ана логична переменной, которой задается начальное значение. Причем происходит это на этапе компиляции. Описание типизированной кон станты:
< типизированная константа>
------------------------------------------- |
> <идентификатор> — »(Т)— х тип> |
||
константа> ----- |
► |
|
|
Пример: |
|
|
|
Const NumberCard |
Integer |
= |
1267; |
Size |
Real |
= |
12.67; |
Symbol |
Char |
= |
>** ; |
В ТУрбо-Паскале имеется ряд имен, зарезервированных за опреде ленными значениями констант. Ими можно пользоваться без предва рительного определения в программе.
|
Таблица 3.2 |
|
Идентификатор |
Ътп |
Значение |
True |
boolean |
истина |
False |
boolean |
ложь |
Maxlnt |
integer |
32767 |
Типы пользователя. Один из принципиальных моментов Паскаля состоит в том, что пользователю разрешается определять свои типы данных. Типы пользователя всегда базируются на стандартных типах данных Паскаля.
Для описания типов пользователя в Паскале существует раздел ти пов следующей структуры:
<раодел типов> |
д > < описание |
типа> |
-------------------------------> Туре |
-С О
< описание типа>
<имя типа> |
►<тип>- |
Перечисляемый тип задается непосредственно перечислением всех значений, которые может принимать переменная данного типа. Струк тура:
Сперечисляемый тип>
<D*
Определенное имя типа затем используется для описания перемен ных. Например:
Type Gaz = (C, 0, N, F); |
Cu, Zn); |
||||
Metal |
» |
(Fe, |
Co, |
Na, |
|
Var Gl, G2, |
G3 |
Gaz; |
|
|
|
Met1, |
Met2 |
Metall; |
Wed, Thu, Fri, Sat); |
||
Day |
(Sun, |
Mon, |
Tue, |
Здесь Gaz и Metal — имена перечисляемых типов, которые ставятся в соответствие переменным Gl, G2, G3 и Metl, Met2. Переменной Day назначается перечисляемый тип, которому не присвоено имени.
Значения, входящие в перечисляемый тип, являются константами. Действия над ними подчиняются правилам, применимым к констан там. Каждое значение в перечисляемом типе занимает в памяти 2 байта. Поэтому число элементов не должно превышать 65535.
Перечисляемый тип — упорядоченное множество. Его элементы пронумерованы, начиная от 0 в порядке следования в описании.
В программе, в которой присутствует данное выше описание, воз можен такой фрагмент:
if Day = Sun then writeln('Ура!! Сегодня выходной!');
Интервальный тип задается как упорядоченное ограниченное под множество некоторого порядкового типа.
<интервальяый тип> |
^ |
>- |
--------------------- ------------- ж <константа> |
—г-ж»*)---- ► <констаыта>------ |
Порядковый номер первой константы не должен превышать номер второй константы в соответствующем базовом типе.
При исполнении программы автоматически контролируется при надлежность значений переменной интервального типа установлен ному диапазону. При выходе из диапазона исполнение программы пре рывается.
Пример:
г
Type Numbers = 1..31;
Alf= 'А'..,Z>;
Var Data Numbers;
Bukva Alf;