- •Естественный язык
- •Описание символов
- •Алгоритмический язык
- •Лекция 2. Введение в языки программирования
- •Языки программирования низкого уровня
- •Языки программирования высокого уровня
- •Компоновщик
- •Лекция 3. Основы программирования на языке Паскаль
- •Логические операции
- •Оператор безусловного перехода
- •Составной оператор
- •Тип-диапазон
- •Примеры
- •Лекция 8. Массивы
- •Объявление массива
- •Многомерные массивы
- •Операции над массивами
- •Динамические массивы
- •Лекция 9. Подпрограммы
- •Процедуры
- •Функции
- •Параметры
- •Рекурсия
- •Лекция 11. Записи
- •Пример использования записей
- •Лекция 12. Множества
- •Процедуры include и exclude
- •Лекция 13. Файлы
- •Инициация файла
- •Приложение А
П.П.Кудрявцев. Курс лекций по дисциплине: "Информатика и программирование"
синтаксических диаграмм (рисунок 2).
Рисунок 2 Синтаксическая диаграмма понятия «двоичная цифра »
В диаграммах стрелки указывают на последовательность расположения элементов синтаксической конструкции; кружками обводятся символы, присутствующие в конструкции.
Понятие «двоичный код» как непустую последовательность двоичных цифр БНФ описывает так:
<двоичный код > : : = < двоичная цифра>|<двоичный код >< двоичная цифра>
Определение, в котором некоторое понятие определяется само через себя, называется рекурсивным. Рекурсивные определения характерны для БНФ.
Синтаксическая диаграмма двоичного кода представлена на рисунке 3.
Рисунок 3 Синтаксическая диаграмма понятия «двоичный код »
Возвратная стрелка обозначает возможность многократного повторения. Очевидно, что диаграмма более наглядна, чем БНФ. Синтаксические диаграммы были введены Н. Виртом и использованы для описания созданного им языка Паскаль.
Лекция 3. Основы программирования на языке Паскаль
Основные элемен ты программы и алфави т языка
Основные символы языка - буквы, цифры и специальные символы составляют его алфавит. Алфавит языка Паскаль включает следующий набор основных символов:
1.26 латинских строчных и 26 латинских прописных букв: от «а» до «z» и от «А» до
«Z»
2._ подчеркивание
3.10 цифр: «0» до «9»
4.знаки операций:
+ - * / = <> < > <= >= := @ 5. ограничители:
. , ' ( ) [ ] (. .) { } (* *) .. : ; 6. спецификаторы:
^ # $
14
Лекция 3. Основы программирования на языке Паскаль |
|
|
|
7. служебные (зарезервированные) слова: |
|
|
|
ABSOLUTE |
EXPORTS |
LIBRARY |
SET |
ASSEMBLER |
EXTERNAL |
MOD |
SHL |
AND |
FAR |
NAME |
SHR |
ARRAY |
FILE |
NIL |
STRING |
ASM |
FOR |
NEAR |
THEN |
ASSEMBLER |
FORWARD |
NOT |
TO |
BEGIN |
FUNCTION |
OBJECT |
TYPE |
CASE |
GOTO |
OF |
UNIT |
CONST |
IF |
OR |
UNTIL |
CONSTRUCTOR |
IMPLEMENTATION |
PACKED |
USES |
DESTRUCTOR |
IN |
PRIVATE |
VAR |
DIV |
INDEX |
PROCEDURE |
VIRTUAL |
DO |
INHERITED |
PROGRAM |
WHILE |
DOWNTO |
INLINE |
PUBLIC |
WITH |
ELSE |
INTERFACE |
RECORD |
XOR |
END |
INTERRUPT |
REPEAT |
|
EXPORT |
LABEL |
RESIDENT |
|
Кроме перечисленных, в набор основных символов входит пробел. Пробелы нельзя использовать внутри сдвоенных символов и зарезервированных слов.
Основными элементами программы на языке Паскаль являются:
●операторы команды , определяющие структуру программы например( , операторы ветвления и зацикливания) или выполняющие какие-либо действия (например, арифметические операции или операции сравнения);
●ключевые слова команды , используемые обычно для отделения одних частей программы от других. Ключевые слова предназначаются для компилятора, теряются в процессе построения исполняемой программы, и не выполняются в прямом смысле этого слова;
●директивы компилятору аналогичны ключевым словам ,но воздействуют не на программу и ее структуру, а на процесс компиляции и построения программы. Часть директив компилятору можно установить с помощью главного меню интегрированной среды, однако использование директив в тексте программы помогает использовать их избирательно не для всей программы ,а для отдельных ее частей .
Все вышеперечисленные элементы программы имеют свои уникальные имена, называемые идентификаторами. В языке Паскаль используются следующие правила именования идентификаторов:
● Идентификаторы должны представлять собой одно слово, состоящее из строчных или прописных латинских символов, причем строчные и прописные символы не различаются между собой. Также допустимо использование символа «подчеркивание»
15
П.П.Кудрявцев. Курс лекций по дисциплине: "Информатика и программирование"
(«_») и цифр в любом месте имени, за исключением его начала.
● Два разных элемента программы не могут иметь одинаковые имена, то есть идентификатор должен быть уникальным в пределах программы. В случае попытки описания, например, двух переменных с одинаковыми именами, компилятором будет выдана ошибка .
В исходный текст программы может быть добавлена текстовая информация, игнорируемая при компиляции. Такая информация называется комментариями и заключается в пары фигурных скобок { и }. Вместо фигурных скобок могут также использоваться пары символов
(* и *):
{ Комментарий } (* Комментарий *)
В Delphi, а также в FreePascal введена возможность использования однострочных комментариев, характерных для множества языков программирования. Такие комментарии начинаются двумя символами «слеш» и занимают всю оставшуюся строку:
// До конца строки комментарий
Струк тура программы на языке Паскаль
Программа на языке Паскаль состоит из заголовка программы и тела программы (блока), за которым следует точка признак конца программы . В свою очередь , блок содержит разделы описаний и раздел операторов.
Program <имя программы>; Label <раздел меток>; Const <раздел констант>; Type <раздел типов>;
Var <раздел переменных>;
Procedure (Function) <раздел подпрограмм>;
Begin
<раздел операторов>
End.
Раздел операторов имеется в любой программе и является основным. Предшествующие разделы носят характер описаний и не все обязательно присутствуют в каждой программе.
ВDelphi, FreePascal в отличие от стандарта, возможно следующее:
●отсутствие заголовка программы;
●разделы Const, Type, Var, Label могут следовать друг за другом в любом порядке и встречаться в разделе описаний сколько угодно раз.
Концепция данных: прос тые т ипы данных
Данные это общее понятие для всего того ,с чем оперирует вычислительная машина .В аппаратуре все данных представляются как последовательности двоичных цифр (разрядов),
16
Лекция 3. Основы программирования на языке Паскаль
такими же мыслятся данные и при программировании на уровне машинных команд. Языки высокого уровня позволяют абстрагироваться от деталей представления, главным образом за счет введения концепции типа данных.
Любой тип данных определяет множество значений, которые может принимать та или иная переменная, и те операции, которые можно к ним применять. С каждой встречающейся в программе переменной должен быть сопоставлен один и только один тип. Каждый из типов должен строиться из элементарных, простых данных.
Рисунок 1 Схема типов данных
В Паскале существуют простые типы двух видов: порядковые (ординальные - «ordinal») типы и вещественный тип. Порядковый тип либо определяется программистом (в этом случае его называют перечисляемым типом или диапазоном), либо обозначается именем одного из трех предописанных порядковых типов Boolean, Integerили Char.Вещественный тип обозначается именем предописанного типа Real.
Рисунок 2 Схема простых типов данных
Перечисляемый тип характеризуется множеством входящих в него различных значений, среди которых определен линейный порядок. Сами значения обозначаются в определении этого типа именами. Диапазонный (ограниченный) тип задается с помощью минимального и максимального значений, относящихся к предварительно описанному порядковому типу.
В таблице 1 представлена информация о простых типах данных, определенных в Паскале. Для вещественных типов в скобках указано количество сохраняемых значащих цифр мантиссы в десятичном представлении числа.
Идентификатор |
Длина, байт |
Диапазон (множество) значений |
|
|
|
17
П.П.Кудрявцев. Курс лекций по дисциплине: "Информатика и программирование"
|
|
Целые типы |
|
Integer |
2 |
|
-32768...32767 |
|
|
|
|
Byte |
1 |
|
0...255 |
|
|
|
|
Word |
2 |
|
0...65535 |
|
|
|
|
Shortint |
1 |
|
-128...127 |
|
|
|
|
Longint |
4 |
|
-2147483648...2147483647 |
|
|
|
|
|
|
Вещественные типы |
|
|
|
|
|
Real |
6 |
|
2,9·10-39...1,7·1038 (11 - 12) |
Single |
4 |
|
1,5·10-45...3,4·1038 (7 - 8) |
Double |
8 |
|
5·10-324...1,7·10308 (15 - 16) |
Extended |
10 |
|
3,4·10-4932...1,1·104932 (19 - 20) |
|
|
Логический тип |
|
|
|
|
|
Boolean |
1 |
|
true, false |
|
|
|
|
|
|
Символьный тип |
|
|
|
|
|
Char |
1 |
|
все символы кода ASCII |
|
|
|
|
Арифме тические операции, функции, выражения
К арифметическим типам данных относятся группы вещественных и целых типов. К ним применимы арифметические операции и операции отношений.
Операции над данными бывают унарными (применимые к одному операнду) и бинарными (применимые к двум операндам). Унарная арифметическая операция одна. Это операция изменения знака. Ее формат:
- <величина>
Бинарные арифметические операции стандартного Паскаля описаны в Таблице 2. В ней I обозначает целые типы, R вещественные типы .
Таблица 2
Знак |
Выражение |
Типы операндов |
Тип результатов |
Операция |
|
|
|
|
|
+ |
A + B |
R, R |
R |
Сложение |
|
|
I, I |
I |
|
|
|
I, R; R, I |
R |
|
|
|
|
|
|
- |
A - B |
R, R |
R |
Вычитание |
|
|
I, I |
I |
|
|
|
I, R; R, I |
R |
|
|
|
|
|
|
* |
A*B |
R, R |
R |
Умножение |
|
|
I, I |
I |
|
|
|
I, R; R, I |
R |
|
|
|
|
|
|
/ |
A/B |
R, R |
R |
Вещественное деление |
|
|
I, I |
R |
|
|
|
|
|
|
18
Лекция 3. Основы программирования на языке Паскаль |
|
|
|||
|
|
I, R; R, I |
|
R |
|
|
|
|
|
||
|
|
|
|
|
|
div |
A div B |
I, I |
|
I |
Целое деление |
|
|
|
|
|
|
mod |
A mod B |
I, I |
|
I |
Остаток от целого деления |
|
|
|
|
|
|
К арифметическим величинам могут быть применены стандартные функции Паскаля, они приведены в таблице 3.
Таблица 3
Обращение |
Тип аргумента |
Тип результата |
Функция |
|
||
|
|
|
|
|
||
Pi |
- |
R |
Число π = 3.1415926536Е+00 |
|
||
|
|
|
|
|
||
Abs(x) |
I, R |
I, R |
Модуль аргумента x |
|
||
|
|
|
|
|
||
Arctan(x) |
I, R |
R |
Арктангенс x (радианы) |
|
||
|
|
|
|
|
||
Cos(x) |
I, R |
R |
Косинус x (x в радианах) |
|
||
|
|
|
|
|
|
|
Exp(x) |
I, R |
R |
ex - экспонента |
|
|
|
Frac(x) |
I, R |
R |
Дробная часть x |
|
|
|
|
|
|
|
|
|
|
Int(x) |
I, R |
R |
Целая часть x |
|
|
|
|
|
|
|
|
||
Ln(x) |
I, R |
R |
Натуральный логарифм x |
|
||
|
|
|
|
|
|
|
Random |
|
R |
Псевдослучайное |
число |
в |
|
|
|
|
интервале [0, 1) |
|
|
|
Random(x) |
I |
I |
Псевдослучайное |
число |
в |
|
|
|
|
интервале [0, x) |
|
|
|
Round(x) |
R |
I |
Округление |
до |
ближайшего |
|
|
|
|
целого |
|
|
|
Sin(x) |
I, R |
R |
Синус x (x в радианах) |
|
||
|
|
|
|
|
|
|
Sqr(x) |
I, R |
I, R |
Квадрат x |
|
|
|
|
|
|
|
|
||
Sqrt(x) |
I, R |
R |
Корень квадратный из x |
|
||
|
|
|
|
|
|
|
Trunc(x) |
R |
I |
Ближайшее |
целое, |
не |
|
|
|
|
превышающее x по модулю |
|
Операции о тношения
Над данными типа Real, Integer, Char определены следующие операции отношения (сравнения):
●= - равно;
●<> - не равно;
●< - меньше;
●> - больше;
●<= - меньше или равно;
●>= - больше или равно.
19