«Осенний фестиваль знаний 2024»

Обучающая презентация по языку программирования Pascal

Презентация носит ознакомительный характер с языком программирования Pascal и создана на основе (в качестве основного источника) книги Валерия Рубанцева "Занимательные уроки С ПАСКАЛЕМ, или PascalABC.NET для начинающих".

Презентация имеет гипертекстовое содержание для быстрой навигации по документу.

Разработка содержит следующую тематику: история языка программирования, структура программы, типы данных, операторы, массивы и т.д.

Олимпиады: Информатика 1 - 11 классы

Содержимое разработки

Обучающая презентация  по языку программирования  Pascal

Обучающая презентация по языку программирования Pascal

СОДЕРЖАНИЕ

СОДЕРЖАНИЕ

  • Что такое Pascal
  • История
  • Структура программы
  • Идентификаторы и ключевые слова
  • Комментарии
  • Описание переменных
  • Описание констант
  • Описание меток
  • Описание типов
  • Область действия идентификатора
  • Обзор типов
  • Размерные и ссылочные типы
  • Целые типы
  • Вещественные типы
  • Логический тип
  • Символьный тип
  • Перечислимый тип
  • Диапазонный тип
  • Строковый тип
  • Процедурный тип
  • Файловые типы
  • Арифметические операции
  • Логические операции
  • Побитовые операции
  • Операции сравнения
  • Операции с указателями
  • Оператор присваивания
  • Составной оператор
  • Пустой оператор
  • Условный оператор
  • Массивы
  • Статические массивы
  • Динамические массивы
ЧТО ТАКОЕ PASCAL На главную Паскаль  ( Pascal )  — один из наиболее известных языков программирования, используется для обучения программированию в старших классах и на первых курсах вузов, является базой для ряда других языков.

ЧТО ТАКОЕ PASCAL

На главную

Паскаль  ( Pascal )  — один из наиболее известных языков программирования, используется для обучения программированию в старших классах и на первых курсах вузов, является базой для ряда других языков.

ИСТОРИЯ На главную Язык Паскаль был создан Никлаусом Виртом в 1968—1969 годах после его участия в работе комитета разработки стандарта языка Алгол-68. Блез Паскаль Никлаус Вирт Язык назван в честь французского математика, физика, литератора и философа Блеза Паскаля, который создал первую в мире механическую машину, складывающую два числа.

ИСТОРИЯ

На главную

Язык Паскаль был создан Никлаусом Виртом в 1968—1969 годах после его участия в работе комитета разработки стандарта языка Алгол-68.

Блез Паскаль

Никлаус Вирт

Язык назван в честь французского математика, физика, литератора и философа Блеза Паскаля, который создал первую в мире механическую машину, складывающую два числа.

ИСТОРИЯ На главную Первая публикация Вирта о языке датирована 1970 годом; представляя язык, автор в качестве цели его создания указывал построение небольшого и эффективного языка, способствующего хорошему стилю программирования, использующему структурное программирование и структурированные данные. Последующая работа Вирта была направлена на создание на основе Паскаля языка системного программирования, с сохранением возможности вести на его базе систематический, целостный курс обучения профессиональному программированию. Результат этой работы — язык Модула-2.

ИСТОРИЯ

На главную

Первая публикация Вирта о языке датирована 1970 годом; представляя язык, автор в качестве цели его создания указывал построение небольшого и эффективного языка, способствующего хорошему стилю программирования, использующему структурное программирование и структурированные данные.

Последующая работа Вирта была направлена на создание на основе Паскаля языка системного программирования, с сохранением возможности вести на его базе систематический, целостный курс обучения профессиональному программированию. Результат этой работы — язык Модула-2.

Структура программы На главную Программа содержит ключевые слова, идентификаторы, комментарии. Ключевые слова используются для выделения синтаксических конструкций и подсвечиваются жирным шрифтом в редакторе. Идентификаторы являются именами объектов программы и не могут совпадать с ключевыми словами. Программа на языке Pascal имеет следующий вид:

Структура программы

На главную

Программа содержит ключевые слова, идентификаторы, комментарии. Ключевые слова используются для выделения синтаксических конструкций и подсвечиваются жирным шрифтом в редакторе. Идентификаторы являются именами объектов программы и не могут совпадать с ключевыми словами.

Программа на языке Pascal имеет следующий вид:

Структура программы На главную Первая строка называется заголовком программы и не является обязательной. Раздел uses начинается с ключевого слова uses, за которым следует список имен модулей и пространств имен, перечисляемых через запятую .

Структура программы

На главную

Первая строка называется заголовком программы и не является обязательной.

Раздел uses начинается с ключевого слова uses, за которым следует список имен модулей и пространств имен, перечисляемых через запятую .

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

Структура программы

На главную

Раздел описаний может включать следующие подразделы:

  • раздел описания переменных
  • раздел описания констант
  • раздел описания типов
  • раздел описания меток
  • раздел описания процедур и функций

Данные подразделы следуют друг за другом в произвольном порядке.

Структура программы На главную Раздел uses и раздел описаний могут отсутствовать ИЛИ

Структура программы

На главную

Раздел uses и раздел описаний могут отсутствовать

ИЛИ

Структура программы На главную Далее следует блок begin/end, внутри которого находятся операторы, отделяемые один от другого символом

Структура программы

На главную

Далее следует блок begin/end, внутри которого находятся операторы, отделяемые один от другого символом "точка с запятой".

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

Идентификаторы и ключевые слова Идентификаторы служат в качестве имен программ, модулей, процедур, функций, типов, переменных и констант. Например, a1, _h, b123 - идентификаторы , а 1a, ф2 - нет . Идентификатором считается любая последовательность латинских букв или цифр, начинающаяся с буквы. Буквой считается также символ подчеркивания

Идентификаторы и ключевые слова

Идентификаторы служат в качестве имен программ, модулей, процедур, функций, типов, переменных и констант.

Например,

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. На главную

Идентификаторы и ключевые слова

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

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. Контекстно ключевые слова могут использоваться в качестве имен. На главную

Идентификаторы и ключевые слова

Данный ряд слов является контекстно ключевыми (они являются ключевыми только в некотором контексте):

Abstract,default, external, forward, internal, on, overload, override, params, private, protected, public, read, reintroduce, unit, virtual, write.

Контекстно ключевые слова могут использоваться в качестве имен.

На главную

Идентификаторы и ключевые слова Первый способ состоит в использовании квалифицированного имени. В этом контексте слово Array является именем внутри пространства имен System, и конфликта с ключевым словом array нет. Некоторые ключевые слова совпадают с важнейшими именами. Поэтому в Pascal предусмотрена возможность использовать эти имена без конфликтов с ключевыми словами. Второй способ состоит в использовании специального символа & перед именем. В этом случае имя может совпадать с ключевым словом. На главную

Идентификаторы и ключевые слова

Первый способ состоит в использовании квалифицированного имени. В этом контексте слово Array является именем внутри пространства имен System, и конфликта с ключевым словом array нет.

Некоторые ключевые слова совпадают с важнейшими именами. Поэтому в Pascal предусмотрена возможность использовать эти имена без конфликтов с ключевыми словами.

Второй способ состоит в использовании специального символа & перед именем. В этом случае имя может совпадать с ключевым словом.

На главную

Комментарии На главную Комментарии - это участки кода, игнорируемые компилятором и используемые программистом для пояснения текста программы. В Pascal имеется несколько типов комментариев.

Комментарии

На главную

Комментарии - это участки кода, игнорируемые компилятором и используемые программистом для пояснения текста программы.

В Pascal имеется несколько типов комментариев.

Комментарии На главную В Pascal имеется несколько типов комментариев. Последовательность символов между фигурными скобками Комментарием также считается любая последовательность символов после символов // и до конца строки: Комментарии разных типов могут быть вложенными:  { } или символами (* и *) считается комментарием:

Комментарии

На главную

В Pascal имеется несколько типов комментариев.

Последовательность символов между фигурными скобками

Комментарием также считается любая последовательность символов после символов // и до конца строки:

Комментарии разных типов могут быть вложенными:

{ } или символами (* и *) считается комментарием:

Описание переменных На главную Переменные могут быть описаны в разделе описаний, а также непосредственно внутри любого блока begin/end. Раздел описания переменных начинается с ключевого слова var, после которого следуют элементы описания вида. Переменные могут описываться непосредственно внутри блока. Такие описания называются внутриблочными и представляют собой оператор описания переменной. Имена в списке перечисляются через запятую.

Описание переменных

На главную

Переменные могут быть описаны в разделе описаний, а также непосредственно внутри любого блока begin/end.

Раздел описания переменных начинается с ключевого слова var, после которого следуют элементы описания вида.

Переменные могут описываться непосредственно внутри блока. Такие описания называются внутриблочными и представляют собой оператор описания переменной.

Имена в списке перечисляются через запятую.

Описание констант На главную Раздел описания именованных констант начинается со служебного слова const, после которого следуют элементы описания вида. имя константы = значение; или имя константы : тип = значение;

Описание констант

На главную

Раздел описания именованных констант начинается со служебного слова const, после которого следуют элементы описания вида.

имя константы = значение;

или

имя константы : тип = значение;

Описание меток На главную Раздел описания меток начинается с зарезервированного слова label, после которого следует список меток, перечисляемых через запятую. В качестве меток могут быть использованы идентификаторы и положительные целые числа: Метки используются для перехода в операторе goto

Описание меток

На главную

Раздел описания меток начинается с зарезервированного слова label, после которого следует список меток, перечисляемых через запятую. В качестве меток могут быть использованы идентификаторы и положительные целые числа:

Метки используются для перехода в операторе goto

Описание типов На главную Обычно описание используется для составных типов (статические массивы, процедурные переменные, записи, классы) чтобы дать имя сложному типу. Если для типа определена именная эквивалентность типов, это единственный способ передать переменные этого типа в подпрограмму. Раздел описания типов начинается со служебного слова type, после которого следуют строки вида имя типа = тип.

Описание типов

На главную

Обычно описание используется для составных типов (статические массивы, процедурные переменные, записи, классы) чтобы дать имя сложному типу. Если для типа определена именная эквивалентность типов, это единственный способ передать переменные этого типа в подпрограмму.

Раздел описания типов начинается со служебного слова type, после которого следуют строки вида

имя типа = тип.

Описание типов На главную Описания типов могут быть обобщёнными, т.е. включать параметры-типы в угловых скобках после имени типа. Описание типов для классов использовать обязательно: Если описание типа используется просто для того чтобы заменить одно имя на другое, то такие типы называются синонимами типов: Использование такого типа с конкретным параметром-типом называется инстанцированием типа:

Описание типов

На главную

Описания типов могут быть обобщёнными, т.е. включать параметры-типы в угловых скобках после имени типа.

Описание типов для классов использовать обязательно:

Если описание типа используется просто для того чтобы заменить одно имя на другое, то такие типы называются синонимами типов:

Использование такого типа с конкретным параметром-типом называется инстанцированием типа:

Описание типов На главную При описании рекурсивных структур данных указатель на тип может фигурировать раньше описания самого типа в определении другого типа: Отметим, что для ссылочных типов (классов) разрешается описание поля с типом, совпадающим с типом текущего класса: При этом важно, чтобы определения обоих типов находились в одном разделе type .

Описание типов

На главную

При описании рекурсивных структур данных указатель на тип может фигурировать раньше описания самого типа в определении другого типа:

Отметим, что для ссылочных типов (классов) разрешается описание поля с типом, совпадающим с типом текущего класса:

При этом важно, чтобы определения обоих типов находились в одном разделе type .

Область действия идентификатора На главную Любой используемый в программе идентификатор должен быть предварительно описан. Идентификаторы описываются в разделе описаний. Идентификаторы для переменных могут также описываться внутри блока. Основная программа, подпрограмма, блок, модуль, класс образуют так называемое пространство имен - область в программе, в которой имя должно иметь единственное описание. Таким образом, в одном пространстве имен не может быть описано двух одинаковых имен (исключение составляют перегруженные имена подпрограмм).

Область действия идентификатора

На главную

Любой используемый в программе идентификатор должен быть предварительно описан. Идентификаторы описываются в разделе описаний. Идентификаторы для переменных могут также описываться внутри блока.

Основная программа, подпрограмма, блок, модуль, класс образуют так называемое пространство имен - область в программе, в которой имя должно иметь единственное описание. Таким образом, в одном пространстве имен не может быть описано двух одинаковых имен (исключение составляют перегруженные имена подпрограмм).

Область действия идентификатора На главную Область действия идентификатора (т.е. место, где он может быть использован) простирается от момента описания до конца блока, в котором он описан. Область действия глобального идентификатора, описанного в модуле, простирается на весь модуль, а также на основную программу, к которой данный модуль подключен в разделе uses. Кроме этого, имеются переменные, определенные в блоке и связанные с некоторыми конструкциями (for, foreach). В этом случае действие переменной i простирается до конца соответствующей конструкции. Так, следующий код корректен

Область действия идентификатора

На главную

Область действия идентификатора (т.е. место, где он может быть использован) простирается от момента описания до конца блока, в котором он описан. Область действия глобального идентификатора, описанного в модуле, простирается на весь модуль, а также на основную программу, к которой данный модуль подключен в разделе uses.

Кроме этого, имеются переменные, определенные в блоке и связанные с некоторыми конструкциями (for, foreach). В этом случае действие переменной i простирается до конца соответствующей конструкции. Так, следующий код корректен

Область действия идентификатора На главную Переменные, описанные внутри блока, не могут иметь те же имена, что и переменные из раздела описаний этого блока. Например, следующая программа ошибочна:

Область действия идентификатора

На главную

Переменные, описанные внутри блока, не могут иметь те же имена, что и переменные из раздела описаний этого блока. Например, следующая программа ошибочна:

Область действия идентификатора На главную В производных классах, напротив, можно определять члены с теми же именами, что и в базовых классах, при этом их имена скрывают соответствующие имена в базовых классах. Для обращения к одноименному члену базового класса из метода производного класса используется ключевое слово inherited:

Область действия идентификатора

На главную

В производных классах, напротив, можно определять члены с теми же именами, что и в базовых классах, при этом их имена скрывают соответствующие имена в базовых классах. Для обращения к одноименному члену базового класса из метода производного класса используется ключевое слово inherited:

Обзор типов На главную Типы в Pascal подразделяются на простые, строковые, структурированные, типы указателей, процедурные типы и классы. К простым относятся целые и вещественные типы, логический, символьный, перечислимый и диапазонный тип. К структурированным типам относятся массивы, записи, множества и файлы. Все простые типы, кроме вещественного, называются порядковыми. Только значения этих типов могут быть индексами статических массивов и параметрами цикла for. Кроме того, для порядковых типов используются функции Ord, Pred и Succ, а также процедуры Inc и Dec.

Обзор типов

На главную

Типы в Pascal подразделяются на простые, строковые, структурированные, типы указателей, процедурные типы и классы.

К простым относятся целые и вещественные типы, логический, символьный, перечислимый и диапазонный тип.

К структурированным типам относятся массивы, записи, множества и файлы.

Все простые типы, кроме вещественного, называются порядковыми. Только значения этих типов могут быть индексами статических массивов и параметрами цикла for. Кроме того, для порядковых типов используются функции Ord, Pred и Succ, а также процедуры Inc и Dec.

Размерные и ссылочные типы Все типы в Pascal подразделяются на две большие группы: размерные и ссылочные. К размерным относятся все простые типы, указатели, записи, статические массивы, множества и строки. К ссылочным типам относятся классы, динамические массивы, файлы и процедурный тип. Размерные типы более эффективны при вычислениях: они занимают меньше памяти и операции, выполняемые над небольшими размерными типами, максимально эффективны. Ссылочные типы обладают большей гибкостью: память под них выделяется динамически в процессе работы программы и освобождается автоматически, когда объект ссылочного типа перестаёт использоваться. На главную

Размерные и ссылочные типы

Все типы в Pascal подразделяются на две большие группы: размерные и ссылочные. К размерным относятся все простые типы, указатели, записи, статические массивы, множества и строки. К ссылочным типам относятся классы, динамические массивы, файлы и процедурный тип.

Размерные типы более эффективны при вычислениях: они занимают меньше памяти и операции, выполняемые над небольшими размерными типами, максимально эффективны.

Ссылочные типы обладают большей гибкостью: память под них выделяется динамически в процессе работы программы и освобождается автоматически, когда объект ссылочного типа перестаёт использоваться.

На главную

Размерные и ссылочные типы Выделение памяти На главную Память под переменную размерного типа распределяется на программном стеке в момент её описания. При этом переменная размерного типа хранит значение этого типа. Переменная ссылочного типа представляет собой ссылку на объект некоторого класса в динамической памяти. Если она не инициализирована, то хранит специальное значение nil (нулевая ссылка). Для инициализации ссылочных переменных используется вызов конструктора соответствующего класса:

Размерные и ссылочные типы

Выделение памяти

На главную

Память под переменную размерного типа распределяется на программном стеке в момент её описания. При этом переменная размерного типа хранит значение этого типа.

Переменная ссылочного типа представляет собой ссылку на объект некоторого класса в динамической памяти. Если она не инициализирована, то хранит специальное значение nil (нулевая ссылка). Для инициализации ссылочных переменных используется вызов конструктора соответствующего класса:

Размерные и ссылочные типы Присваивание При присваивании переменных размерного типа копируются значения этого типа. Если размерный тип имеет большой размер, эта операция может выполняться долго. При присваивании переменных ссылочного типа осуществляется присваивание ссылок, в итоге после присваивания обе ссылки ссылаются на один объект в динамической памяти: На главную

Размерные и ссылочные типы

Присваивание

При присваивании переменных размерного типа копируются значения этого типа. Если размерный тип имеет большой размер, эта операция может выполняться долго.

При присваивании переменных ссылочного типа осуществляется присваивание ссылок, в итоге после присваивания обе ссылки ссылаются на один объект в динамической памяти:

На главную

Размерные и ссылочные типы Сравнение на равенство Сравнение на равенство объектов размерного типа сравнивает их значения. В частности, две переменные типа запись равны если равны все поля этих записей. При сравнении на равенство переменных ссылочного типа проверяется, что они ссылаются на один и тот же объект. На главную

Размерные и ссылочные типы

Сравнение на равенство

Сравнение на равенство объектов размерного типа сравнивает их значения. В частности, две переменные типа запись равны если равны все поля этих записей.

При сравнении на равенство переменных ссылочного типа проверяется, что они ссылаются на один и тот же объект.

На главную

Размерные и ссылочные типы Передача в подпрограммы При передаче размерных типов по значению происходит копирование значения фактического параметра в переменную-формальный параметр. Если размерный тип имеет большой размер, это может занимать продолжительное время, поэтому размерный тип в этом случае передаётся по ссылке на константу: На главную

Размерные и ссылочные типы

Передача в подпрограммы

При передаче размерных типов по значению происходит копирование значения фактического параметра в переменную-формальный параметр. Если размерный тип имеет большой размер, это может занимать продолжительное время, поэтому размерный тип в этом случае передаётся по ссылке на константу:

На главную

Размерные и ссылочные типы Передача в подпрограммы Ссылочные типы передаются в подпрограмму, как правило, по значению. При передаче таких параметров происходит копирование ссылки, в результате формальный и фактический параметр будут ссылаться на один объект. При этом в результате изменения формального параметра внутри подпрограммы меняется и содержимое соответствующего фактического параметра при вызове подпрограммы. На главную

Размерные и ссылочные типы

Передача в подпрограммы

Ссылочные типы передаются в подпрограмму, как правило, по значению. При передаче таких параметров происходит копирование ссылки, в результате формальный и фактический параметр будут ссылаться на один объект.

При этом в результате изменения формального параметра внутри подпрограммы меняется и содержимое соответствующего фактического параметра при вызове подпрограммы.

На главную

Целые типы На главную Ниже приводится таблица целых типов, содержащая также их размер и диапазон допустимых значений. Тип Размер, байт shortint 1 smallint Диапазон значений 2 -128..127 integer, longint -32768..32767 4 int64 8 byte -2147483648..2147483647 1 -9223372036854775808..9223372036854775807 word 2 0..255 longword, cardinal 4 0..65535 uint64 8 0..4294967295 BigInteger 0..18446744073709551615 переменный неограниченный Типы integer и longint, а также longword и cardinal являются синонимами .

Целые типы

На главную

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

Тип

Размер, байт

shortint

1

smallint

Диапазон значений

2

-128..127

integer, longint

-32768..32767

4

int64

8

byte

-2147483648..2147483647

1

-9223372036854775808..9223372036854775807

word

2

0..255

longword, cardinal

4

0..65535

uint64

8

0..4294967295

BigInteger

0..18446744073709551615

переменный

неограниченный

Типы integer и longint, а также longword и cardinal являются синонимами .

Вещественные типы На главную Ниже приводится таблица вещественных типов, содержащая их размер, количество значащих цифр и диапазон допустимых значений: Тип Размер, байт real 8 double Количество  значащих цифр single 8 Диапазон значений 15-16 -1.8∙10 308 .. 1.8∙10 308 4 15-16 single decimal 7-8 4 -1.8∙10 308 .. 1.8∙10 308 -3.4∙10 38 .. 3.4∙10 38 16 7-8 -3.4∙10 38 .. 3.4∙10 38 28-29 -79228162514264337593543950335  .. 79228162514264337593543950335 Типы real и double являются синонимами. Самое маленькое положительное число типа real приблизительно равно 5.0∙10-324, для типа single оно составляет приблизительно 1.4∙10-45.

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

На главную

Ниже приводится таблица вещественных типов, содержащая их размер, количество значащих цифр и диапазон допустимых значений:

Тип

Размер, байт

real

8

double

Количество значащих цифр

single

8

Диапазон значений

15-16

-1.8∙10 308 .. 1.8∙10 308

4

15-16

single

decimal

7-8

4

-1.8∙10 308 .. 1.8∙10 308

-3.4∙10 38 .. 3.4∙10 38

16

7-8

-3.4∙10 38 .. 3.4∙10 38

28-29

-79228162514264337593543950335 .. 79228162514264337593543950335

Типы real и double являются синонимами. Самое маленькое положительное число типа real приблизительно равно 5.0∙10-324, для типа single оно составляет приблизительно 1.4∙10-45.

Логический тип На главную Значения логического типа boolean занимают 1 байт и принимают одно из двух значений, задаваемых предопределенными константами True (истина) и False (ложь).

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

На главную

Значения логического типа boolean занимают 1 байт и принимают одно из двух значений, задаваемых предопределенными константами True (истина) и False (ложь).

Символьный тип На главную Символьный тип char занимает 2 байта и хранит Unicode-символ. Символы реализуются типом System.Char. Операция + для символов означает конкатенацию (слияние) строк. Например: 'a'+'b' = 'ab'. Как и для строк, если к символу прибавить число, то число предварительно преобразуется к строковому представлению: Над символами определены операции сравнения  = = , которые сравнивают коды символов: 'a''2'<'3' // True

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

На главную

Символьный тип char занимает 2 байта и хранит Unicode-символ. Символы реализуются типом System.Char.

Операция + для символов означает конкатенацию (слияние) строк. Например: 'a'+'b' = 'ab'. Как и для строк, если к символу прибавить число, то число предварительно преобразуется к строковому представлению:

Над символами определены операции сравнения = = , которые сравнивают коды символов:

'a'

'2'

Перечислимый тип На главную Перечислимый тип определяется упорядоченным набором идентификаторов. Значения перечислимого типа занимают 4 байта. Каждое значение value представляет собой константу типа typeName, попадающую в текущее пространство имен. К константе перечислимого типа можно обращаться непосредственно по имени, а можно использовать запись typeName.value, в которой имя константы уточняется именем перечислимого типа, к которому она принадлежит:

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

На главную

Перечислимый тип определяется упорядоченным набором идентификаторов.

Значения перечислимого типа занимают 4 байта. Каждое значение value представляет собой константу типа typeName, попадающую в текущее пространство имен.

К константе перечислимого типа можно обращаться непосредственно по имени, а можно использовать запись typeName.value, в которой имя константы уточняется именем перечислимого типа, к которому она принадлежит:

Перечислимый тип На главную Для значений перечислимого типа можно использовать функции Ord, Pred и Succ, а также процедуры Inc и Dec. Функция Ord возвращает порядковый номер значения в списке констант соответствующего перечислимого типа, нумерация при этом начинается с нуля. Для перечислимого типа определена экземплярная функция ToString, возвращающая строковое представление переменной перечислимого типа. При выводе значения перечислимого типа с помощью процедуры write также выводится строковое представление значения перечислимого типа.

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

На главную

Для значений перечислимого типа можно использовать функции Ord, Pred и Succ, а также процедуры Inc и Dec. Функция Ord возвращает порядковый номер значения в списке констант соответствующего перечислимого типа, нумерация при этом начинается с нуля.

Для перечислимого типа определена экземплярная функция ToString, возвращающая строковое представление переменной перечислимого типа. При выводе значения перечислимого типа с помощью процедуры write также выводится строковое представление значения перечислимого типа.

Диапазонный тип На главную Диапазонный тип представляет собой подмножество значений целого, символьного или перечислимого типа и описывается в виде a..b, где a - нижняя, b - верхняя граница интервального типа, aТип, на основе которого строится диапазонный тип, называется базовым для этого диапазонного типа. Значения диапазонного типа занимают в памяти столько же, сколько и значения соответствующего базового типа.

Диапазонный тип

На главную

Диапазонный тип представляет собой подмножество значений целого, символьного или перечислимого типа и описывается в виде a..b, где a - нижняя, b - верхняя граница интервального типа, a

Тип, на основе которого строится диапазонный тип, называется базовым для этого диапазонного типа. Значения диапазонного типа занимают в памяти столько же, сколько и значения соответствующего базового типа.

Строковый тип На главную Строки имеют тип string, состоят из набора последовательно расположенных символов char и используются для представления текста. Строки могут иметь произвольную длину. К символам в строке можно обращаться, используя индекс: s[i] обозначает i-тый символ в строке, нумерация начинается с единицы. Если индекс i выходит за пределы длины строки, то генерируется исключение. Над строками определены операции сравнения:  = = . Сравнение строк на неравенство осуществляется лексикографически: s1 < s2 если для первого несовпадающего символа с номером i s1[i]<s2[i] или все символы строк совпадают, но s1 короче s2.

Строковый тип

На главную

Строки имеют тип string, состоят из набора последовательно расположенных символов char и используются для представления текста.

Строки могут иметь произвольную длину. К символам в строке можно обращаться, используя индекс: s[i] обозначает i-тый символ в строке, нумерация начинается с единицы. Если индекс i выходит за пределы длины строки, то генерируется исключение.

Над строками определены операции сравнения: = = . Сравнение строк на неравенство осуществляется лексикографически: s1

Строковый тип На главную Операция + для строк означает конкатенацию (слияние) строк. Например: 'Петя'+'Маша' = 'ПетяМаша'. Расширенный оператор присваивания += для строк добавляет в конец строки - левого операнда строку - правый операнд

Строковый тип

На главную

Операция + для строк означает конкатенацию (слияние) строк. Например: 'Петя'+'Маша' = 'ПетяМаша'.

Расширенный оператор присваивания += для строк добавляет в конец строки - левого операнда строку - правый операнд

Процедурный тип На главную Тип, предназначенный для хранения ссылок на процедуры или функции, называется процедурным, а переменная такого типа - процедурной переменной. Основное назначение процедурных переменных - хранение и косвенный вызов действий (функций) в ходе выполнения программы и передача их в качестве параметров. Описание процедурного типа совпадает с заголовком соответствующей процедуры или функции без имени. Процедурной переменной можно присвоить процедуру или функцию с совместимым типом.

Процедурный тип

На главную

Тип, предназначенный для хранения ссылок на процедуры или функции, называется процедурным, а переменная такого типа - процедурной переменной. Основное назначение процедурных переменных - хранение и косвенный вызов действий (функций) в ходе выполнения программы и передача их в качестве параметров.

Описание процедурного типа совпадает с заголовком соответствующей процедуры или функции без имени.

Процедурной переменной можно присвоить процедуру или функцию с совместимым типом.

Файловые типы На главную Файл представляет собой последовательность элементов одного типа, хранящихся на диске. В Pascal имеется два типа файлов - двоичные и текстовые. Текстовые файлы хранят символы, разделенные на строки символами #13#10 (Windows) и символом #10 (Linux). Последовательность символов для перехода на новую строку хранится в константе NewLine. Двоичные файлы в свою очередь делятся на типизированные и бестиповые.

Файловые типы

На главную

Файл представляет собой последовательность элементов одного типа, хранящихся на диске. В Pascal имеется два типа файлов - двоичные и текстовые. Текстовые файлы хранят символы, разделенные на строки символами #13#10 (Windows) и символом #10 (Linux). Последовательность символов для перехода на новую строку хранится в константе NewLine. Двоичные файлы в свою очередь делятся на типизированные и бестиповые.

Файловые типы На главную Для описания текстового файла используется стандартное имя типа text, бестиповые файлы имеют тип file, а для описания типизированного файла используется конструкция file of тип элементов: В качества типа элементов в типизированном файле не могут фигурировать указатели, ссылочные типы, а также тип записи, содержащий ссылочные поля или указатели.

Файловые типы

На главную

Для описания текстового файла используется стандартное имя типа text, бестиповые файлы имеют тип file, а для описания типизированного файла используется конструкция file of тип элементов:

В качества типа элементов в типизированном файле не могут фигурировать указатели, ссылочные типы, а также тип записи, содержащий ссылочные поля или указатели.

Арифметические операции   shortint shortint byte byte integer integer smallint smallint integer word word integer integer integer integer integer integer integer integer integer integer integer integer integer longword longword integer int64 int64 integer int64 integer int64 integer integer uint64 integer integer int64 int64 longword uint64 longword integer BigInteger integer int64 uint64 integer int64 BigInteger uint64 int64 int64 int64 single BigInteger uint64 uint64 longword int64 integer BigInteger longword single int64 int64 int64 BigInteger real uint64 int64 uint64 single BigInteger real single uint64 int64 real BigInteger longword single int64 BigInteger uint64 real single real uint64 single BigInteger BigInteger uint64 uint64 uint64 single real real BigInteger BigInteger single uint64 int64 uint64 single real uint64 uint64 BigInteger BigInteger real single real single real uint64 BigInteger single BigInteger single real real single BigInteger BigInteger single real BigInteger single real single real - real real - - single - real real real К арифметическим относятся бинарные операции +, -, *, / для вещественных и целых чисел, бинарные операции div и mod для целых чисел и унарные операции + и - для вещественных и целых чисел. Тип выражения x op y, где op - знак бинарной операции +, - или *, определяется из следующей таблицы:

Арифметические операции

 

shortint

shortint

byte

byte

integer

integer

smallint

smallint

integer

word

word

integer

integer

integer

integer

integer

integer

integer

integer

integer

integer

integer

integer

integer

longword

longword

integer

int64

int64

integer

int64

integer

int64

integer

integer

uint64

integer

integer

int64

int64

longword

uint64

longword

integer

BigInteger

integer

int64

uint64

integer

int64

BigInteger

uint64

int64

int64

int64

single

BigInteger

uint64

uint64

longword

int64

integer

BigInteger

longword

single

int64

int64

int64

BigInteger

real

uint64

int64

uint64

single

BigInteger

real

single

uint64

int64

real

BigInteger

longword

single

int64

BigInteger

uint64

real

single

real

uint64

single

BigInteger

BigInteger

uint64

uint64

uint64

single

real

real

BigInteger

BigInteger

single

uint64

int64

uint64

single

real

uint64

uint64

BigInteger

BigInteger

real

single

real

single

real

uint64

BigInteger

single

BigInteger

single

real

real

single

BigInteger

BigInteger

single

real

BigInteger

single

real

single

real

-

real

real

-

-

single

-

real

real

real

К арифметическим относятся бинарные операции +, -, *, / для вещественных и целых чисел, бинарные операции div и mod для целых чисел и унарные операции + и - для вещественных и целых чисел. Тип выражения x op y, где op - знак бинарной операции +, - или *, определяется из следующей таблицы:

Логические операции На главную К логическим относятся бинарные операции 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 вычисляются по короткой схеме:

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

На главную

К логическим относятся бинарные операции 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) производится соответствующая логическая операция.

Побитовые операции

На главную

К побитовым относятся бинарные операции and, or, not, xor, shl, shr. Они производят побитовые манипуляции с операндами целого типа. Результирующий тип для and, or, xor будет наименьшим целым, включающим все возможные значения обоих типов операндов. Для shl, shr результирующий тип совпадает с типом левого операнда, для not - с типом операнда.

Побитовые операции осуществляются следующим образом: с каждым битом (0 принимается за False, 1 - за True) производится соответствующая логическая операция.

Операции сравнения На главную Операции сравнения , =, =,  возвращают значение типа boolean и применяются к операндам простого типа и к строкам. Операции = и  также применяются ко всем типам. Для размерных типов по умолчанию сравниваются значения, для ссылочных типов - ссылки. Можно переопределить это поведение, перегрузив операции = и . Аналогично можно перегрузить все операции сравнения для типов записей и классов, вводимых пользователем.

Операции сравнения

На главную

Операции сравнения , =, =, возвращают значение типа boolean и применяются к операндам простого типа и к строкам.

Операции = и также применяются ко всем типам. Для размерных типов по умолчанию сравниваются значения, для ссылочных типов - ссылки. Можно переопределить это поведение, перегрузив операции = и . Аналогично можно перегрузить все операции сравнения для типов записей и классов, вводимых пользователем.

Операции с указателями На главную Ко всем указателям применимы операции сравнения = и . К типизированным указателям применима операция разыменования ^: если p является указателем на тип T, то p^ - элемент типа T, на который указывает p. Указатели pointer разыменовывать нельзя.

Операции с указателями

На главную

Ко всем указателям применимы операции сравнения = и .

К типизированным указателям применима операция разыменования ^: если p является указателем на тип T, то p^ - элемент типа T, на который указывает p. Указатели pointer разыменовывать нельзя.

Оператор присваивания На главную Оператор присваивания имеет вид: переменная := выражение В качестве переменной может быть простая переменная, разыменованный указатель, переменная с индексами или компонент переменной типа запись. Символ := называется значком присваивания. Выражение должно быть совместимо по присваиванию с переменной. Оператор присваивания заменяет текущее значение переменной значением выражения.

Оператор присваивания

На главную

Оператор присваивания имеет вид:

переменная := выражение

В качестве переменной может быть простая переменная, разыменованный указатель, переменная с индексами или компонент переменной типа запись. Символ := называется значком присваивания. Выражение должно быть совместимо по присваиванию с переменной.

Оператор присваивания заменяет текущее значение переменной значением выражения.

Составной оператор На главную Составной оператор предназначен для объединения нескольких операторов в один. Он имеет вид:  begin  операторы end Операторы отделяются один от другого символом

Составной оператор

На главную

Составной оператор предназначен для объединения нескольких операторов в один. Он имеет вид:

begin

операторы

end

Операторы отделяются один от другого символом ";". Ключевые слова begin и end, окаймляющие операторы, называются операторными скобками.

Составной оператор На главную Перед end также может ставиться

Составной оператор

На главную

Перед end также может ставиться ";". В этом случае считается, что последним оператором перед end является пустой оператор, не выполняющий никаких действий.

Помимо операторов, в блоке могут быть внутриблочные описания переменных:

Пустой оператор На главную Пустой оператор не включает никаких символов, не выполняет никаких действий и используется в двух случаях: Для использования символа

Пустой оператор

На главную

Пустой оператор не включает никаких символов, не выполняет никаких действий и используется в двух случаях:

Для использования символа ";" после последнего оператора в блоке:

Для пометки места, следующего за последним оператором в блоке:

Поскольку в языке Паскаль символ ";" разделяет операторы, то в приведенном выше коде считается, что после последней ";" находится пустой оператор. Таким образом, ";" перед end в блоке можно либо ставить, либо нет.

Условный оператор На главную Условный оператор имеет полную и краткую формы Полная форма условного оператора выглядит следующим образом: Краткая форма условного оператора имеет вид: if условие then оператор1 else оператор2 if условие then оператор В качестве условия указывается некоторое логическое выражение. Если условие оказывается истинным, то выполняется оператор1, в противном случае выполняется оператор2. Если условие оказывается истинным, то выполняется оператор, в противном случае происходит переход к следующему оператору программы.

Условный оператор

На главную

Условный оператор имеет полную и краткую формы

Полная форма условного оператора выглядит следующим образом:

Краткая форма условного оператора имеет вид:

if условие then оператор1

else оператор2

if условие then оператор

В качестве условия указывается некоторое логическое выражение. Если условие оказывается истинным, то выполняется оператор1, в противном случае выполняется оператор2.

Если условие оказывается истинным, то выполняется оператор, в противном случае происходит переход к следующему оператору программы.

Массивы На главную Массив представляет собой набор элементов одного типа, каждый из которых имеет свой номер, называемый индексом (индексов может быть несколько, тогда массив называется многомерным). Массивы в Pascal делятся на статические и динамические.

Массивы

На главную

Массив представляет собой набор элементов одного типа, каждый из которых имеет свой номер, называемый индексом (индексов может быть несколько, тогда массив называется многомерным).

Массивы в Pascal делятся на статические и динамические.

Статические массивы На главную Статические массивы в отличие от динамических задают свой размер непосредственно в типе. Память под такие массивы выделяется сразу при описании. Тип статического массива конструируется следующим образом: Тип индекса должен быть порядковым. Обычно тип индекса является диапазонным и представляется в виде a..b, где a и b - константные выражения целого, символьного или перечислимого типа.

Статические массивы

На главную

Статические массивы в отличие от динамических задают свой размер непосредственно в типе. Память под такие массивы выделяется сразу при описании.

Тип статического массива конструируется следующим образом:

Тип индекса должен быть порядковым. Обычно тип индекса является диапазонным и представляется в виде a..b, где a и b - константные выражения целого, символьного или перечислимого типа.

Динамические массивы Тип динамического массива конструируется следующим образом: Переменная типа динамический массив представляет собой ссылку. Поэтому динамический массив нуждается в инициализации (выделении памяти под элементы). На главную

Динамические массивы

Тип динамического массива конструируется следующим образом:

Переменная типа динамический массив представляет собой ссылку. Поэтому динамический массив нуждается в инициализации (выделении памяти под элементы).

На главную

Динамические массивы На главную Для выделения памяти под динамический массив используется два способа . Первый способ использует операцию new в стиле вызова конструктора класса: Второй способ выделения памяти под динамический массив использует стандартную процедуру SetLength: Элементы массива при этом заполняются значениями по умолчанию. Процедура SetLength обладает тем преимуществом, что при ее повторном вызове старое содержимое массива сохраняется.

Динамические массивы

На главную

Для выделения памяти под динамический массив используется два способа .

Первый способ использует операцию new в стиле вызова конструктора класса:

Второй способ выделения памяти под динамический массив использует стандартную процедуру SetLength:

Элементы массива при этом заполняются значениями по умолчанию.

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

Получите свидетельство о публикации сразу после загрузки работы



Получите бесплатно свидетельство о публикации сразу после добавления разработки


Олимпиады «Осенний фестиваль знаний 2024»

Комплекты учителю



Качественные видеоуроки, тесты и практикумы для вашей удобной работы

Подробнее

Вебинары для учителей



Бесплатное участие и возможность получить свидетельство об участии в вебинаре.


Подробнее