Выбери формат для чтения
Загружаем конспект в формате pdf
Это займет всего пару минут! А пока ты можешь прочитать работу в формате Word 👇
1
Модуль 7
Лекция 7
Основы программирования
1. Языки программирования
Язык программирования (ЯП) – искусственный формализованный язык, предназначенный для
записи алгоритма для исполнителя «компьютер», метаязыком которого является естественный язык.
ЯП строго фиксирует (т.е. определяет) изображение управляющих структур, описание допустимых действий и синтаксические правила построения сложных структур.
ЯП является составной частью системы (парадигмы) программирования, в которую входит
еще и виртуальная машина.
Виртуальная машина – программный комплекс, эмулирующий работу реальной машины с определенным языком на ЭВМ с другим, машинным языком (реализующий входной язык программирования).
Парадигма программирования – модель создания и реализации программы. Модель определяет приемы и процедуры программирования.
В настоящее время наиболее значимыми являются следующие парадигмы программирования:
- структурное программирование допускает: 1) использование управляющих конструкций, каждая из которых содержит одну точку входа и одну точку выхода; 2) формирование иерархического
вложения конструкций. Парадигма поддерживается такими базовыми управляющими структурами,
как «следование» (последовательность), «выбор» (условный переход) и «цикл». Она реализуется императивными, процедурными ЯП – С, С++, Фортран, Паскаль.
- функциональное программирование предполагает организовывать вычисления на основе вызовов множества связанных функций, аргументами которых могут быть как объекты-переменные,
так и возвращаемые функциями значения. Парадигма поддерживается аппликативными, функциональными ЯП – LISP и ML.
- логическое программирование: построение программы осуществляется в виде совокупности
логических правил с предварительно определенными алгоритмами для обработки входных данных
программы в соответствии с ее правилами. Примером логического ЯП служит Prolog.
- объектно-ориентированное программирование предполагает представление программы в виде описаний наборов программных объектов, вызывающих друг друга в соответствии с принятой
разработчиком логикой, информационной моделью. Каждый из объектов наделен определенными
свойствами, операциями, поведением и способностью участвовать в воспроизведении других объектов, а также в инициировании действий каких-либо объектов.
Элементы языков программирование рассматриваются на следующих уровнях:
2
- алфавит – совокупность символов, отображаемых на устройствах печати и экранах и/или водимых с клавиатуры. Обычно это набор символов Latin-1, с исключением управляющих символов.
Иногда в это множество включаются неотображаемые символы, с указанием правил их записи (комбинированные лексемы);
- лексика – совокупность правил образования цепочек символов (лексем), образующих идентификаторы (переменные и метки), операторы, операции и другие лексические компоненты языка.
Сюда же включаются зарезервированные (ключевые) слова ЯП, предназначенные для обозначения
операторов, встроенных функций и пр.;
- синтаксис – совокупность правил образования языковых конструкций, или предложений ЯП
– блоков, процедур, составных операторов, условных операторов, операторов цикла и пр. Особенностью синтаксиса является принцип вложенности (рекурсивность) правил построения конструкций.
Это значит, что элемент синтаксиса языка в своем определении прямо или косвенно в одной из его
частей содержит сам себя;
- семантика- смысловое содержание конструкций, предложений языка, семантический анализ
– проверка смысловой правильности конструкций. Если в выражении используется переменная, то
она должна быть определена ранее по тексту программы, а из этого определения может быть получен ее тип. Исходя из типа переменной, можно говорить о допустимости операций с данной переменной. Семантические ошибки возникают при недопустимом использовании операций, массивов,
функций, операторов и пр.
Исходная программа, как правило, состоит из следующих частей:
- раздел идентификации – область, содержащая наименование программы, а также дополнительную информацию для программистов и/или пользователей;
- раздел связи – фрагмент текста, описывающий внешние переменные, передаваемые вызывающей программой (если таковая имеется), т.е. ту часть исходных данных, которая обязательно поступает на вход программы при ее запуске. Эти переменные часто называют параметрами программы;
- раздел оборудования (среда) – описание типа ЭВМ, процессора, требований к оперативной и
внешней памяти, существенных с точки зрения выполнимости программы;
- раздел данных – идентификация (декларация, объявление, описание) переменных, используемых в программе, и их типов. Понятие типа позволяет осуществить проверку данных на совместимость в операциях еще на этапе трансляции программы и отвергнуть недопустимые преобразования;
- раздел процедур – собственно программная часть, содержащая описание процессов обработки данных. Элементами процедуры являются операторы и стандартные функции, входящие в состав
соответствующего ЯП.
К типовым операторам управления вычислительным процессом относятся следующие:
- организация циклов (выполняемых до исчерпания списка или до достижения управляющей
переменной заданного значения, или пока выполняются некоторые условия);
3
- ветвление программы – выполнение альтернативных групп операторов при заданных условиях;
- блоки операторов – группы, выполняемые как целое;
- операторы перехода – условная или безусловная передача управления на определенный оператор, снабженный меткой, или условный/безусловный выход из цикла или блока.
Важным компонентом управляющих операторов обычно являются логические условия, сопоставляющие значения констант, функций, переменных отношениями типа <, >, =, ≠, ≤, ≥ и вырабатывающие решение о продолжении цикла, переходе по ветви, выходе из блока и т.д. Несколько простых условий объединяются в составные посредством логических операций И, ИЛИ, НЕ.
Подпрограмма – средство, позволяющее многократно использовать в разных местах основной программы один раз описанный фрагмент алгоритма.
В большинстве ЯП не проводится концептуального различия между такими объектами, как
программа и подпрограмма (процедура, функция). В связи с этим всякая подпрограмма может приобретать иерархическую структуру, включая в себя подчиненные (вызываемые) подпрограммы, процедуры и т.д., имеющие стандартный состав.
Объявления (типа, переменные, константы), использующиеся любой подпрограммой, относятся к одной из двух категорий – категории локальных объявлений и категории глобальных объявлений. Локальные объявления принадлежат подпрограмме, описаны внутри нее и могут использоваться только ею. Глобальные объявления принадлежат программе в целом и доступны как самой программе, так и всем ее подпрограммам. Обмен данными между основной программой и ее подпрограммами обычно осуществляется посредством глобальных переменных.
Системы программирования – совокупность средств разработки программ (языки программирования, текстовые редакторы, трансляторы, редакторы связей, библиотеки подпрограмм, утилиты и обслуживающие программы), обеспечивающих автоматизацию составления и отладки программ пользователя.
Классы систем программирования:
1. Набор исходных языков (одноязыковые/многоязыковые);
2. Возможности расширения (замкнутые/открытые);
3. Трансляция (компиляция/интерпретация).
Отличительной особенностью многоязыковых систем является то, что отдельные части (секции, модули или сегменты) программы могут быть подготовлены на различных языках и объединены
во время или перед выполнением в единый модуль.
В открытую систему можно ввести новый входной язык с транслятором, не требуя изменений
в системе.
В интерпретирующей системе осуществляется покомандная расшифровка и выполнение инструкций входного языка (в среде данной системы программирования); в компилирующей – подготовка результирующего модуля, который может выполняться на ЭВМ практически независимо от среды.
4
Структура абстрактной многоязыковой, открытой, компилирующей системы программирования и процесс разработки приложений в данной среде:
Исходный текст
Ввод
Текстовый редактор
Исходный модуль
Препроцессинг
Препроцессор
Расширенный модуль
Транслятор
(компилятор)
Трансляция
(компиляция)
Объектный модуль
Компоновщик
Библиотека системных
программ
Редактор связей
Загрузочный модуль
Построение исполнительного
модуля
Загрузчик
Библиотека программ
пользователя
Загрузка, настройка памяти ЭВМ
Абсолютный модуль
Исходные данные
Выполнение
Результат
Ввод. Программа на исходном языке (исходный модуль) готовится с помощью текстовых редакторов и в виде текстового файла или раздела библиотеки поступает на вход транслятора.
Трансляция. Трансляция исходной программы есть процедура преобразования исходного модуля в промежуточную, т.н. объектную форму. Трансляция в общем случае включает в себя препроцессинг (предобработку) и компиляцию.
Препроцессинг – необязательная фаза, состоящая в анализе исходного текста, извлечения из
него директив препроцессора и их выполнения.
Директивы препроцессора представляют собой помеченные специальными символами (обычно %, #, &) строки, содержащие аббревиатуры или другие символические обозначения конструкций,
включаемых в состав исходной программы перед ее обработкой компилятором.
Данные для расширения исходного текста могут быть стандартными, определяться пользователем либо содержаться в системных библиотеках ОС.
5
Компиляция – в общем случае многоступенчатый процесс, включающий следующие фазы:
- синтаксический анализ – проверка правильности конструкций, использованных программистом при подготовке текста;
- семантический анализ – выявление несоответствий типов и структур переменных, функций и
процедур;
- генерация объектного кода – завершающая фаза трансляции.
6
2. Основные конструкции языка Паскаль
7
2.1 История создания языка.
Первая версия языка Паскаль была разработана в 1968 году. Ее разработчиком является
швейцарский ученый Никлаус Вирт. Свое название язык получил в честь создателя первой механической вычислительной машины француза Блеза Паскаля. На основе языка Паскаль в 1985 г. фирма
Borland выпустила версию Turbo Pascal версии 3.0. С этого времени язык Паскаль используется во
всем мире в учебных заведениях в качестве первого изучаемого языка программирования.
В пакете Turbo Pascal 4.0 были устранены ошибки и ограничения компилятора предыдущей
версии. Наиболее важным нововведением была unit-концепция, позаимствованная из языка МОДУЛА-2. Это позволило разрабатывать крупные программные продукты. В версии 5.0 появился интегрированный отладчик. Был реализован аппарат перекрытий overlays. В этой версии были исправлены
и улучшены библиотеки графических процедур, которым была обеспечена совместимость с графическими адаптерами класса VGA. Появились новые возможности справочной системы Help.
В версии 6.0 была реализована концепция объектно-ориентированного программирования с
полным набором прикладных задач для пользователя. В оболочку был встроен интегрированный
текстовый редактор. В этой версии впервые использовалась мышь для управления работой.
В 1992 г. появилась последняя на сегодняшний день версия языка Turbo Pascal - 7.0. В ней сохранились все достоинства предыдущих версий:
многооконный режим работы
возможность использования мыши
возможность использования Ассемблера
возможность создавать объектно-ориентированные программы
К улучшениям этой версии относятся:
возможность выделять определенным цветом различные элементы исходного текста
расширен язык программирования. Появился типизированный адресный оператор, открытые
массивы и строки
улучшен компилятор
изменен интерфейс пользователя
2.2. Интегрированная инструментальная оболочка (ИИО) Turbo Pascal (TP).
При инсталляции программа устанавливается в директорию C:\TP. Нормальный режим работы программы обеспечивается при размещении файлов программы в директории C:\TP\BIN. В этом случае
инструментальная оболочка доступна из любой директории пользователя. Запуск программы на выполнение осуществляется файлом turbo.exe. В ОС Windows этот файл расположен в основной директории C:\TP\BIN. В ОС DOS файл активизируется командой turbo. После запуска программы на экране появляется фирменная заставка с указанием фирмы изготовителя, индекса и года издания данной версии. После заставки открывается основной экран программы. Он состоит из трех различающихся по функциональному назначению частей:
1. Строка меню
8
2. Рабочая зона
3. Строка состояния
Строка меню содержит команды File, Edit (основные команды редактирования текста), Search (осуществляет поиск фрагментов текста; при необходимости производит замену на новые), Run (команды, запускающие программу или ее часть на выполнение), Compile (осуществляет
компиляцию программы, которая находится в рабочей зоне), Debug (содержит команды поиска ошибок), Tools (позволяет запустить некоторые программы не выходя из оболочки
Turbo), Options (позволяет установить параметры компилятора и инструментальной оболочки), Windows (содержит команды по работе с окнами), Help (Справка).
Для обращения к строке меню, т.е. ее активизации используются:
1. Щелчок левой кнопки мыши на одном из пунктов
2. Нажатие клавиши F10. Для выбора необходимого пункта меню в клавиатурном режиме используются клавиша с литерой, выделенной команды
Другой способ обращения к команде - это одновременное нажатие клавиш Alt+'литера'. При
открытии диалогового окна, перемещение по нему осуществляется кнопкой Tab. Закрыть диалоговое
окно можно нажатием клавиши Esc.
В рабочую зону ТП 7.0 помещаются окна файлов. В один момент времени доступным или активным
может быть только одно окно файла. Оно расположено поверх остальных. Окна файлов могут располагаться несколькими способами. Работа с ними производится из меню Window. Каждое окно снабжено рамкой. Левый верхний угол содержит кнопку закрыть окно. Верхний правый угол содержит
кнопку развернуть окно. Верхняя часть рамки содержит имя и директорию файла.
Строка состояния содержит краткий список горячих клавиш, необходимых для использования в текущем режиме.
Перед первым использованием интегрированной инструментальной оболочки (ИИО) необходимо
проверить ее настройку и, в случае необходимости, изменить настройки. Выполняется это из соответствующего меню (Options). Здесь необходимо проверить установку команды Desktop. Ее установка гарантирует сохранение ваших установок конфигурации ИИО. Сохранение установок происходит в файл turbo.tp. За размещение этого файла в основной директории отвечает специальная команда. Для того, чтобы выполненные настройки сохранились, в меню Options выполняется команда
Save turbo.tp
2.3. Алфавит и программа на TP 7.0.
Алфавит языка состоит из нескольких разделов:
1. Латинские буквы: A a B b…
2. Цифры: 0 1 2..9
3. Знаки математических операций: + - * /
4. Знаки математических отношений: < > =
5. Знаки препинания: . , : ;
9
6. Специальные знаки: { } [ ] ( ) $ ^
Программа записанная на языке TP может содержать следующие разделы:
1. Заголовок
2. Раздел меток
3. Раздел констант
4. Раздел типов
5. Раздел переменных
6. Раздел процедур и функций
7. Раздел операторов
Все программы обязательно имеют раздел заголовок и раздел операторов. Остальные составляющие могут отсутствовать. При отсутствии некоторых частей программы общий порядок их следования сохраняется.
Разделы между собой разделяются знаком ";"
Раздел операторов заключается в операторные скобки. Это зарезервированные слова begin, end. Раздел операторов заканчивается точкой. Запись внутри операторных скобок ведется с отступом в три
знака.
Раздел "заголовок" начинается с зарезервированного слова, за которым указывается имя программы.
В качестве имени может использоваться любой набор символов алфавита с несколькими исключениями:
1. Нельзя использовать зарезервированные слова
2. Нельзя начинать имя с цифры
3. При использовании имени не используется пробел
2.4. Простые типы данных.
Любые данные ТП характеризуются своими типами. Тип определяет:
1. Формат представления данных в памяти компьютера
2. Множество допустимых значений, принимаемое переменной или константой, принадлежащей
к выбранному типу
3. Множество допустимых операций применимых к этому типу
Тип переменной определяется при ее декларации. Одна из базовых концепций Паскаля заключается в жесткой проверке соответствия типов в операциях присваивания.
Типы данных в языке ТП делятся на 5 основных классов:
1. Простые типы
2. Структурированные типы
10
3. Ссылочные типы
4. Процедурные типы
5. Объектные типы
К простым типам относятся: целочисленные типы, логический тип, символьный тип, перечисляемый тип, интервальный тип, вещественные типы.
Среди этих видов выделяют подмножества типов, отличных от вещественного, называемых порядковым типом.
Порядковые типы обладают четырьмя характеристиками:
1. Все возможные значения данного порядкового типа представляют собой упорядоченное множество и каждое возможное значение связано с порядковым номером, который является целым числом
2. Значения любого порядкового типа, за исключением целочисленного начинается с порядкового номера ноль (следующий порядковый номер 1, 2, 3…)
3. Порядковым номером значения целочисленного типа является само значение
4. В любом порядковом типе каждому значению кроме первого есть предыдущее и каждому
значению кроме последнего есть последующее
К данным любого порядкового типа можно применить любую из пяти операций:
1. Стандартная операция Ord возвращает порядковый номер указанного значения. Значение указывается в скобках
2. Стандартная операция Pred возвращает значение, предшествующее указанному, если эта
функция применяется к первому значению данного типа, то выдается сообщение об ошибке
3. Стандартная операция Succ возвращает следующее значение за указанным, если операция
применяется к последнему элементу типа, то выдается сообщение об ошибке
4. Стандартная операция Low возвращает наименьшее значение в диапазоне порядкового типа,
указанного данного
5. Стандартная операция High возвращает наибольшее значение в диапазоне порядкового типа,
указанного данного
В TP имеется 5 предопределенных, целочисленных типов. Каждый тип обозначает определенное подмножество целых чисел:
Тип
Диапазон
Формат
Короткое целое shortint
-128..127
8 бит со знаком
Целое integer
-32768..32767
16 бит со знаком
11
Длинное целое longint
-2147483648..2147483647
32 бита со знаком
Длиной в байт byte
0..255
8 бит без знака
Длиной в слово word
0..65535
16 бит без знака
Верхнее граничное значение и нижнее граничное значение целочисленных типов задаются как константы и имеют соответствующее имя.
В тексте программы данные целочисленных типов записываются в десятичном или шестнадцатеричном формате и не должны содержать десятичные точки.
Пример:
1 - целый тип
1.0 - не целый тип
100 - десятичный формат (100)
#100 - шестнадцатеричный формат (256)
Над целочисленными данными возможно выполнение операций сложения, вычитания и умножения,
а также операций сравнения. Арифметические действия над операндами целочисленного типа предполагают восьмибитовую, 16-битовую или 32-битовую точность вычислений, в соответствии со следующими правилами:
1. Тип целой константы представляет собой встроенный целочисленный тип с наименьшим диапазоном, включающий значение данной константы
2. В случае бинарной операции оба операнда преобразуются к общему типу. Общим типом будет целочисленный тип с наименьшим диапазоном, включающим значение обоих операндов.
Действие выполняется в соответствии с точностью общего типа и результатом будет общий
тип
3. Выражение справа в операторе присваивания вычисляется независимо от размера или типа
переменной слева
4. Любые операнды размера в байт преобразуются в операнды размера слово
К логическим типам относятся данные типов Boolean, ByteBool, WordBool, LongBool.
Значением каждого данного логического типа могут являться 2 значения: TRUE (1) и FALSE (0).
Для данных логического типа применимы только две операции сравнения: равно и не равно.
Переменные типа Boolean и ByteBool занимают один байт; переменная WordBool - 2 байта; LongBool - 4 байта.
Boolean - это предпочтительный тип, использующий меньше памяти. Остальные типы обеспечивают
совместимость с другими языками и средой Windows.
Предполагается, что тип Boolean имеет порядковые значения 0 и 1, а другие типы могут иметь другие порядковые значения. Когда выражение типа ByteBool, WordBool или LongBool равно 1, то его
значение истинно, когда 0 - ложь; любое другое значение преобразуется к единице и считается истинным.
Символьный тип (char) представляет собой тип данных, предназначенный для хранения одного символа (буквы, знака или кода). В переменную этого типа может быть помещен любой из 256 символов
расширенного кода ASCII.
12
Переменная типа char занимает один байт памяти. Значения типа char задаются в апострофах. Кроме
того можно задавать значения используя код из таблицы ASCII. Над данными символьного типа
можно выполнять операции сравнения.
Перечисляемый тип определяется как упорядоченный набор идентификаторов, заданный путем их
перечисления. При этом список идентификаторов разделенных запятой указывается в круглых скобках. Задается перечисляемый тип в разделе type.
Пример:
type A=(2, 4, 1, 7);
B=('c', 'L', '3', '|');
Значения переменных перечисляемого типа не могут вводиться с клавиатуры и выводиться на экран.
Интервальный тип данных определяется посредством задания подмножества значений одного из ранее определенных типов. Можно использовать все простые типы, за исключением вещественного.
При задании диапазона указывается наименьшее и наибольшее значения, разделенные двумя точками. При этом оба значения обязательно одного типа.
К вещественному типу относится подмножество вещественных чисел, представленных в формате с
плавающей точкой и фиксированным числом цифр.
В ТП имеется 5 видов вещественных типов:
Тип
Диапазон
Real (вещественное)
2.9*10-39..1.7*1038
Single (с одинарной точностью)
1.5*10-45..3.4*1038
Double (с двойной точностью)
5.0*10324
..1.7*10308
Extended (с повышенной точностью)
3.4*104932
..1.1*104932
Comp (сложное)
-9.2*1018..9.2*1018
Точность
Фо
рмат
11-12
знаков
6
байт
7-8 знаков
4
байта
15-16
знаков
8
байт
19-20
знаков
10
байт
19-20
знаков
8
байт
Действия над типами с одинарной, двойной, повышенной точностью и сложным типом могут выполняться только при наличии числового сопроцессора. Поэтому считается что постоянно доступным является только тип Real.
2.5. Константы, переменные и оператор присваивания.
13
Константа - это идентификатор отмечающий значение, которое не может изменяться. Идентификатор константы не может быть включен в свое собственное описание. Константы должны объявляться
в декларационной части программы до момента их использования в вычислениях. Эта декларационная часть начинается с зарезервированного слова const. При декларации указывается имя константы,
символ равенства и значение этой константы. В ТП применяется 5 видов констант простых типов:
1. Целочисленные константы. В качестве значений может использоваться любое целочисленное
данное в десятичном или шестнадцатеричном формате (year=2003)
2. Вещественные константы определяются числами, записанными в десятичном формате данных
(time=0.2e+4, yyy=304.0)
3. Символьные константы могут быть определены только посредством символов таблицы
ASCII. При этом сам символ заключается в апострофы (var1='A')
4. Строковые константы определяются произвольной последовательностью символов, заключенных в апострофы (stroke='IBM')
5. Типизированные константы (переменные с начальным значением) . Каждой типизированной
константе ставится в соответствие имя, тип, начальное значение (year1:integer =1995)
Переменной называется элемент программы, который предназначен для хранения, коррекции
и передачи данных внутри программы.
Раздел описания переменных начинается с зарезервированного слова var.
Для объявления переменной необходимо указать имя переменной и ее тип. Однотипные переменные
могут перечисляться через запятую перед указанием их типа.
Пример:
a: integer;
b: boolean;
c, b: real;
e: integer;
Все переменные делятся на глобальные и локальные. Глобальными являются переменные, объявленные вне процедур и функций, а локальными - объявленные внутри процедур и функций.
ТП накладывает ряд ограничений на использование переменных:
1. Среди глобальных переменных не может быть двух с одинаковыми идентификаторами;
2. Среди локальных переменных в пределах одной процедуры или функции не может быть двух
с одинаковыми идентификаторами;
3. В тексте программы любой глобальный идентификатор может дублировать любой локальный
идентификатор, т.к. даже при одинаковых именах они хранятся в разных участках памяти.
Оператор присваивания - это основной оператор любого языка программирования. Данный
оператор позволяет поместить определенное значение в необходимую вам переменную.
Оператор присваивания имеет вид:
идентификатор:= выражение;
При составлении выражений могут быть использованы следующие математические умножения, а
также операций сравнения. Арифметические действия над операндами целочисленного типа предпо-
14
лагают восьмибитовую, 16-битовую или 32-битовую точность вычислений, в соответствии со следующими правилами:
5. Тип целой константы представляет собой встроенный целочисленный тип с наименьшим диапазоном, включающий значение данной константы
6. В случае бинарной операции оба операнда преобразуются к общему типу. Общим типом будет целочисленный тип с наименьшим диапазоном, включающим значение обоих операндов.
Действие выполняется в соответствии с точностью общего типа и результатом будет общий
тип
7. Выражение справа в операторе присваивания вычисляется независимо от размера или типа
переменной слева
8. Любые операнды размера в байт преобразуются в операнды размера слово
К логическим типам относятся данные типов Boolean, ByteBool, WordBool, LongBool.
Значением каждого данного логического типа могут являться 2 значения: TRUE (1) и FALSE (0).
Для данных логического типа применимы только две операции сравнения: равно и не равно.
Переменные типа Boolean и ByteBool занимают один байт; переменная WordBool - 2 байта; LongBool - 4 байта.
Boolean - это предпочтительный тип, использующий меньше памяти. Остальные типы обеспечивают
совместимость с другими языками и средой Windows.
Предполагается, что тип Boolean имеет порядковые значения 0 и 1, а другие типы могут иметь другие порядковые значения. Когда выражение типа ByteBool, WordBool или LongBool равно 1, то его
значение истинно, когда 0 - ложь; любое другое значение преобразуется к единице и считается истинным.
Символьный тип (char) представляет собой тип данных, предназначенный для хранения одного символа (буквы, знака или кода). В переменную этого типа может быть помещен любой из 256 символов
расширенного кода ASCII.
Переменная типа char занимает один байт памяти. Значения типа char задаются в апострофах. Кроме
того можно задавать значения используя код из таблицы ASCII. Над данными символьного типа
можно выполнять операции сравнения.
Перечисляемый тип определяется как упорядоченный набор идентификаторов, заданный путем их
перечисления. При этом список идентификаторов разделенных запятой указывается в круглых скобках. Задается перечисляемый тип в разделе type.
Пример:
type A=(2, 4, 1, 7);
B=('c', 'L', '3', '|');
Значения переменных перечисляемого типа не могут вводиться с клавиатуры и выводиться на экран.
Интервальный тип данных определяется посредством задания подмножества значений одного из ранее определенных типов. Можно использовать все простые типы, за исключением вещественного.
При задании диапазона указывается наименьшее и наибольшее значения, разделенные двумя точками. При этом оба значения обязательно одного типа.
К вещественному типу относится подмножество вещественных чисел, представленных в формате с
плавающей точкой и фиксированным числом цифр.
В ТП имеется 5 видов вещественных типов:
15
Тип
Диапазон
Real (вещественное)
2.9*10-39..1.7*1038
Single (с одинарной точностью)
1.5*10-45..3.4*1038
Double (с двойной точностью)
5.0*10324
..1.7*10308
Extended (с повышенной точностью)
3.4*104932
..1.1*104932
Comp (сложное)
-9.2*1018..9.2*1018
Точность
Фо
рмат
11-12
знаков
6
байт
7-8 знаков
4
байта
15-16
знаков
8
байт
19-20
знаков
10
байт
19-20
знаков
8
байт
Действия над типами с одинарной, двойной, повышенной точностью и сложным типом могут выполняться только при наличии числового сопроцессора. Поэтому считается что постоянно доступным является только тип Real.
2.5. Константы, переменные и оператор присваивания.
Константа - это идентификатор отмечающий значение, которое не может изменяться. Идентификатор константы не может быть включен в свое собственное описание. Константы должны объявляться
в декларационной части программы до момента их использования в вычислениях. Эта декларационная часть начинается с зарезервированного слова const. При декларации указывается имя константы,
символ равенства и значение этой константы. В ТП применяется 5 видов констант простых типов:
6. Целочисленные константы. В качестве значений может использоваться любое целочисленное
данное в десятичном или шестнадцатеричном формате (year=2003)
7. Вещественные константы определяются числами, записанными в десятичном формате данных
(time=0.2e+4, yyy=304.0)
8. Символьные константы могут быть определены только посредством символов таблицы
ASCII. При этом сам символ заключается в апострофы (var1='A')
9. Строковые константы определяются произвольной последовательностью символов, заключенных в апострофы (stroke='IBM')
10. Типизированные константы (переменные с начальным значением) . Каждой типизированной
константе ставится в соответствие имя, тип, начальное значение (year1:integer =1995)
16
Переменной называется элемент программы, который предназначен для хранения, коррекции
и передачи данных внутри программы.
Раздел описания переменных начинается с зарезервированного слова var.
Для объявления переменной необходимо указать имя переменной и ее тип. Однотипные переменные
могут перечисляться через запятую перед указанием их типа.
Пример:
a: integer;
b: boolean;
c, b: real;
e: integer;
Все переменные делятся на глобальные и локальные. Глобальными являются переменные, объявленные вне процедур и функций, а локальными - объявленные внутри процедур и функций.
ТП накладывает ряд ограничений на использование переменных:
4. Среди глобальных переменных не может быть двух с одинаковыми идентификаторами;
5. Среди локальных переменных в пределах одной процедуры или функции не может быть двух
с одинаковыми идентификаторами;
6. В тексте программы любой глобальный идентификатор может дублировать любой локальный
идентификатор, т.к. даже при одинаковых именах они хранятся в разных участках памяти.
Оператор присваивания - это основной оператор любого языка программирования. Данный
оператор позволяет поместить определенное значение в необходимую вам переменную.
Оператор присваивания имеет вид:
идентификатор:= выражение;
При составлении выражений могут быть использованы следующие математические функции:
Имя функ-
Математическое значение
Тип результата
a mod b
Остаток деления a на b
Целое
a div b
Целая часть деления a на b
Целое
abs (a)
|a|
Совпадает с типом аргумента
sqr (a)
a2
Совпадает с типом аргумента
ции
Вещественное
sqrt (a)
sin (a)
sin a
Вещественное
cos (a)
cos a
Вещественное
17
arctan (a)
arctg a
Вещественное
ln (a)
ln a
Вещественное
exp (a)
ea
Вещественное
При составлении сложных выражений осуществляется приоритет выполнения операций:
1. not, @
2. *, /, div, mod, and, shl, shr
3. +, -, or, xor
4. =, <>, <=, >=, >, <, in
2.6. Операторы ввода/вывода.
ТП содержит четыре оператора ввода/вывода: read, readln, write, writeln.
Оператор read осуществляет ввод данных с клавиатуры и размещение их в стандартном файле ввода
input. Вводимые данные размещаются в качестве значений переменных, имена которых перечислены
в круглых скобках за оператором read.
read (a, b, c);
Вводятся данные тоже списком, в котором они разделяются пробелом. Ввод заканчивается нажатием Enter. Курсор, отмечающий позицию следующего ввода/вывода остается за последним введенным данным.
Оператор readln выполняет аналогичные действия и переводит курсор на следующую строку.
Оператор write осуществляет вывод на экран или печатающее устройство с одновременным размещением в стандартном файле вывода output. Оператор может выводить сообщение или значение переменной. Сообщения записываются в апострофах. Для вывода значения переменной указывается
имя переменной. Сообщения и переменные можно чередовать в одном списке, разделяя их запятыми.
Курсор остается за последним выведенным данным.
Оператор writeln выполняет аналогичные действия и переводит курсор на следующую строку.
Операторы write и writeln допускают т.н. форматированный вывод данных.
write (a:5:2);
Первое из чисел указывает сколько экранных знаков отводится под вывод. Второе число указывает
количество знаков после запятой в числе и может отсутствовать.
3. Управляющие конструкции языка ТП
3.1. Безусловные конструкции.
Оператор языка представляет собой неделимый элемент программы, который позволяет выполнять
определенные алгоритмические действия. Все операторы можно условно разделить на две группы: простых операторов и структурированных операторов. К простым относятся те операторы,
18
которые не содержат других операторов. К структурированным - те, которые состоят из других операторов.
В ТП 7.0 существует всего один оператор безусловного перехода Goto и четыре безусловных функции: Break, Continue, Exit, Halt.
Оператор безусловного перехода Goto представляет собой простой оператор, используя который
можно изменять порядок выполнения операторов в программе. Общий вид оператора безусловного
перехода:
goto <метка> , где <метка> - это идентификатор или целое число от 0 до 9999, объявленное в разделе меток label.
Применение оператора безусловного перехода в ТП - программе является нежелательным, т.к. его
присутствие нарушает структурную целостность и наглядность. Такую программу трудно читать,
отлаживать и модифицировать.
Функция Break позволяет досрочно закончить цикл.
Функция Continue - позволяет начать новую итерацию цикла, даже если предыдущая не была завершена.
Функция Exit - позволяет завершить работу текущего программного блока.
Функция Halt (n), где n - некоторое целое число - позволяет завершить работу программы с кодом
завершения n.
3.2. Условные конструкции.
1) неполная форма с одним оператором
2) полная форма с одним оператором
3) неполная форма с несколькими операторами
4) полная форма с несколькими операторами
1) IF условие THEN оператор;
2) IF условие THEN оператор1 ELSE оператор2;
3) IF условие THEN BEGIN
оператор1;
оператор2;
…
операторN;
END;
4) IF условие THEN BEGIN
оператор1;
оператор2;
…
операторN;
19
END ELSE
BEGIN
оператор1;
оператор2;
…
операторN;
END;
Пример: ввести оценку студента в баллах и сообщить ее название.
Begin
Read(b)
If b=5 then Write('отлично') else
If b=4 then Write('хорошо') else
If b=3 then Write('удовл.') else
If b=2 then Write('неудовл.') else
Write('это не оценка');
End.
3.3. Конструкция выбор.
Ситуации, реализующие систему вложенных ветвлений могут быть разрешены с использованием
конструкции выбор.
Оператор выбора является структурированным и использует в своей записи операторы case, of, else, end и операторные скобки по необходимости.
В самом общем виде оператор выбора можно записать так:
Case порядковая переменная of
значение1: begin оператор1; оператор2; …; операторN; end;
значение2: begin оператор1; оператор2; …; операторN; end;
…
значениеM: begin оператор1; оператор2; …; операторN; end;
else begin оператор1; оператор2; …; операторN; end;
end;
Пример: ввести оценку студента в баллах и сообщить ее название.
Begin
Read(b)
Case b of
5: Write('отлично');
4: Write('хорошо');
3: Write('удовл.');
2: Write('неудовл.');
else Write('это не оценка');
20
end;
End.
Порядковая переменная, значение которой при выполнении программы определяет ветвь в операторе
выбора, подлежащую выполнению, может принадлежать любому целочисленному типу. В случае,
когда для нескольких значений выполняемые действия одинаковы, их можно указать один раз, а сами значения перечислить через запятую.
Пример: напечатать количество дней во введенном месяце:
Begin
Read(m);
Case m of
янв, мар, май, июл, авг, окт, дек: Write('31');
апр, июн, сен, ноя: Write('30');
фев: Write('28');
else Write ('это не месяц');
end;
End.
3.4. Циклические конструкции.
1. Цикл с предусловием.
Для реализации циклов с предусловием используется составной оператор, включающий оператор while, do, операторные скобки.
В общем виде цикл реализуется записью:
while <условие> do <действие>;
Если тело цикла содержит более одного действия, то необходимо использовать операторные скобки:
while <условие> do
begin
<оператор 1>;
<оператор 2>;
...
<оператор n>;
end;
2. Цикл с постусловием.
Для реализации цикла используется составной оператор, состоящий из операторов repeat и until.
В общем виде цикл записывается так:
repeat
<действие>;
until <условие>;
Пример: задано целое число. Вывести на печать все цифры введенного числа.
1 способ:
var
21
a,b:longint;
Begin
read(a);
repeat
b:=a mod 10;
writeln(b);
a:=a div 10;
until a=0;
End.
2 способ:
var
a,b:longint;
Begin
read(a);
while a<>0 do
begin
b:=a mod 10;
write(b:3);
a:=a div 10;
end;
End.
3. Цикл с параметром.
Для реализации в языке Pascal используется составной оператор, состоящий из операторов for, to, downto, do и при необходимости из операторных скобок. Переменная параметр обязательно объявляется в декларационной части программы и может принадлежать одному из порядковых
типов.
Если при изменении переменной параметра необходимо использовать переход к следующему значению, то используется оператор to; если переход необходимо осуществить к предыдущему значению,
то используется оператор downto. Тогда в общем виде цикл записывается так:
for I:=I0 to In do
begin
<оператор 1>;
<оператор 2>;
...
<оператор n>;
end;