Загрузил Stanislav S

Конструкции языка Pascal

реклама
Простейшие конструкции
языка Pascal
Лекция №2
К простейшим конструкциям языка
относятся способы представления
 скалярных данных,
 конструкций выражений,
 оператор присваивания
 и операторы ввода-вывода,
без которых не обходится ни одна
программа.
Синтаксис и семантика
языка программирования
Языки программирования – искусственные языки.
От естественных они отличаются ограниченным набором слов,
значение которых понятно транслятору, и очень строгими
правилами записи команд (операторов).
Языки программирования относятся к группе формальных
языков, для которых в отличие от естественных языков
однозначно определены синтаксис и семантика.
 Синтаксис языка – совокупность правил, определяющих
допустимые конструкции (слова, предложения) языка, его
форму.
 Семантика языка – совокупность правил, определяющих
смысл синтаксически корректных конструкций языка, его
содержание.
Алфавит языка Pascal:




Строчные и прописные буквы латинского алфавита
a..z, A..Z и знак подчеркивания _;
Цифры 0..9;
Специальные знаки . , + - * / : ; < > { } [ ] ( ) ^ @ # <=
>= := (* *);
Служебные слова end, begin, сase, write, …,
которые нельзя использовать в программе в какомлибо другом качестве.
Разделители
Разделителями являются следующие символы:
Пробел, ( ), [ ], +, - , * , / , < , > , = , : , ;
Пример
Write(A[i]+A[i+1]);
If d>15 then d:=d-1;
Структура
программы на языке
Pascal
Структура программы на
языке Pascal
PROGRAM <имя программы>;
USES <Список библиотек (модулей)>;
TYPE <Описание типов данных>;
LABEL <Список меток >;
CONST <Описание констант программы>;
VAR <Описание переменных>;
<Описание процедур и функций>;
BEGIN
<Последовательность операторов алгоритма>
END.
Примеры программ
Program Pr_1;
Begin
write('hello')
end.
Program Pr_2;
Var name:string;
Begin
write(‘Ваше имя?');
Readln(name);
write('hello, ‘,name)
end.
Данные. Типы данных
Информация
Входные
Выходные
данные
данные
Информация
Данные - это формализованное представление информации.
Под данными принято понимать факты и (или) идеи,
представленные в формализованном виде, пригодном для
передачи, интерпретации и обработки людьми или
компьютером.
Примеры данных
1)
2)
Показания счетчика горячей воды (в течении года.
Результаты сессии
ФИО
Селиванов А.А.
Мат
4
Физ
инф
4
5
Ист
5
+ +
-
-
+
Операции обмена данными

Операции ввода данных с клавиатуры (в машину)
осуществляются с помощью операторов ввода:
Read (<список ввода>);
ReadLn (<список ввода>);

{список ввода содержит
только переменные}
Вывод данных на экран осуществляется с помощью
операторов вывода:
Write (<список вывода>);
{список вывода м.содерж.
WriteLn (<список вывода>); перемен., строковые
конст., арифм. и логич. выражения}
Пример
Readln(a,b);
For i:=1 to n do
readln(a[i]);
Writeln(‘Сумма элементов равна
’,sum);
В программах данные представлены в виде
констант и переменных.
Они определяются идентификаторами
(именами), по которым к ним можно
обращаться для получения текущих значений
данных.
Идентификаторы (имена) переменных
В именах МОЖНО использовать
• латинские буквы (A-Z)
заглавные и строчные буквы не различаются
• цифры
имя не может начинаться с цифры
• знак подчеркивания _
В именах НЕЛЬЗЯ использовать
• русские буквы
• пробелы
• скобки, знаки +, =, !, ? и др.
Какие имена правильные??
AXby R&B 4Wheel Вася “PesBarbos”
TU154 [QuQu] _ABBA A+B
14


идентификатор должен быть смысловой, т.е.
отражать физическую суть объекта,
запись идентификатора должна быть краткой.
FIO,
price,
plan
Summ_Inp,
Summ_Out
Const
<идентиф.>=<значение>;
Var
<идентификатор перем.> : <тип>;
<идентиф.перем.> [,<идентиф.перем.>] :
<тип>;
Попытка присвоить переменной значение другого
типа квалифицируется как ошибка.
Константы и переменные характеризуются типом
данных, который указывается при описании
объектов в соответствующих разделах (Const и
Var), что обусловлено тем, что при компиляции
программы под ресурсы программы выделяется
область оперативной памяти.
Каждый тип данных имеет свой
идентификатор, который указывается при
описании объектов.
Var Summ: Real; a:integer;
c:char; fl:boolean;
Переменные
Типы переменных:
• integer
{ целая }
• real
{ вещественная }
• и другие…
Выделение
Объявление переменных:
variable – переменная
места в памяти
тип – целые
var a, b, c: integer;
список имен
переменных
19
Типы данных
простые
(скалярные)
Структурные
Переменные простых типов
принимают только одно
значение, которое допускает
диапазон типа.
Данные структурных типов
представляют собой совокупность
данных какого-либо типа, простого
или структурного.
Var a:byte;
S:char;
Begin
a:=25;
S:=’A’;
a:=2*a;
…
Массив А:
(1, 1, 2, 3, 5, 8, 13, 21, 34, 55).
Запись Rec:
(Иванов Е.П., 1967г., №8704
123456, слесарь).
ТИПЫ ДАННЫХ
Простые
(скалярные)
Структурные
Массивы
Вещественные
Порядковые
Записи
Множество
Целые
.byte
.shortint
.integer
.word
.longint
real
single
double
extended
Логический (boolean)
comp
Символьный (char)
Перечисляемый
Интервальный
(диапазон)
Строка (string)
Файловый
Простые типы в свою очередь делятся на порядковые и
вещественные.
Порядковые типы содержат конечное упорядоченное число
значений. Элементы порядкового типа упорядочены, то есть
каждый элемент типа имеет свой порядковый номер.
Поэтому к элементам порядковых типов применимы
следующие операции:
 Ord(x) – определяет порядковый номер значения x в
упорядоченной последовательности значений типа, к
которому принадлежит x.
 Pred(x) – возвращает значение типа, предшествующее
значению x.
 Succ(x) – возвращает значение, следующее за значением x.
Вещественные типы не могут относиться к группе
порядковых типов, так как в определенном
диапазоне чисел, даже в самом маленьком,
бесконечно много вещественных чисел и их нельзя
пронумеровать.
Между 2.5 и 2.6 располагается бесконечно много
чисел: 2.55, 2.50001 2.552, …. 2.59, 2.591 и т.д.
Для чего среди простых типов выделен
отдельный класс порядковых типов?
Дело в том, что некоторые конструкции языка
программирования допускают использование только
упорядоченных конечных множеств значений.
К таким конструкциям относятся:
 оператор выбора Case,
 оператор цикла For.
 Индексы элементов массива.
 Элементы множества.
Целые типы данных:
Имя типа
Тип
данных
Длина в
байтах
Диапазон значений типа
ShortInt
Коротко
е целое
1
-128 ..127
Byte
Байт
1
0 ..255
Word
Слово
2
0 ..65 535
SmalInt
Целое
2
-32 768 ..+32 767
Integer,
LongInt
Целое
4
-2 147 483 648 ..+2 147 483647
Int64
Длинное
целое
8
-922337203685
4775808
8
0
Uint64
-922337203685477
5808
18446744073709551
615
Для объявления в программе целочисленной переменной в
разделе описания переменных VAR через двоеточие
указывается идентификатор типа. Для целочисленной
константы тип указывать не надо.
Program Factorial;
Uses CRT;
Const N=10;
{целочисленная константа}
Var a,i:byte; F:Longint;
{целочисленные переменные}
Begin
Clrscr;
Repeat
write('Введите число<10:');
readln(a);
Until a<=N;
Операции над
целочисленными типами




сложение (+),
вычитание (-),
умножение (*)
деление



(/)
Div (возвращает неполное частное)
Mod (возвращает остаток от деления).
15 Div 8=2
15 Mod 8=7
5 div 8=0
14 mod 2=0
Вещественные типы
Для кодирования целочисленных данных используется
формат с фиксированной запятой, так как целые числа
имеют только одну часть – целую. Вещественные числа же
помимо целой части содержат дробную часть и запятую (в
программировании - точку).
Тогда для хранения вещественного числа необходимо
выделить
 поле целой части числа,
 поле запятой
 и поле дробной части.
Для хранения вещественных чисел используется формат с
плавающей запятой, который опирается на
нормализованную форму записи чисел.
Нормализованная форма
записи числа
A   ma * q
 Pa
где ma - мантисса числа А, удовл. условию
q - основание системы счисления,
Рa - порядок.
Пример
27,03=0,2703*102
0,0003=0,3*10-3
0,0000107=0,107*10-4;
1000000=0,1*107
,
1
 m  1.
q
Во внутреннем представлении мантисса и порядок
вещественных чисел хранятся раздельно, причем
количество разрядов под мантиссу и порядок
регламентируется типом числа.
Вещественные типы:
Длина
внутрен.
представ.
Название
Обозначение
Кол-во
дес.
значящих
цифр
Диапазон
изменения
порядка
4
Одинарной
точности
Single
7..8
-45..+38
8
Двойной
точности
Real,
Double
Extended
15..16
-324..+308
19..20
-4951..4932
10
расширенный
Формат вывода
вещественных данных
Веществен.
число
X:=450
X:=0.0012
X:=5.9709
Экспоненциальный
формат вывода
4.5000000000Е+02
1.2000000000Е-03
5.9709000000Е+00
формат
вывода
X:3:0
X:6:4
X:6:4
Числовые погрешности
Количество цифр в мантиссе определяет точность, с которой
может быть представлено число.
Пример
Var S:real;
begin
S:=0;
While S<>1 do
S:=S+0.1;
Writeln('s=',S);
end.
Погрешность возникает при обработке очень больших и очень
маленьких вещественных чисел. Сложение большого числа с
маленьким может быть равно большому числу, т.е. X+Y=X.
Var a:real;
begin
a:=100000+0.000001234;
writeln(a);
readln
end.
Результат умножения двух очень маленьких чисел может
оказаться столь мал, что будет равен 0. И наоборот, если
умножить два очень больших числа, результат может оказаться
слишком большим, чтобы его можно было представить верно.
дополнительные
вещественные типы


Если математический сопроцессор у вас установлен, используйте
директивы {$N+, E-}, которые дают указание компилятору выполнять
операции с плавающей точкой, вызывая при этом процедуры,
использующие сопроцессор.
Если сопроцессора нет, используйте директивы {$N+, E+}, которые
дают указание компилятору выполнять арифметические операции с
плавающей точкой, вызывая при этом процедуры, которые эмулируют
сопроцессор, т.е. имитируют с помощью программного обеспечения.
{$N+,E+}
Var a:double;
begin
a:=100000+0.000001234;
writeln(a);
readln
end.
Операции над
вещественными данными


(+, -, *, /).
математические функции (Abs(), Cos(),
Sqrt(), Ln() и др.).
При решении некоторых задач вещественные данные необходимо
преобразовать в целочисленные данные. В таких случаях
используют функции преобразования вещественных типов в
целочисленные
Функция
Результат
Round()
Округление вещественного числа до ближайшего
целого числа.
Trunc()
Выдает значение целого типа, отбрасывая дробную
часть числа.
Функция
Y:=Round(X);
Y:=Trunc(X);
X
Y
2.67
2.67
3
2
Пользовательские и
стандартные типы данных
Стандартные типы данных имеют предопределенные идентификаторы.
Все остальные типы являются пользовательскими и конструируются
программистом в разделе описания типов
TYPE
<идентификатор типа>=<структура типа>;
Примеры
Type Massiv= array [1..100] of integer;
{тип массив}
Simbol=Set of char;
{множественный тип символов}
Data=1..31;
{тип-диапазон}
Znak=(minus,plus,del,mult);
{перечисляемый тип}
Var M:Massiv;
S1, S2:Simbol;
Тип диапазон
Тип диапазон или интервальный тип представляет собой диапазон
(т.е. интервал) какого-либо базового типа. При этом базовым
типом может быть только порядковый тип.
Тип диапазон сохраняет все свойства исходного (базового) типа с
учетом ограниченного диапазона его значений. Для него
применимы все операции и функции исходного типа.
Пример
Type
Month=1..31;
Ocenka=1..5;
Alfavit=’A’..’Z’;
Cifra=’0’..’9’;
Главный плюс
интервального типа


в том, что он позволяет контролировать допустимость значений
средствами системы, т.е. при вводе значений, не входящих в интервал
типа, система выдает ошибку.
Если система автоматически такую проверку не выполняет,
необходимо в программу добавить директиву компилятору {$R+}.
Также можно включить опцию проверки диапазонов и через меню
Turbo Pascal. Для этого следует в меню Options выбрать пункт
Compiler и в появившемся окне установить флажок на команде Range
Checking.
{$R+}
Type ocenka=1..5;
Var o:ocenka;
Begin
o:=7;
writeln(o);
End.
Выражение –
это правило (формула)
для вычисления нового значения.
Выражения строятся из операндов, операций и круглых
скобок.
Операнды:
константы, переменные и функции.
Результат:
значение числового, логического типа, строка или
множество.
Тип результата
определяется типом операндов и типом операций.
Типы операций:
Тип
операций
Операции
Тип результата
Арифметичес
кие операции
+, -, *, /, div, mod
Операции
отношения
<, >, <>, =, <=,
>=
a<=10
Логического типа
(true, false)
Логические
операции
And, or, not, xor
(a<=N) and (a mod 2=0)
Логического типа
(true, false)
Строковая
операция
Конкатенация
(+)
S:=‘ ‘+s1+’ ‘;
Строка
Операции
над
множествами
+, -, *,
in (принад.
элем-та
множеству)
c in [‘a’..’z’]
Множество
Логического типа
(true, false)
Операции
над
указателями
@
P:=@adr
адрес
Вещественного или
целого типа
Приоритеты операций :
Уровень
Операции
приоритета
1
Not,
And,
or, xor,
2
*,/, div, mod,
3
+, -,
4
<, >, <>, =, <=, >=, in
Арифметические выражения
конструируются с помощью:


четырех арифметических операций: +, –, *, / ,DIV и MOD,
а также стандартных функций, которые имеют наивысший
приоритет.
Алгебраическое выражение
на языке Pascal:
3.4  2 x
y
5x2  1
y:=(3.4+2*x)/(5*x*x-1)
Стандартные функции:











ABS(x)
ARCTAN(x)
SIN(x)
COS(x)
EXP(x)
LN(x)
SQR(x)
SQRT(x)
ROUND(x)
TRUNC(x)
FRAC(x)
Записать на языке Pascal
выражение:
2 
sin
 0.4 x
x
z
6 x
Операции целочисленного
деления DIV и MOD
1)
2)
3)
4)
5)
34 div 5 = 6
16 div 10 = 1
48 div 6 = ?
64 div 8 = ?
654 div 100 = ?
1)
2)
3)
4)
5)
34 mod 5 = 4
16 mod 10 = 6
48 mod 6 = ?
64 mod 8 = ?
654 mod 100 =?
Логические выражения
Логические выражения чаще всего применяются в
управляющих операторах. Они конструируются с
помощью
 операций отношения (сравнения): =, <>, <, >, <=, >=
 и логических операций And, Not, Or, Xor.
Результатом логического выражения является одно из
значений логического типа: true или false.
Примеры простых логических
выражений:
•
•
•
•
•
•
(D>0)
(A mod 2=0)
(X<>0)
(A[i]<max)
Ch=‘Y’
Key<>FIO
Логические операции
Операция отрицания
(логическое НЕ)
Примеры логических выражений:
A
Not A
True
False
False
True
Not (a>0)
Not(a mod 3=0)
While not (a>0)do
readln(a);
Операция AND
(логическое И, логическое умножение)
AND используется в случае, когда
необходимо выполнение
нескольких условий
одновременно.
Примеры логических выражений:
1) (а mod 10<3)and(a>0)
2) (a mod 2=0)and(a>0)
A
B
A and B
True
True
True
False
true
False
True
false
False
false
False
false
If (a=b) and (a=c) then
writeln (‘равносторонний’);
Операция OR
(логическое ИЛИ)
Используется в случае, когда
необходимо выполнение
хотя бы одного из
нескольких условий.
Примеры логических выражений:
1)
(10<3)or(a<0)
2)
(a mod 2=0)or(a>0)
3)
(a+b<=c) or (a+c<=b) or (b+c<=a)
A
B
A or B
true
true
True
false
true
True
true
false
True
false
False
false
If (a=b) or (a=c) or (b=c) then
writeln (‘равнобедренный’);
Операция XOR
(логическое ЛИБО, ЛИБО)
Используется в случае, когда
необходимо выполнение
строго одного из двух
условий.
Примеры логических
выражений:
1) (a mod 2=0)xor(a>0)
2) (x<0)xor (y<0)
A
B
A xor B
True
True
false
False
true
True
True
false
True
false
False
false
Скачать