Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Программирование. Процедурное программирование. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
☆
Министерство образования и науки Российской Федерации
Сибирский федеральный университет
Е. В. Кучунова, Б. В. Олейников, О. М. Чередниченко
ПРОГРАММИРОВАНИЕ
Процедурное программирование
Красноярск
СФУ
2016
УДК 004.42(07) ББК 32.973я73
К959
Рецензенты:
В. Ю. Журавлев, кандидат технических наук, доцент, декан факуль­тета повышения квалификации и переподготовки Сибирского государ­ственного аэрокосмического университета им. акад. М. Ф. Решетнева;
Е. М. Грищенко, кандидат технических наук, доцент, заведующий кафедрой информационных технологий факультета автоматизации и информационных технологий Сибирского технологического универ­ситета
Кучунова, Е. В.
К959 Программирование. Процедурное программирование : учеб.
пособие / Е. В. Кучунова, Б. В. Олейников, О. М. Чередниченко. – Красноярск : Сиб. федер. ун-т, 2016. – 92 с.
ISBN 978-5-7638-3555-7
Рассмотрены основные конструкции языка Delphi и базовые принципы структурного программирования. Большое внимание уделено алгоритмам работы с массивами, строками, структурами, текстовыми и типизированны­ми файлами. Подробно изложены различные аспекты использования проце­дур и функций, в том числе и рекурсивных.
Предназначено для студентов, обучающихся по программе бакалавриата по направлению 02.03.01. «Математика. Компьютерные науки». Может быть использовано в школах с углубленным изучением информатики.
Электронный вариант издания см.: УДК 004.42(07) http://catalog.sfu-kras.ru ББК 32.973я73
ISBN 978-5-7638-3555-7 © Сибирский федеральный
университет, 2016
Оглавление
ОГЛАВЛЕНИЕ
Введение ........................................................................................................ 4
Глава 1. Основные возможности процедурного
программирования по работе с числовыми данными ........ 6
1.1. Базовые понятия ................................................................................ 6
1.2. Типизация данных. Основные типы данных и средства работы
с ними. Основные операторы .......................................................... 12
1.3. Проектируемые типы для числовых данных. Основные
алгоритмы для работы с ними ......................................................... 27
1.4. Основные инструменты структурного программирования. Процедурные типы. Рекуррентность и рекурсия.
Реализация в языке ........................................................................... 35
1.5. Математическая индукция, рекурсия и итерация. Фракталы ...... 46
Глава 2. Основные возможности процедурного
программирования при работе с комбинированными данными произвольного объема и создании отдельно
компилируемых программ ....................................................... 51
2.1. Нечисловые типы данных и инструменты работы с ними ........... 51
2.2. Комбинированный тип данных. Файловый тип данных.
Основные инструменты по работе с ними ..................................... 55
2.3. Расширенная работа с файлами. Типизированные константы.
Преобразование типов ...................................................................... 67
2.4. Обработка исключительных ситуаций. Создание отдельно
компилируемых программ ............................................................... 73
Глава 3. Типовые проверочные работы ................................................. 82
3.1. Проверочная работа № 1 .................................................................. 82
3.2. Проверочная работа № 2 .................................................................. 84
Библиографический список ...................................................................... 90
3
Введение
ВВЕДЕНИЕ
Настоящее учебное пособие предназначено для первоначального ос­воения языка программирования клона Pascal, представляющего языки программирования высокого уровня, и приобретения практических навы­ков программирования на нем при работе в статической памяти.
В качестве конкретных представителей клона Pascal в этом случае мо­гут быть использованы имеющие хождение, такие как Turbo Pascal (Borland Pascal), PascalABC.NET, Object Pascal (Delphi), Component Pascal (BlackBox Component Builder), Oxygene, GNU Pascal, Free Pascal. Однако для аудитор­ных практических занятий, учитывая имеющиеся в университете возможно­сти, практикуется использование Delphi 2009 и PascalABC.NET.
При первоначальном изучении языка программирования помимо вы­бора самого языка (и здесь язык Pascal – безусловный лидер) немаловаж­ное значение имеют отбор тем и последовательность их изучения, четкая типизация данных и алгоритмизация, структурность программирования и записи программ. Поэтому в данном учебном пособии и рассматривается процедурное программирование. Отсюда для среды (языка) Delphi 2009 с целью усиления внимания к процедурному программированию использу­ется только консольный режим.
При отработке практических навыков программирования типы дан­ных, предусматриваемые языком программирования, с целью экономии времени в основном агрегируются в четыре раздела сообразно решаемым задачам: логические, числовые, символьно-строковые (текстовые), комби­нированные. В эти разделы помимо примитивных и статических структур данных входят и соответствующие структуры типа последовательность и хранение, т. е. файлы.
Уже на ранних этапах программирования (практически при работе с регулярными числовыми структурами данных) прививаются навыки структуризации программы на основе создания совместно компилируемых подпрограмм (процедур и функций), а также структурной записи про­грамм.
Алгоритмы, используемые при решении задач, также группируются в два больших раздела: итеративные и рекурсивные. Причем особое вни­мание уделяется рекурсивным алгоритмам и использованию их при про­граммировании уже на ранних этапах.
В п. 2.4 рассмотрена тема создания модулей как отдельно компили­руемых библиотек подпрограмм.
Следует отметить, что в рамках ограниченного сеткой часов неболь­шого пособия сложно охватить все темы программирования в статической
4
Введение
памяти, поэтому некоторые разделы, связанные с определенными структу­рами данных, возможностями языка и алгоритмами, отводятся на само­стоятельное изучение студентами и в данном пособии не рассматриваются.
Несмотря на это, пособие должно помочь освоить базовый язык про­граммирования и обрести навыки практического программирования разно­образных задач с использованием статической памяти.
Учебное пособие не содержит материала, связанного с решением уз­коспециализированных задач, а поэтому может быть использовано на уро­ках информатики в старших классах общеобразовательной школы.
5
Глава 1
Глава 1. ОСНОВНЫЕ ВОЗМОЖНОСТИ
ПРОЦЕДУРНОГО ПРОГРАММИРОВАНИЯ ПО РАБОТЕ С ЧИСЛОВЫМИ ДАННЫМИ
1.1. Базовые понятия
Алгоритм – порядок действий для достижения некоторого резуль­тата.
Язык программирования – язык, на котором представляются алго­ритм и требуемые данные. Различают языки программирования высокого уровня (языки, приближающиеся по используемым конструктивным эле­ментам к естественным языкам) и языки программирования низкого уров­ня (ориентированные на машинную систему команд).
Оператор – это отдельное слово (фраза), предусмотренное языком программирования и представляющее собой определенную инструкцию.
Программа – это совокупность операторов.
Программирование – процесс создания программы.
Процесс создания и выполнения программы состоит из следующих этапов:
1) создание программы на исходном языке (обычно на языке высоко-
го уровня);
2) получение объектного кода программы – код, получаемый после
трансляции (компиляции или интерпретации) исходного кода;
3) связывание с необходимыми стандартными средствами (линковка);
4) получение исполняемого кода (машинный код).
Среда программирования (среда разработки) – специальная про- грамма, содержащая все необходимое для разработки и выполнения про­грамм, в частности:
редактор для написания программного (исходного) кода,
компилятор,
отладчик.
В настоящее время существует большое количество разнообразных сред для написания программ на языках семейства Pascal. Одни из них коммерческие, например, Borland IDE, RAD-среды Delphi, другие сво­бодно распространяемые (Lazarus, PascalABC.NET). В этой главе будут рассмотрены основные этапы создания простейшей программы и некото­рые особенности написания программы для сред программирования Delphi 2009 и PascalABC.NET.
6
Основные возможности процедурного программирования по работе с числовыми данными
Среда программирования Delphi 2009
Среда Delphi 2009 была создана компанией Embarcadero (купившей подразделение CodeGear у компании Borland – создателя Delphi в 2008 г.).
Процесс создания программы в Delphi 2009 начинается с построе­ния проекта. Проект – это целостная совокупность программных моду­лей. Для создания нового проекта в среде Delphi необходимо выбрать пункт New → Other, далее в диалоговом окне New Items выбрать пункт Console Application. В этом пособии рассматриваются программы только с консольным интерфейсом.
При создании нового проекта Delphi порождает программный код, являющийся заготовкой будущей программы (рис. 1).
В созданной заготовке программы основным блоком является блок begin…end, заканчивающийся точкой, в котором и находятся основные операторы программы. В этот блок вложен еще один блок try...except... end, служащий для обработки исключительных ситуаций (например, что делать, если вдруг по ходу выполнения программы произойдет деление на нуль). Тема обработки исключительных ситуаций рассматривается в п. 2.4.
Рис. 1. Шаблон программы
Пример программы № 1
Вывести на экран приветствие.
Текст этой программы приведен в листинге 1.1.
Первая строка называется заголовком программы. Слово program относится к зарезервированным (ключевым) словам и указывает на то, что
7
Глава 1
создается программа с указанным далее в строке именем. В Delphi по умолчанию в качестве имени программы выступает слово Project (проект), возможно, с порядковым номером (в дальнейшем при сохранении про­граммы имя проекта можно изменить).
Строка {$APPTYPE CONSOLE} является директивой компилятора (все, что начинается со знака $ и находится в фигурных скобках, относится к директивам компилятора). В данном случае эта запись говорит о том, что будет создано консольное приложение.
В разделе uses идет подключение модулей (стандартных и создавае­мых пользователем). В частности, в созданный шаблонный проект подклю­чен стандартный модуль SysUtils, содержащий основные стандартные под­программы, необходимые для создания программы. В каждый проект также по умолчанию подключен модуль System (не указывается в разделе uses).
Текст, следующий за двойной косой чертой (//) и до конца строки или заключенный в фигурные скобки { }, называется комментарием. Он служит для пояснения текста программы. Компилятор этот текст пропускает.
Слова, выделенные жирным шрифтом, являются зарезервированны­ми (ключевыми). Каждое зарезервированное слово имеет определенный смысл. Между двумя зарезервированными словами begin и end располага­ется тело программы. В теле программы располагаются операторы, реали­зующие последовательность действий, которую должна выполнить ЭВМ. После слова end ставится точка (но только в конце программы)
1
.
Практически любая программа включает операторы ввода и вывода данных. К ним относятся Read (ReadLn) для ввода данных и Write (WriteLn) для вывода данных. В частности, если предусмотрен вывод тек­ста, то он должен быть заключен в апострофы.
Создаваемые в Delphi проекты необходимо русифицировать, иначе на экране вместо русских букв будут отображаться произвольные символы. Это происходит потому, что в среде Delphi используется кодировка Windows, а в консольном окне по умолчанию используется кодировка DOS.
Основные шаги по русификации консольного приложения в Delphi.
Шаг № 1. Подключить библиотеку Windows.
Шаг № 2. В теле программы разместить операторы замены кодовой таблицы для ввода (SetConsoleCP) и вывода (SetConsoleOutputCP).
Шаг № 3. В свойствах консольного окна задать шрифт «True Type» (TT): «Consolas» или «Lucida Console». Для этого нужно в заголовочной области консольного окна с программой щелкнуть правой кнопкой мыши, в появившемся меню выбрать «Properties» («Свойства») и установить тре­буемый шрифт.

а с точкой запятой.
1
Зарезервированное слово end используется и в других местах, но без точки,
8
Основные возможности процедурного программирования по работе с числовыми данными
Листинг 1.1. Вывести на экран приветствие
program Example1_1; // Строка заголовка {$APPTYPE CONSOLE} // Директива компилятора
uses // Подключение модулей SysUtils, Windows;
begin // Начало программы // Установка кодовой таблицы Windows-1251
SetConsoleCP(1251); // для ввода SetConsoleOutputCP(1251); // для вывода // Вывод на экран приветствия: WriteLn('Поздравляем с началом занятий!'); ReadLn; // Ожидание нажатия клавиши Enter end. // Конец программы
Для компиляции программы необходимо выбрать пункт меню Project → Compile First (комбинация клавиш Ctrl + F9). Для запуска про­граммы на выполнение из среды Delphi предназначен пункт Run из меню Run (клавиша F9).
Среда программирования PascalABC.NET
Среда программирования PascalABC была создана в 2003 г. на фа­культете математики, механики и компьютерных наук Южного федераль­ного университета и представляла собой интегрированную оболочку со встроенным интерпретатором языка программирования Паскаль. В даль­нейшем система была полностью переработана на полноценный компиля­тор языка, близкого к Delphi, с расширениями, связанными с платформой .NET. Новая система получила название PascalABC.NET.
Среда PascalABC.NET является свободно распространяемой про­граммой и рекомендуется для самостоятельного обучения программирова­нию. Кроме того, для этой цели можно рекомендовать использовать Web­среду разработки ProgrammingABC.NET WDE, не требующую установки.
Программы, написанные в среде PascalABC.NET, не требуют допол­нительной русификации. В этих программах также не требуется директива компилятора {$APPTYPE CONSOLE}. В конце программы не требуется помещать оператор ReadLn для ожидания нажатия клавиши Enter. Текст программы для среды PascalABC.NET приведен в листинге 1.2.
Компиляция и запуск программы в PascalAPC.NET осуществляются аналогично.
Учитывая, что в учебных классах практикуется использование среды Delphi 2009, в следующих главах учебного пособия все примеры программ будут приведены для этой среды. Все рассматриваемые примеры легко адаптируются под среду PascalABC.NET.
9
Глава 1
Листинг 1.2. Вывести на экран приветствие в PascalABC.NET
program Example1_2; // Строка заголовка begin // Начало программы
// Вывод на экран приветствия: WriteLn('Поздравляем с началом занятий!'); end. // Конец программы
Отладка программ
Отладчик, содержащийся в любой среде разработки, позволяет вы­полнять трассировку программы. Трассировка – это процесс выполнения программы по шагам. Выполняя трассировку, программист может опреде­лить, соответствует ли реальный порядок выполнения инструкций разра­ботанному им алгоритму, и контролировать значения переменных.
Для начала трассировки в Delphi необходимо выполнить команду из меню Run: Step Over (клавиша F8) или Trace Into (клавиша F7). Выполне­ние программы начнется с первой инструкции. Инструкции программы выполняются последовательно, одна за другой по команде программиста. Выполняемая на очередном шаге инструкция выделяется в тексте кода специальным образом. Существуют два способа выполнить очередную ин­струкцию: без захода в подпрограмму (Step Over) и с заходом в подпро­грамму (Trace Into). В первом случае текущая инструкция выполняется це­ликом за один шаг, трассировка подпрограмм не выполняется. В режиме трассировки с заходом в подпрограмму осуществляется пошаговое выпол­нение всех операторов, содержащихся в подпрограмме.
Для запуска трассировки, начиная с некоторой инструкции, сущест­вует команда Run to Cursor (клавиша F4). В этом случае выполнение про­граммы осуществляется в реальном темпе до инструкции, в которой нахо­дится курсор. Это позволяет пропускать некоторые участки кода и быстро переходить к интересующей нас инструкции.
Для схожей цели существуют точки останова. Точка останова – спе­циальная метка, которая указывает на интересующую программиста инст­рукцию. Когда выполнение программы доходит до инструкции, помеченной точкой останова, среда разработки переходит в режим трассировки. Далее программист может либо продолжить выполнение программы в реальном времени, либо начать осуществлять пошаговое выполнение программы.
Во время трассировки можно наблюдать не только порядок выпол­нения инструкций программы, но и отслеживать значения переменных. Для этой цели служат два окна: Watch List и Local Variables. Эти окна становятся активными при начале трассировки.
В окне Watch List отображаются значения заданных переменных и выражений. Для добавления переменной необходимо кликнуть правой
10
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]