Высокоуровневые методы информатики и программирования 1. 2. Язык программирования высокого уровня Pascal Объектно-ориентированное программирование История развития языка Pascal • 1967 г. Николаус Вирт на базе языка Algol начинает разработку нового языка программирования, который назвал его в честь Блеза Паскаля • 1979 г. Британский стандарт языка программирования Pascal BS6192 • 1982 г. международный стандарт языка ISO 7185 • 1983 г. фирма Borland выпускает Turbo Pascal версии 1.0 • 1992 г. фирма Borland выпустила два пакета: Borland Pascal 7.0 и Turbo Pascal 7.0 • последующее развитие Pascal привело к появлению языка Object Pascal, который впоследствии стал основой для создания Delphi • 2006 г. фирма Borland выделяет разработчиков Delphi в отдельную компанию CodeGear • Аналогом Delphi для операционной системы Unix является Kylix Структура языка Pascal Алфавит • фиксированный набор основных символов, из которых должен состоять любой текст на этом языке Синтаксис • правила построения фраз правил истолкования Семантика • система отдельных языковых конструкций Алфавит языка Pascal • прописные (A…Z) и строчные (a…z) буквы латинского алфавита • знак подчеркивания ( _ ) • цифры (0…9) • специальные знаки (. : ; ' ^ $ # @ ( ) [ ] { } = + - * / > <) • пробельные символы Лексемы Составные символы Символы Лексемы зарезервированные (ключевые) слова имена (идентификаторы) Составные символы образуются из комбинации специальных символов: • := (присвоение) • .. (диапазон значений) • <> (не равно) • <= (меньше или равно) • >= (больше или равно) • (* и *) (альтернатива фигурным скобкам) • (. и .) (альтернатива квадратным скобкам) Зарезервированные (ключевые) слова являются составной частью языка, имеют фиксированное написание и однозначно определенный смысл, который не может быть изменен • Program • Begin • End • If • Else •… Правилам составления имен (идентификаторов) 1. может состоять из букв латинского алфавита, цифр и знака подчеркивания 2. не может содержать специальные знаки 3. не может начинаться с цифры 4. не может совпадать ни с одним из зарезервированных слов 5. длина может быть произвольной, но значащими считаются первые 63 символа В языке Pascal при написании зарезервированных слов и идентификаторов игнорируется различие в высоте букв • Name • NAME • name Типы данных • Тип данных определяет внутреннее представление данных, диапазон их значений и допустимые действия над ними • Каждое выражение в программе имеет определённый тип Языки программирования Слабо типизируемые статически типизируемые динамически типизируемые Сильно типизируемые Строго типизируемые Стандартные типы данных Пользовательские типы данных предопределены разработчиками языка определяются программистом в программе, на основе стандартных Классификация типов данных в языке Pascal Порядковые Простые Структурированные Логический Вещественные Массивы Записи Указатели Строковые Процедурные Целые Множества Файлы Объекты Символьный Перечисляемые Тип-диапазон Целочисленные типы данных Shortint Integer Longint Byte Word Cardinal Smallint Int64 Longword Диапазон -128..127 -32768..32767 -2147483648..2147483647 0..255 0..65535 1 2 4 1 2 Диапазон также -2147483648..2147483647 также также также 0..4294967295 -32768..32767 -263 .. 263-1 0..4294967295 Размер (байт) Тип Object Pascal Размер (байт) Turbo Pascal 4 4 2 8 4 Вещественные типы данных Real Single Double Extended Comp Real48 Currency 6 4 8 10 8 11-12 -5.0х10324..1.7х10308 7-8 также 15-16 также 19-20 -3.6x104951.. 1.1x104932 19-20 -263+1 .. 263-1 -2.9x1039.. 1.7x1038 -922337203685477.5808 922337203685477.5807 Точность -2.9x1039.. 1.7x1038 -1.5x1045..3.4x1038 -5.0x10324..1.7x10308 -3.4х104932..1.1х104932 -9.2х1018..9.2х1018 Диапазон Размер (байт) Диапазон Точность Тип Object Pascal Размер (байт) Turbo Pascal 8 15-16 10 8 6 8 19-20 19-20 11-12 19-20 • Логический тип (Boolean) занимают в памяти 1 байт и могут принимать два значения: False (ложь) или True (истина). • Символьный тип (Char) позволяет работать с символами, которые записываются двумя способами: в одинарных кавычках или по их ASCII коду, например 'b', 'Д', '*' или #98, #132, #42. Под каждый символов отводится 1 байт. • Указательный тип (Pointer) представляет собой адрес в памяти компьютера. • Строковый тип (String) представляет собой строку символов и занимает Max+1 байт, где Max – максимальное количество символов в строке. Строковые типы данных, доступные в Delphi Тип ShortString AnsiString WideString Максимальная длина (символов) Занимаемая память Размер символа (байт) 255 ~231 ~230 От 2 до 256 байт От 4 байт до 2 Гб От 4 байт до 2 Гб 1 1 2 Действия, выполняемые над данными • Арифметические действия выполняются над данными вещественного и целого типов: +, –, *, /, DIV, MOD. • Операции отношения (сравнения) выполняются над данными вещественного , целого типов , строками и символами: =, <>, <, >, <=, >=. Результат операции сравнения имеет логический тип. • Логические операции применимые к данным логического и целого типов: NOT – логическое НЕ, AND – логическое И, OR – логическое ИЛИ, XOR исключающее ИЛИ. Логические операции над данными дают результат логического типа. Логические операции A NOT A B NOT B A AND B A OR B A XOR B False True False True False False False False True True False False True True True False False True False True True True False True False True True False Выражения • унарные операции b:= NOT a; • бинарные операции операнды выражение Знак операции d:=b* b – 4 * a * c; d > (a - b) / c ; Правила составления выражений в языке Pascal 1. два символа арифметических операций не должны стоять рядом; исключение составляет знак "-" (минус) перед отрицательной константой 2. нельзя опускать знак умножения 3. круглые скобки определяют очередность выполнения операций 4. число левых и правых скобок должно быть одинаково 5. при отсутствии скобок вычисление выражения выполняется согласно приоритету операций: • унарные операции: NOT, +, • операции типа умножения: *, /, DIV, MOD, AND • операции типа сложения: +, -, OR • операции отношения =, <, >, <=, >=, <> x>=0 AND x<12 Верная запись: (x>=0) AND (x<12) Совместимость типов • • • • оба типа одинаковые оба типа вещественные оба типа целочисленные оба типа – поддиапазоны одного (другого) типа • оба типа образованы от одного исходного типа • один тип является поддиапазоном другого Структура программы на языке Pascal • Нововведением в Delphi является понятие проекта – описания файловой структуры исходного текста программного продукта • Кроме файлов с исходными текстами, в проект могут входить файлы ресурсов, подключаемых к программе • Описание проекта находится в основной части программы, генерируется средой автоматически (файле с расширением dpr) Программа на языке Pascal состоит из 3 разделов: Program Name; {Заголовок программы} {Раздел описаний} Begin {Раздел операторов} End. Для обозначения конца оператора используется разделитель – точкой с запятой (;) Комментарий: • {Это комментарий} • (*Это тоже комментарий*) в Delphi также • // До конца строки – комментарий Ключи компиляции: $ букваключ + или – • {$E+} – эмулировать математический сопроцессор • {$N+} – использовать математический сопроцессор • {$R+} – проверять выход за границы диапазонов Составной оператор Begin … … End; Begin … Begin … End; … End; Раздел описаний • • • • • • • внешних модулей (Uses) меток (Label) типов (Type) констант (Const) переменных (Var) функций (Function) процедур (Procedure) Подраздел описания внешних модулей • Внешние модули – это наборы констант, типов данных, переменных, процедур и функций, которые можно использовать в программе • Подключение модуля к программе: Например: Uses имя_модуля; Uses CRT; Подраздел описания меток • Метка – точка перехода, используемая в операторе безусловного перехода • Описание меток: Label метка_1, метка_2 … метка_N; • В качестве меток могут использоваться целые числа без знака (от 0 до 9999): Label 1, 77, 190; Подраздел описания типов Перечислимый • Type имя_типа = (значение_1, значение_2 … значение_N); • Type Season = (winter, spring, summer, autumn); Интервальный • Type имя_типа = (нач_значение .. кон_значение); • Type Hours = (0 .. 23); Подраздел описания констант • Константа - объект программы, который не может изменять своего значения • Описание константы: Const имя = значение; Const a = 17; b = 3.14; c = ‘A’; Text = ‘Pascal’; Flag = False; {целый тип} {вещественный тип} {символ} {строка} {логический тип} Подраздел описания переменных • Переменная – объект программы, который может изменять свое значение в процессе выполнения • Описание переменных: Var имя: тип; Var a: Integer; b: Real; c, d: Char; Text: String; Flag: Boolean; {целый тип} {вещественный тип} {символ} {строка} {логический тип} Подразделы описания процедур • Описываются процедуры, используемые в программе Procedure имя (список параметров); Label Const Type Var Procedure Function Begin … End; Подразделы описания функций • Описываются функции, используемые в программе Function имя (список параметров): тип результата; Label Const Type Var Procedure Function Begin … End;