Слайд 1Язык программирования Object Pascal
Общий обзор.
Слайд 2§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
Слайд 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 )
Идентификатор не может
содержать пробелов.
Прописные и строчные буквы идентичны( LABEL1, Label1, label1)
Не содержит
спец. символов
Не начинается с цифры
Слайд 9Примеры правильных идентификаторов:
a; MyProgramIsBestProgram; external
ALPHA; date_27_sep_39; _beta
Примеры неправильных
идентификаторов:
1Program // начинается цифрой
block#l // содержит специальный символ
My Prog //
содержит пробел
mod // зарезервированное слово
Слайд 10§3 Структура основного файла программы
Слайд 11Любую программу на языке Object Pascal можно условно разделить на
три основные части:
заголовок программы
раздел описаний
раздел операторов.
Каждое описание и определение заканчивается
точкой с запятой ;
Слайд 12Основной файл программы имеет следующую структуру:
Program ;
Uses
модулей>;
const ;
type ;
var ;
procedure
(function) <описание подпрограмм>;
begin
<раздел операторов>
end.
Слайд 13Заголовок программы
Program ;
Имя программы – идентификатор.
Например:
Program smotr1;
Program
Zadacha_1;
Слайд 14 Раздел подключения модулей
Uses ;
В этом
предложении перечисляются модули, загружаемые программой: системные модули и модули приложения.
Например:
uses
SysUtils;
Слайд 15Раздел описания констант
В разделе описания констант перечисляются именованные константы и
их значения.
Const = ;
<имя константы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 (истина).
Символьная константа -
это любой символ ПК, заключенный в апострофы:
'z' - символ “z”;
'Ф' - символ “Ф”.
Если необходимо записать собственно символ апострофа, он удваивается: ''''
Слайд 19Строковая константа - любая последовательность символов (кроме символа 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) присваивание
:=
Обязательно: тип выражения и тип
переменной должны быть совместимы по присваиванию.
Пример. Присвоить значения переменным N,
X, Y.
N:=-5; X:=5678.9; Y:=5.6789e3
Слайд 242) Ввод
- READ ();
- READLN ();
Пример. Ввести значения
переменных N, X,Y
readln(N); readln(X,Y)
или readln (N,X,Y)
или read(N); read
(X,Y)
Или …
Слайд 25Вывод
WRITE ();
WRITELN () (после вывода переход на
новую строку)
элемент вывода имеет вид:
[: [:
после точки> ]]
Слайд 26Readln(a,b);
Readln(c,d);
1 2 3
4 5
a b
c d
Слайд 27writeln(a,b);
write(c);
write(d);
12
4
5
Слайд 28a:=3;
Write(a:5);
Write(a/3);
Write(a/3:6:4);
3
1.66666666666667E+0000
1.6667
Слайд 30Тип определяет
1) формат внутреннего представления объекта данного типа в оперативной
памяти,
2) множество допустимых значений, которые может иметь объект данного
типа,
3) множество допустимых операций, которые применимы к объекту данного типа.
Слайд 31В ОР группы целых, символьных и строковых типов подразделяются на
две категории:
1. Фундаментальные (fundamental) типы, формат представления которых в памяти
(число битов и наличие знака) строго фиксируются и будут выдерживаться неизменными во всех последующих версиях ОР для любых операционных систем и компьютерных платформ.
Слайд 322) Родовые (generic) типы, формат представления которых в памяти не
фиксируется и будет устанавливаться наиболее оптимальным способом, в зависимости от
реализации для конкретной операционной системы и компьютерной платформы.
Слайд 34Простые типы данных делятся на
порядковые типы
вещественные типы и
типы работающие с датой-временем.
Слайд 36Порядковыми (ordinal) типами называются те, в которых значения упорядочены и
для каждого из них можно указать предшествующее и следующее значение.
Для
порядковых типов определен ряд стандартных функций:
Слайд 38Для порядковых типов определены процедуры инкремента INC(X) и декремента Dec(X).
Эти процедуры соответственно увеличивают или уменьшают на единицу порядковый номер
своего аргумента.
…
X:=5;
Inc(x); //х=6
…
Слайд 42Допустимые операции, функции
1) Изменение знака -;
2) *,/,Div,mod
3)
+,-
Div-деление нацело, 13 div 3 =4
mod-остаток от деления. 13 mod
3 =1
-1000 mod 3 = -1
_ 13| 3
12|4
1
Слайд 43Randomize; генератор случайных чисел
Слайд 44Пример программы, в которой значение выходит из допустимого диапазона
Var k:Word;
begin
k
:= 65535; // Максимальное значение типа Word
k := k+1;
// По правилам математики k=65536
writeln(k); // На самом деле k=0!
end;
Слайд 46Значения логического типа
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)
Слайд 49Код 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. Операции отношения
(,=,>=,
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);
…
Ord(black)=0, ... , Ord(white)=2,
Ord(one)=0,
... , Ord(three)=2,
Слайд 53Var 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:=0
?
Переменные перечисляемого типа можно объявлять без предварительного описания этого типа,
например:
var
col: (black, white, green);
Слайд 55Тип-диапазон
Интервальный тип
Подмножество своего базового типа, в качестве которого
может выступать любой порядковый тип, кроме типа-диапазона.
Type
T = N1..N2;
Слайд 56
type
digit = '0'..'9';
dig2 = 48 .. 57;
Тип-диапазон можно указывать непосредственно
при объявлении переменной, например:
var
date : 1..31;
month: 1..12;
Ichr : 'А'..'Z';
Слайд 59Внутреннее представление
вещественного числа в памяти ПК
S – знаковый разряд числа
Е
– экспоненциальная часть
M – мантисса числа
Слайд 60Встроенные математические функции
arctan(x) cos (x) sin (x)
exp(x) ln(x) sqr(x)
sqrt(x)
pi
Слайд 61Арифметические выражения
Правила записи арифметических выражений:
1. Все символы пишутся в одну
строку
2a + √0,5 sin x
0,2 – ln y
(2*a+sqrt(0,5+sin(x)))/(0.2-ln(y))
2. Нельзя ставить
два знака подряд
+(-3)
Слайд 623. Операции с более высоким приоритетом выполняются раньше операций с
меньшим приоритетом
4. Операции одного приоритета выполняются слева направо
Приоритет операций
Слайд 634. На каждую арифметическую операцию и вычисление стандартной функции тратится
2 единицы времени
Слайд 64Тип дата-время TDateTime
Назначение: одновременное хранение и даты, и времени.
Внутреннее
представление: вещественное число с фиксированной дробной частью ~Double (8 байт).
Целая
часть числа - дата,
Дробная часть - время
Слайд 650 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
Слайд 66TDate используется для получения сегодняшей даты
TDate represents a special type
of TDateTime value that has no decimal part. Значение TDate
– количество дней прошедших с 12/30/1899.
Слайд 67function Now: TDateTime;
Возвращает текущую дату и время
Writeln( Now);
Writeln( DateTimeToStr(Now));
Слайд 68функция Time или GetTime возвращает TDateTime;
Var
DateTime :
TDateTime;
begin
DateTime := Time;
Writeln(TimeToStr(DateTime));
TimeToStr – переводит время в
строку
Слайд 69Процедура DecodeTime
Выделяет из переменной TDateTime часы минуты, секунды и миллисекунды
DecodeTime(Time,Hour,
Min, Sec, MSec);
Hour, Min, Sec, MSec типа Word
Time типа TDateTime
Слайд 70var
Present: TDateTime;
Year, Month, Day, Hour, Min, Sec, MSec:
Word;
Begin
Present:= Now;
DecodeDate(Present, Year, Month, Day);
end.