Презентация "Обучающая презентация по языку программирования Pascal"
Подписи к слайдам:
|
|
СОДЕРЖАНИЕ
ЧТО ТАКОЕ PASCALПаскаль (Pascal) — один из наиболее известных языков программирования, используется для обучения программированию в старших классах и на первых курсах вузов, является базой для ряда других языков.
На главную
ИСТОРИЯНиклаус Вирт
Блез Паскаль
Язык Паскаль был создан Никлаусом Виртом в 1968—1969 годах после его участия в работе комитета разработки стандарта языка Алгол-68.
Язык назван в честь французского математика, физика, литератора и философа Блеза Паскаля, который создал первую в мире механическую машину, складывающую два числа.
На главную
ИСТОРИЯПервая публикация Вирта о языке датирована 1970 годом; представляя язык, автор в качестве цели его создания указывал построение небольшого и эффективного языка, способствующего хорошему стилю программирования, использующему структурное программирование и структурированные данные.
Последующая работа Вирта была направлена на создание на основе Паскаля языка системного программирования, с сохранением возможности вести на его базе систематический, целостный курс обучения профессиональному программированию. Результат этой работы — язык Модула-2.
На главную
Структура программыПрограмма содержит ключевые слова, идентификаторы, комментарии. Ключевые слова используются для выделения синтаксических конструкций и подсвечиваются жирным шрифтом в редакторе. Идентификаторы являются именами объектов программы и не могут совпадать с ключевыми словами.
Программа на языке Pascal имеет следующий вид:
На главную
Структура программыПервая строка называется заголовком программы и не является обязательной.
Раздел uses начинается с ключевого слова uses, за которым следует список имен модулей и пространств имен, перечисляемых через запятую.
На главную
Структура программыРаздел описаний может включать следующие подразделы:
- раздел описания переменных
- раздел описания констант
- раздел описания типов
- раздел описания меток
- раздел описания процедур и функций
Данные подразделы следуют друг за другом в произвольном порядке.
На главную
Структура программыРаздел uses и раздел описаний могут отсутствовать
ИЛИ
На главную
Структура программыДалее следует блок begin/end, внутри которого находятся операторы, отделяемые один от другого символом "точка с запятой".
Среди операторов может присутствовать оператор описания переменной, который позволяет описывать переменные внутри блока.
На главную
Идентификаторы и ключевые словаИдентификаторы служат в качестве имен программ, модулей, процедур, функций, типов, переменных и констант.
Идентификатором считается любая последовательность латинских букв или цифр, начинающаяся с буквы. Буквой считается также символ подчеркивания "_".
С каждым идентификатором связана область действия идентификатора.
Например,
a1, _h, b123 - идентификаторы,
а 1a, ф2 - нет.
На главную
Идентификаторы и ключевые словаСледующие слова являются ключевыми, служат для оформления конструкций языка и не могут использоваться как идентификаторы:
And, array, as, auto, begin, case, class, const, constructor, destructor, div, do, downto, else, end, event, except, file, finalization, finally, for, foreach, function, goto, if, implementation, in, inherited, initialization, interface, is, label, lock, mod, nil, not, of, operator, or procedure, program, property, raise, record, repeat, sealed, set, sequence, shl, shr, sizeof, template, then, to, try, type, typeof, until, uses, using, var, where, while, with, xor.
На главную
Идентификаторы и ключевые словаДанный ряд слов является контекстно ключевыми (они являются ключевыми только в некотором контексте):
Abstract,default, external, forward, internal, on, overload, override, params, private, protected, public, read, reintroduce, unit, virtual, write.
Контекстно ключевые слова могут использоваться в качестве имен.
На главную
Идентификаторы и ключевые словаНекоторые ключевые слова совпадают с важнейшими именами. Поэтому в Pascal предусмотрена возможность использовать эти имена без конфликтов с ключевыми словами.
Первый способ состоит в использовании квалифицированного имени. В этом контексте слово Array является именем внутри пространства имен System, и конфликта с ключевым словом array нет.
Второй способ состоит в использовании специального символа & перед именем. В этом случае имя может совпадать с ключевым словом.
На главную
КомментарииКомментарии - это участки кода, игнорируемые компилятором и используемые программистом для пояснения текста программы.
В Pascal имеется несколько типов комментариев.
На главную
КомментарииВ Pascal имеется несколько типов комментариев.
Последовательность символов между фигурными скобками
{ } или символами (* и *) считается комментарием:
Комментарием также считается любая последовательность символов после символов // и до конца строки:
Комментарии разных типов могут быть вложенными:
На главную
Описание переменныхПеременные могут быть описаны в разделе описаний, а также непосредственно внутри любого блока begin/end.
Раздел описания переменных начинается с ключевого слова var, после которого следуют элементы описания вида.
Имена в списке перечисляются через запятую.
Переменные могут описываться непосредственно внутри блока. Такие описания называются внутриблочными и представляют собой оператор описания переменной.
На главную
Описание константРаздел описания именованных констант начинается со служебного слова const, после которого следуют элементы описания вида.
имя константы = значение;
или
имя константы : тип = значение;
На главную
Описание метокРаздел описания меток начинается с зарезервированного слова label, после которого следует список меток, перечисляемых через запятую. В качестве меток могут быть использованы идентификаторы и положительные целые числа:
Метки используются для перехода в операторе goto
На главную
Описание типовРаздел описания типов начинается со служебного слова type, после которого следуют строки вида
имя типа = тип.
Обычно описание используется для составных типов (статические массивы, процедурные переменные, записи, классы) чтобы дать имя сложному типу. Если для типа определена именная эквивалентность типов, это единственный способ передать переменные этого типа в подпрограмму.
На главную
Описание типовОписание типов для классов использовать обязательно:
Описания типов могут быть обобщёнными, т.е. включать параметры-типы в угловых скобках после имени типа.
Если описание типа используется просто для того чтобы заменить одно имя на другое, то такие типы называются синонимами типов:
Использование такого типа с конкретным параметром-типом называется инстанцированием типа:
На главную
Описание типовПри описании рекурсивных структур данных указатель на тип может фигурировать раньше описания самого типа в определении другого типа:
При этом важно, чтобы определения обоих типов находились в одном разделе type.
Отметим, что для ссылочных типов (классов) разрешается описание поля с типом, совпадающим с типом текущего класса:
На главную
Область действия идентификатораЛюбой используемый в программе идентификатор должен быть предварительно описан. Идентификаторы описываются в разделе описаний. Идентификаторы для переменных могут также описываться внутри блока.
Основная программа, подпрограмма, блок, модуль, класс образуют так называемое пространство имен - область в программе, в которой имя должно иметь единственное описание. Таким образом, в одном пространстве имен не может быть описано двух одинаковых имен (исключение составляют перегруженные имена подпрограмм).
На главную
Область действия идентификатораОбласть действия идентификатора (т.е. место, где он может быть использован) простирается от момента описания до конца блока, в котором он описан. Область действия глобального идентификатора, описанного в модуле, простирается на весь модуль, а также на основную программу, к которой данный модуль подключен в разделе uses.
Кроме этого, имеются переменные, определенные в блоке и связанные с некоторыми конструкциями (for, foreach). В этом случае действие переменной i простирается до конца соответствующей конструкции. Так, следующий код корректен
На главную
Область действия идентификатораПеременные, описанные внутри блока, не могут иметь те же имена, что и переменные из раздела описаний этого блока. Например, следующая программа ошибочна:
На главную
Область действия идентификатораВ производных классах, напротив, можно определять члены с теми же именами, что и в базовых классах, при этом их имена скрывают соответствующие имена в базовых классах. Для обращения к одноименному члену базового класса из метода производного класса используется ключевое слово inherited:
На главную
Обзор типовТипы в Pascal подразделяются на простые, строковые, структурированные, типы указателей, процедурные типы и классы.
К простым относятся целые и вещественные типы, логический, символьный, перечислимый и диапазонный тип.
К структурированным типам относятся массивы, записи, множества и файлы.
Все простые типы, кроме вещественного, называются порядковыми. Только значения этих типов могут быть индексами статических массивов и параметрами цикла for. Кроме того, для порядковых типов используются функции Ord, Pred и Succ, а также процедуры Inc и Dec.
На главную
Размерные и ссылочные типыВсе типы в Pascal подразделяются на две большие группы: размерные и ссылочные. К размерным относятся все простые типы, указатели, записи, статические массивы, множества и строки. К ссылочным типам относятся классы, динамические массивы, файлы и процедурный тип.
Размерные типы более эффективны при вычислениях: они занимают меньше памяти и операции, выполняемые над небольшими размерными типами, максимально эффективны.
Ссылочные типы обладают большей гибкостью: память под них выделяется динамически в процессе работы программы и освобождается автоматически, когда объект ссылочного типа перестаёт использоваться.
На главную
Размерные и ссылочные типыВыделение памяти
Память под переменную размерного типа распределяется на программном стеке в момент её описания. При этом переменная размерного типа хранит значение этого типа.
Переменная ссылочного типа представляет собой ссылку на объект некоторого класса в динамической памяти. Если она не инициализирована, то хранит специальное значение nil (нулевая ссылка). Для инициализации ссылочных переменных используется вызов конструктора соответствующего класса:
На главную
Размерные и ссылочные типыПрисваивание
При присваивании переменных размерного типа копируются значения этого типа. Если размерный тип имеет большой размер, эта операция может выполняться долго.
При присваивании переменных ссылочного типа осуществляется присваивание ссылок, в итоге после присваивания обе ссылки ссылаются на один объект в динамической памяти:
На главную
Размерные и ссылочные типыСравнение на равенство
Сравнение на равенство объектов размерного типа сравнивает их значения. В частности, две переменные типа запись равны если равны все поля этих записей.
При сравнении на равенство переменных ссылочного типа проверяется, что они ссылаются на один и тот же объект.
На главную
Размерные и ссылочные типыПередача в подпрограммы
При передаче размерных типов по значению происходит копирование значения фактического параметра в переменную-формальный параметр. Если размерный тип имеет большой размер, это может занимать продолжительное время, поэтому размерный тип в этом случае передаётся по ссылке на константу:
На главную
Размерные и ссылочные типыПередача в подпрограммы
Ссылочные типы передаются в подпрограмму, как правило, по значению. При передаче таких параметров происходит копирование ссылки, в результате формальный и фактический параметр будут ссылаться на один объект.
При этом в результате изменения формального параметра внутри подпрограммы меняется и содержимое соответствующего фактического параметра при вызове подпрограммы.
На главную
Целые типыНиже приводится таблица целых типов, содержащая также их размер и диапазон допустимых значений.
Тип |
Размер, байт |
Диапазон значений |
shortint |
1 |
-128..127 |
smallint |
2 |
-32768..32767 |
integer, longint |
4 |
-2147483648..2147483647 |
int64 |
8 |
-9223372036854775808..9223372036854775807 |
byte |
1 |
0..255 |
word |
2 |
0..65535 |
longword, cardinal |
4 |
0..4294967295 |
uint64 |
8 |
0..18446744073709551615 |
BigInteger |
переменный |
неограниченный |
Типы integer и longint, а также longword и cardinal являются синонимами.
На главную
Вещественные типыНиже приводится таблица вещественных типов, содержащая их размер, количество значащих цифр и диапазон допустимых значений:
Тип |
Размер, байт |
Количество значащих цифр |
Диапазон значений |
real |
8 |
15-16 |
-1.8∙10308 .. 1.8∙10308 |
double |
8 |
15-16 |
-1.8∙10308 .. 1.8∙10308 |
single |
4 |
7-8 |
-3.4∙1038 .. 3.4∙1038 |
single |
4 |
7-8 |
-3.4∙1038 .. 3.4∙1038 |
decimal |
16 |
28-29 |
-79228162514264337593543950335 .. 79228162514264337593543950335 |
Типы real и double являются синонимами. Самое маленькое положительное число типа real приблизительно равно 5.0∙10-324, для типа single оно составляет приблизительно 1.4∙10-45.
На главную
Логический типЗначения логического типа boolean занимают 1 байт и принимают одно из двух значений, задаваемых предопределенными константами True (истина) и False (ложь).
На главную
Символьный типСимвольный тип char занимает 2 байта и хранит Unicode-символ. Символы реализуются типом System.Char.
Операция + для символов означает конкатенацию (слияние) строк. Например: 'a'+'b' = 'ab'. Как и для строк, если к символу прибавить число, то число предварительно преобразуется к строковому представлению:
Над символами определены операции сравнения < > <= >= = <>, которые сравнивают коды символов:
'a'<'b' // True
'2'<'3' // True
На главную
Перечислимый типПеречислимый тип определяется упорядоченным набором идентификаторов.
Значения перечислимого типа занимают 4 байта. Каждое значение value представляет собой константу типа typeName, попадающую в текущее пространство имен.
К константе перечислимого типа можно обращаться непосредственно по имени, а можно использовать запись typeName.value, в которой имя константы уточняется именем перечислимого типа, к которому она принадлежит:
На главную
Перечислимый типДля значений перечислимого типа можно использовать функции Ord, Pred и Succ, а также процедуры Inc и Dec. Функция Ord возвращает порядковый номер значения в списке констант соответствующего перечислимого типа, нумерация при этом начинается с нуля.
Для перечислимого типа определена экземплярная функция ToString, возвращающая строковое представление переменной перечислимого типа. При выводе значения перечислимого типа с помощью процедуры write также выводится строковое представление значения перечислимого типа.
На главную
Диапазонный типДиапазонный тип представляет собой подмножество значений целого, символьного или перечислимого типа и описывается в виде a..b, где a - нижняя, b - верхняя граница интервального типа, a<b:
Тип, на основе которого строится диапазонный тип, называется базовым для этого диапазонного типа. Значения диапазонного типа занимают в памяти столько же, сколько и значения соответствующего базового типа.
На главную
Строковый типСтроки имеют тип string, состоят из набора последовательно расположенных символов char и используются для представления текста.
Над строками определены операции сравнения: < > <= >= = <>. Сравнение строк на неравенство осуществляется лексикографически: s1 < s2 если для первого несовпадающего символа с номером i s1[i]<s2[i] или все символы строк совпадают, но s1 короче s2.
Строки могут иметь произвольную длину. К символам в строке можно обращаться, используя индекс: s[i] обозначает i-тый символ в строке, нумерация начинается с единицы. Если индекс i выходит за пределы длины строки, то генерируется исключение.
На главную
Строковый типОперация + для строк означает конкатенацию (слияние) строк. Например: 'Петя'+'Маша' = 'ПетяМаша'.
Расширенный оператор присваивания += для строк добавляет в конец строки - левого операнда строку - правый операнд
На главную
Процедурный типТип, предназначенный для хранения ссылок на процедуры или функции, называется процедурным, а переменная такого типа - процедурной переменной. Основное назначение процедурных переменных - хранение и косвенный вызов действий (функций) в ходе выполнения программы и передача их в качестве параметров.
Описание процедурного типа совпадает с заголовком соответствующей процедуры или функции без имени.
Процедурной переменной можно присвоить процедуру или функцию с совместимым типом.
На главную
Файловые типыФайл представляет собой последовательность элементов одного типа, хранящихся на диске. В Pascal имеется два типа файлов - двоичные и текстовые. Текстовые файлы хранят символы, разделенные на строки символами #13#10 (Windows) и символом #10 (Linux). Последовательность символов для перехода на новую строку хранится в константе NewLine. Двоичные файлы в свою очередь делятся на типизированные и бестиповые.
На главную
Файловые типыДля описания текстового файла используется стандартное имя типа text, бестиповые файлы имеют тип file, а для описания типизированного файла используется конструкция file of тип элементов:
В качества типа элементов в типизированном файле не могут фигурировать указатели, ссылочные типы, а также тип записи, содержащий ссылочные поля или указатели.
На главную
Арифметические операцииК арифметическим относятся бинарные операции +, -, *, / для вещественных и целых чисел, бинарные операции div и mod для целых чисел и унарные операции + и - для вещественных и целых чисел. Тип выражения x op y, где op - знак бинарной операции +, - или *, определяется из следующей таблицы:
|
shortint |
byte |
smallint |
word |
integer |
longword |
int64 |
uint64 |
BigInteger |
single |
real |
shortint |
integer |
integer |
integer |
integer |
integer |
int64 |
int64 |
uint64 |
BigInteger |
single |
real |
byte |
integer |
integer |
integer |
integer |
integer |
longword |
int64 |
uint64 |
BigInteger |
single |
real |
smallint |
integer |
integer |
integer |
integer |
integer |
int64 |
int64 |
uint64 |
BigInteger |
single |
real |
word |
integer |
integer |
integer |
integer |
integer |
longword |
int64 |
uint64 |
BigInteger |
single |
real |
integer |
integer |
integer |
integer |
integer |
integer |
int64 |
int64 |
uint64 |
BigInteger |
single |
real |
longword |
int64 |
longword |
int64 |
longword |
int64 |
longword |
uint64 |
uint64 |
BigInteger |
single |
real |
int64 |
int64 |
int64 |
int64 |
int64 |
int64 |
uint64 |
int64 |
uint64 |
BigInteger |
single |
real |
uint64 |
uint64 |
uint64 |
uint64 |
uint64 |
uint64 |
uint64 |
uint64 |
uint64 |
BigInteger |
single |
real |
BigInteger |
BigInteger |
BigInteger |
BigInteger |
BigInteger |
BigInteger |
BigInteger |
BigInteger |
BigInteger |
BigInteger |
- |
- |
single |
single |
single |
single |
single |
single |
single |
single |
single |
- |
single |
real |
real |
real |
real |
real |
real |
real |
real |
real |
real |
- |
real |
real |
К логическим относятся бинарные операции and, or и xor, а также унарная операция not, имеющие операнды типа boolean и возвращающие значение типа boolean. Эти операции подчиняются стандартным правилам логики: a and b истинно только тогда, когда истинны a и b, a or b истинно только тогда, когда истинно либо a, либо b, a xor b истинно только тогда, когда только одно из a и b истинно, not a истинно только тогда, когда a ложно.
Выражения с and и or вычисляются по короткой схеме:
- в выражении x and y если x ложно, то все выражение ложно, и y не вычисляется;
- в выражении x or y если x истинно, то все выражение истинно, и y не вычисляется.
На главную
Побитовые операцииК побитовым относятся бинарные операции and, or, not, xor, shl, shr. Они производят побитовые манипуляции с операндами целого типа. Результирующий тип для and, or, xor будет наименьшим целым, включающим все возможные значения обоих типов операндов. Для shl, shr результирующий тип совпадает с типом левого операнда, для not - с типом операнда.
Побитовые операции осуществляются следующим образом: с каждым битом (0 принимается за False, 1 - за True) производится соответствующая логическая операция.
На главную
Операции сравненияОперации сравнения <, >, <=, >=, =, <> возвращают значение типа boolean и применяются к операндам простого типа и к строкам.
Операции = и <> также применяются ко всем типам. Для размерных типов по умолчанию сравниваются значения, для ссылочных типов - ссылки. Можно переопределить это поведение, перегрузив операции = и <>. Аналогично можно перегрузить все операции сравнения для типов записей и классов, вводимых пользователем.
На главную
Операции с указателямиКо всем указателям применимы операции сравнения = и <>.
К типизированным указателям применима операция разыменования ^: если p является указателем на тип T, то p^ - элемент типа T, на который указывает p. Указатели pointer разыменовывать нельзя.
На главную
Оператор присваиванияОператор присваивания имеет вид:
переменная := выражение
В качестве переменной может быть простая переменная, разыменованный указатель, переменная с индексами или компонент переменной типа запись. Символ := называется значком присваивания. Выражение должно быть совместимо по присваиванию с переменной.
Оператор присваивания заменяет текущее значение переменной значением выражения.
На главную
Составной операторСоставной оператор предназначен для объединения нескольких операторов в один. Он имеет вид:
begin
операторы
end
Операторы отделяются один от другого символом ";". Ключевые слова begin и end, окаймляющие операторы, называются операторными скобками.
На главную
Составной операторПеред end также может ставиться ";". В этом случае считается, что последним оператором перед end является пустой оператор, не выполняющий никаких действий.
Помимо операторов, в блоке могут быть внутриблочные описания переменных:
На главную
Пустой операторПустой оператор не включает никаких символов, не выполняет никаких действий и используется в двух случаях:
Для пометки места, следующего за последним оператором в блоке:
Поскольку в языке Паскаль символ ";" разделяет операторы, то в приведенном выше коде считается, что после последней ";" находится пустой оператор. Таким образом, ";" перед end в блоке можно либо ставить, либо нет.
Для использования символа ";" после последнего оператора в блоке:
На главную
Условный операторУсловный оператор имеет полную и краткую формы
Полная форма условного оператора выглядит следующим образом:
В качестве условия указывается некоторое логическое выражение. Если условие оказывается истинным, то выполняется оператор1, в противном случае выполняется оператор2.
Если условие оказывается истинным, то выполняется оператор, в противном случае происходит переход к следующему оператору программы.
Краткая форма условного оператора имеет вид:
if условие then оператор1
else оператор2
if условие then оператор
На главную
МассивыМассив представляет собой набор элементов одного типа, каждый из которых имеет свой номер, называемый индексом (индексов может быть несколько, тогда массив называется многомерным).
Массивы в Pascal делятся на статические и динамические.
На главную
Статические массивыТип индекса должен быть порядковым. Обычно тип индекса является диапазонным и представляется в виде a..b, где a и b - константные выражения целого, символьного или перечислимого типа.
Тип статического массива конструируется следующим образом:
Статические массивы в отличие от динамических задают свой размер непосредственно в типе. Память под такие массивы выделяется сразу при описании.
На главную
Динамические массивыТип динамического массива конструируется следующим образом:
Переменная типа динамический массив представляет собой ссылку. Поэтому динамический массив нуждается в инициализации (выделении памяти под элементы).
На главную
Динамические массивыЭлементы массива при этом заполняются значениями по умолчанию.
Процедура SetLength обладает тем преимуществом, что при ее повторном вызове старое содержимое массива сохраняется.
Второй способ выделения памяти под динамический массив использует стандартную процедуру SetLength:
Первый способ использует операцию new в стиле вызова конструктора класса:
Для выделения памяти под динамический массив используется два способа.
На главную
Информатика - еще материалы к урокам:
- Презентация "Использование графов при решении задач"
- Конспект урока "Общие сведения о языке Паскаль" 8 класс
- Презентация "Общие сведения о языке Паскаль" 8 класс
- Информационная безопасность ребенка в сети интернет
- Презентация "Виды программного обеспечения. Прикладное ПО"
- Презентация "Назначение и функции чипсета в микропроцессорной системе"