Язык программирования Object Pascal. Общий обзор

Содержание

Слайд 2

§1 Историческая справка В 1970г. - Паскаль (швейцарский ученый Никлаус Вирт)

§1 Историческая справка

В 1970г. - Паскаль (швейцарский ученый Никлаус Вирт) Первая

версия была создана для машины CDC 6000.
В 1983г - Турбо-Паскаль фирмы Borland для ОС CP\M.
В 1984г. - Турбо-Паскаль для MS DOS.
В 1991г. - Turbo Pascal for Windows
В 1992 - Borland Pascal with Objects 7.0.
В 1995г. - Borland выпустила первую версию Delphi, фундаментом которой стал новый ЯП Object Pascal. Через год появилась Delphi 2 с новой версией Object Pascal 2.0. Затем, с интервалом в 1 год, выходят еще 3 версии Delphi: 2, 3, 4 и 5. Наконец, в середине 2001 г. выпускается версия 6, в 2002 – 7, 2003-8.
Слайд 3

§2 Алфавит языка Object Pascal

§2 Алфавит языка Object Pascal

Слайд 4

Алфавит языка. Алфавит языка состоит из множества символов, включающих в себя

Алфавит языка.

Алфавит языка состоит из множества символов, включающих в себя буквы,

цифры и специальные символы.
Латинские буквы: от А до Z (заглавные) и от a до z (строчные).
Цифры: 0,1,2,3,4,5,6,7,8,9.
Шестнадцатиричные цифры: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F.
Слайд 5

Специальные символы: + * - / и т.д. Следующие комбинации специальных

Специальные символы: + * - / < > и т.д.
Следующие комбинации

специальных символов являются едиными символами (их нельзя разделять пробелами):
:= знак присваивания >=
<> не равно <=
(* *) ограничители комментария
(наряду с { } )
Комментарий не может начинаться с $, т.к.
{$ воспринимается как начало директивы компилятору.
// - закомментировать одну строку
Слайд 6

К спецсимволам относят служебные слова, смысл которых определен однозначно. Служебные слова

К спецсимволам относят служебные слова, смысл которых определен однозначно. Служебные слова

не могут быть использованы для других целей. С точки зрения языка - это единые символы.
Например:
and type program as class
while if var uses unit
Слайд 7

Идентификатор. Идентификатором называется символическое имя определенного программного объекта Идентификатор- это любая

Идентификатор.

Идентификатором называется символическое имя определенного программного объекта
Идентификатор- это любая последовательность латинских

букв, цифр и знака подчеркивания.
Слайд 8

Длина идентификатора не ограничена, (учитываются первые 256 ) Идентификатор не может

Длина идентификатора не ограничена, (учитываются первые 256 )
Идентификатор не может содержать

пробелов.
Прописные и строчные буквы идентичны( LABEL1, Label1, label1)
Не содержит спец. символов
Не начинается с цифры
Слайд 9

Примеры правильных идентификаторов: a; MyProgramIsBestProgram; external ALPHA; date_27_sep_39; _beta Примеры неправильных

Примеры правильных идентификаторов:
a; MyProgramIsBestProgram; external
ALPHA; date_27_sep_39; _beta
Примеры неправильных идентификаторов:
1Program

// начинается цифрой
block#l // содержит специальный символ
My Prog // содержит пробел
mod // зарезервированное слово
Слайд 10

§3 Структура основного файла программы

§3 Структура основного файла программы

Слайд 11

Любую программу на языке Object Pascal можно условно разделить на три

Любую программу на языке Object Pascal можно условно разделить на три

основные части:
заголовок программы
раздел описаний
раздел операторов.
Каждое описание и определение заканчивается точкой с запятой ;
Слайд 12

Основной файл программы имеет следующую структуру: Program ; Uses ; const

Основной файл программы имеет следующую структуру:
Program <имя программы>;
Uses <имена подключаемых модулей>;
const

<раздел описаний констант>;
type <раздел описаний типов>;
var <раздел описаний переменных>;
procedure (function) <описание подпрограмм>;
begin
<раздел операторов>
end.
Слайд 13

Заголовок программы Program ; Имя программы – идентификатор. Например: Program smotr1; Program Zadacha_1;

Заголовок программы

Program <Имя программы>;
Имя программы – идентификатор.
Например:
Program smotr1;
Program Zadacha_1;

Слайд 14

Раздел подключения модулей Uses ; В этом предложении перечисляются модули, загружаемые

Раздел подключения модулей

Uses <имена модулей через запятую> ;
В этом предложении

перечисляются модули, загружаемые программой: системные модули и модули приложения.
Например:
uses SysUtils;
Слайд 15

Раздел описания констант В разделе описания констант перечисляются именованные константы и

Раздел описания констант

В разделе описания констант перечисляются именованные константы и их

значения.
Const <имя константы1> = <значение1>;
<имя константы2> = <значение2>;
Например:
Сonst n=10;
р=3.1415926535897932384626433832795;
str =‘Маша’;
Слайд 16

Целые числа записываются со знаком или без него по обычным правилам

Целые числа записываются со знаком или без него по обычным правилам

и могут иметь значение в диапазоне от -263 до +263-11.
Слайд 17

Вещественные числа записываются со знаком или без него с использованием десятичной

Вещественные числа записываются со знаком или без него с использованием десятичной

точки и/или экспоненциальной части.
3.14Е5 - 3,14 умножить на 10 в степени 5;
314000
-17e-2 -минус 17 умножить на 10 в степени минус 2 0,17
Слайд 18

Логическая константа - false (ложь), либо true (истина). Символьная константа -

Логическая константа - false (ложь), либо true (истина).
Символьная константа - это

любой символ ПК, заключенный в апострофы:
'z' - символ “z”; 'Ф' - символ “Ф”.
Если необходимо записать собственно символ апострофа, он удваивается: ''''
Слайд 19

Строковая константа - любая последовательность символов (кроме символа CR - возврат

Строковая константа - любая последовательность символов (кроме символа CR - возврат

каретки), заключенная в апострофы. Если в строке нужно указать сам символ апострофа, он удваивается, например:
'Это - строка символов';
'That''s all'.
Слайд 20

Раздел описания типов Раздел описания типов позволяет определить новый тип в

Раздел описания типов

Раздел описания типов позволяет определить новый тип в программе.

(могут быть использованы ранее определенные константы.)
Type <имя тип>= <описание типа>;
Например:
Type MyType1= integer;
VyType2=1..n;
Слайд 21

Раздел описания переменных В разделе описания переменных содержится список переменных, используемых

Раздел описания переменных

В разделе описания переменных содержится список переменных, используемых в

программе, и определяется их тип.
Var V1,V2,..,Vn : T ;
где V1,V2,.., Vn -имена переменных
данного типа Т
Например:
Var i, j : integer ;
L : MyType2;
M, k : char ;
Слайд 22

Раздел операторов Раздел операторов состоит из операторов языка ОР, отделенных друг

Раздел операторов

Раздел операторов состоит из операторов языка ОР, отделенных друг от

друга точкой с запятой. Он заключен в операторные скобки BEGIN END.
При этом после end ставится точка.
После слова begin и перед словом end точка с запятой обычно не ставится.
Слайд 23

Операторы действия 1) присваивание := Обязательно: тип выражения и тип переменной

Операторы действия

1) присваивание
<перем>:=<выр-е>
Обязательно: тип выражения и тип переменной

должны быть совместимы по присваиванию.
Пример. Присвоить значения переменным N, X, Y.
N:=-5; X:=5678.9; Y:=5.6789e3
Слайд 24

2) Ввод - READ ( ); - READLN ( ); Пример.

2) Ввод
-         READ (<список ввода>);
-         READLN (<список ввода>);
Пример. Ввести значения переменных

N, X,Y
readln(N); readln(X,Y)
или readln (N,X,Y)
или read(N); read (X,Y)
Или …
Слайд 25

Вывод WRITE ( ); WRITELN ( ) (после вывода переход на

Вывод

WRITE (<список ввода>);
WRITELN (<список ввода>) (после вывода переход на новую строку)
элемент

вывода имеет вид:
<выр-е> [:<мин. поле> [:<кол. дес. знаков после точки> ]]
Слайд 26

a b Readln(a,b); Readln(c,d); 1 2 3 4 5 a b c d

a b

Readln(a,b);
Readln(c,d);
1 2 3
4 5

a b

c

d
Слайд 27

12 writeln(a,b); write(c); write(d); 12 4 5

12

writeln(a,b);
write(c);
write(d);

12

4

5

Слайд 28

a:=3; Write(a:5); Write(a/3); Write(a/3:6:4); 3 1.66666666666667E+0000 1.6667

a:=3;
Write(a:5);
Write(a/3);
Write(a/3:6:4);

3

1.66666666666667E+0000

1.6667

Слайд 29

§4 Классификация типов данных

§4 Классификация типов данных

Слайд 30

Тип определяет 1) формат внутреннего представления объекта данного типа в оперативной

Тип определяет
1) формат внутреннего представления объекта данного типа в оперативной памяти,


2) множество допустимых значений, которые может иметь объект данного типа,
3) множество допустимых операций, которые применимы к объекту данного типа.
Слайд 31

В ОР группы целых, символьных и строковых типов подразделяются на две

В ОР группы целых, символьных и строковых типов подразделяются на две

категории:
1. Фундаментальные (fundamental) типы, формат представления которых в памяти (число битов и наличие знака) строго фиксируются и будут выдерживаться неизменными во всех последующих версиях ОР для любых операционных систем и компьютерных платформ.
Слайд 32

2) Родовые (generic) типы, формат представления которых в памяти не фиксируется

2) Родовые (generic) типы, формат представления которых в памяти не фиксируется

и будет устанавливаться наиболее оптимальным способом, в зависимости от реализации для конкретной операционной системы и компьютерной платформы.
Слайд 33

Простые типы данных

Простые типы данных

Слайд 34

Простые типы данных делятся на порядковые типы вещественные типы и типы работающие с датой-временем.

Простые типы данных делятся на
порядковые типы
вещественные типы и
типы

работающие с датой-временем.
Слайд 35

Порядковые типы данных

Порядковые типы данных

Слайд 36

Порядковыми (ordinal) типами называются те, в которых значения упорядочены и для

Порядковыми (ordinal) типами называются те, в которых значения упорядочены и для

каждого из них можно указать предшествующее и следующее значение.
Для порядковых типов определен ряд стандартных функций:
Слайд 37

x:=Pred(c); // при с=10 х=9

x:=Pred(c); // при с=10 х=9

Слайд 38

Для порядковых типов определены процедуры инкремента INC(X) и декремента Dec(X). Эти

Для порядковых типов определены процедуры инкремента INC(X) и декремента Dec(X). Эти

процедуры соответственно увеличивают или уменьшают на единицу порядковый номер своего аргумента.

X:=5;
Inc(x); //х=6

Слайд 39

Целый тип данных

Целый тип данных

Слайд 40

Фундаментальные типы:

Фундаментальные типы:

Слайд 41

Родовые типы:

Родовые типы:

Слайд 42

Допустимые операции, функции 1) Изменение знака -; 2) *,/,Div,mod 3) +,-

Допустимые операции, функции

1) Изменение знака -;
2) *,/,Div,mod
3) +,-
Div-деление

нацело, 13 div 3 =4
mod-остаток от деления. 13 mod 3 =1
-1000 mod 3 = -1

_ 13| 3
12|4
1

Слайд 43

Randomize; генератор случайных чисел

Randomize; генератор случайных чисел

Слайд 44

Пример программы, в которой значение выходит из допустимого диапазона Var k:Word;

Пример программы, в которой значение выходит из допустимого диапазона
Var k:Word;
begin
k :=

65535; // Максимальное значение типа Word
k := k+1; // По правилам математики k=65536
writeln(k); // На самом деле k=0!
end;
Слайд 45

Логические типы

Логические типы

Слайд 46

Значения логического типа False (ложь) или True (истина). Для них справедливы

Значения логического типа
False (ложь) или True (истина).
Для них справедливы

правила:
Ord(False) = 0
Ord(True) = 1
Succ(False)= True
Pred(True) = False
False < True
Слайд 47

Логические операции Or And Not B or C A and B Not(C)

Логические операции

Or
And
Not
B or C
A and B
Not(C)

Слайд 48

Символьные типы

Символьные типы

Слайд 49

Код ANSI (American National Standard Institute) коды 0... 127 (Код 43

Код ANSI
(American National Standard Institute)
коды 0... 127 (Код 43 ‘+’

код 91 ‘[’ код 126 ‘~’ )
коды128...255 Стандартные Windows-шрифты:
Arial Cyr
Courier New Cyr
Times New Roman
Коды 192..223 - “А”... “Я”,
Коды 224…255 - “а”... “я”
Слайд 50

1. Операции отношения ( ,=,>=, ) 2. Chr(b) Chr(48)=‘0’ Chr(58)=‘:’ 3. Upcase(ch) Upcase(‘a’)=‘A’ Upcase(‘5’)=‘5’

1. Операции отношения
(<,>,=,>=, <=, <>)
2. Chr(b)
Chr(48)=‘0’
Chr(58)=‘:’
3. Upcase(ch)
Upcase(‘a’)=‘A’
Upcase(‘5’)=‘5’

Слайд 51

Перечисляемый тип Задается перечислением тех значений, которые он может получать. Каждое

Перечисляемый тип

Задается перечислением тех значений, которые он может получать.
Каждое

значение - идентификатор и располагается в списке в круглых скобках
Type
colors=(red, white, blue);
Слайд 52

Пример type colors=(black, red, white); ordenal=(one, two, three); days=(Monday, Tuesday, Wednesday);

Пример

type
colors=(black, red, white);
ordenal=(one, two, three);
days=(Monday, Tuesday, Wednesday);

Ord(black)=0, ... , Ord(white)=2,
Ord(one)=0, ...

, Ord(three)=2,
Слайд 53

Var col : colors; num : ordenal; day : days; допустимы

Var col : colors;
num : ordenal;
day : days;
допустимы операторы
col :=

black;
num := Succ(two);
day:=Pred(tuesday);
недопустимы
col := one; day:=black;
Слайд 54

эквивалентны следующие присваивания: col := black; col := colors (0) ;

эквивалентны следующие присваивания:
col := black;
col := colors (0) ;
? col:=0 ?
Переменные

перечисляемого типа можно объявлять без предварительного описания этого типа, например:
var
col: (black, white, green);
Слайд 55

Тип-диапазон Интервальный тип Подмножество своего базового типа, в качестве которого может

Тип-диапазон Интервальный тип

Подмножество своего базового типа, в качестве которого может

выступать любой порядковый тип, кроме типа-диапазона.
Type
T = N1..N2;
Слайд 56

type digit = '0'..'9'; dig2 = 48 .. 57; Тип-диапазон можно

type
digit = '0'..'9';
dig2 = 48 .. 57;
Тип-диапазон можно указывать непосредственно при

объявлении переменной, например:
var
date : 1..31;
month: 1..12;
Ichr : 'А'..'Z';
Слайд 57

High(X) Low (X)

High(X)
Low (X)

Слайд 58

Вещественные типы

Вещественные типы

Слайд 59

Внутреннее представление вещественного числа в памяти ПК S – знаковый разряд

Внутреннее представление вещественного числа в памяти ПК

S – знаковый разряд числа
Е –

экспоненциальная часть
M – мантисса числа
Слайд 60

Встроенные математические функции arctan(x) cos (x) sin (x) exp(x) ln(x) sqr(x) sqrt(x) pi

Встроенные математические функции

arctan(x) cos (x) sin (x)
exp(x) ln(x) sqr(x)
sqrt(x) pi

Слайд 61

Арифметические выражения Правила записи арифметических выражений: 1. Все символы пишутся в

Арифметические выражения

Правила записи арифметических выражений:
1. Все символы пишутся в одну строку
2a

+ √0,5 sin x
0,2 – ln y
(2*a+sqrt(0,5+sin(x)))/(0.2-ln(y))
2. Нельзя ставить два знака подряд
+(-3)
Слайд 62

3. Операции с более высоким приоритетом выполняются раньше операций с меньшим

3. Операции с более высоким приоритетом выполняются раньше операций с меньшим

приоритетом
4. Операции одного приоритета выполняются слева направо
Приоритет операций
Слайд 63

4. На каждую арифметическую операцию и вычисление стандартной функции тратится 2 единицы времени

4. На каждую арифметическую операцию и вычисление стандартной функции тратится 2

единицы времени
Слайд 64

Тип дата-время TDateTime Назначение: одновременное хранение и даты, и времени. Внутреннее

Тип дата-время TDateTime

Назначение: одновременное хранение и даты, и времени.
Внутреннее представление:

вещественное число с фиксированной дробной частью ~Double (8 байт).
Целая часть числа - дата,
Дробная часть - время
Слайд 65

0 12/30/1899 12:00 am Дата - количество суток, прошедших с 30

0 12/30/1899 12:00 am
Дата - количество суток, прошедших с 30 декабря 1899

года,
Время - часть суток, прошедших с 0 часов.
2.75 1/1/1900 6:00 pm
-1.25 12/29/1899 6:00 am
Слайд 66

TDate используется для получения сегодняшей даты TDate represents a special type

TDate используется для получения сегодняшей даты
TDate represents a special type of

TDateTime value that has no decimal part. Значение TDate – количество дней прошедших с 12/30/1899.
Слайд 67

function Now: TDateTime; Возвращает текущую дату и время Writeln( Now); Writeln( DateTimeToStr(Now));

function Now: TDateTime;

Возвращает текущую дату и время
Writeln( Now);
Writeln( DateTimeToStr(Now));

Слайд 68

функция Time или GetTime возвращает TDateTime; Var DateTime : TDateTime; begin

функция Time или GetTime возвращает TDateTime;

Var
DateTime : TDateTime;
begin
DateTime

:= Time;
Writeln(TimeToStr(DateTime));
TimeToStr – переводит время в строку
Слайд 69

Процедура DecodeTime Выделяет из переменной TDateTime часы минуты, секунды и миллисекунды

Процедура DecodeTime

Выделяет из переменной TDateTime часы минуты, секунды и миллисекунды
DecodeTime(Time,Hour, Min,

Sec, MSec);
Hour, Min, Sec, MSec типа Word
Time типа TDateTime