Программирование. Процедурное программирование
Покупка
Основная коллекция
Издательство:
Сибирский федеральный университет
Год издания: 2016
Кол-во страниц: 92
Дополнительно
Вид издания:
Учебное пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-7638-3555-7
Артикул: 690677.01.99
Рассмотрены основные конструкции языка Delphi и базовые принципы
структурного программирования. Большое внимание уделено алгоритмам
работы с массивами, строками, структурами, текстовыми и типизированны-
ми файлами. Подробно изложены различные аспекты использования проце-
дур и функций, в том числе и рекурсивных.
Предназначено для студентов, обучающихся по программе бакалавриата
по направлению 02.03.01. «Математика. Компьютерные науки». Может быть
использовано в школах с углубленным изучением информатики.
Тематика:
ББК:
УДК:
ОКСО:
- 02.00.00: КОМПЬЮТЕРНЫЕ И ИНФОРМАЦИОННЫЕ НАУКИ
- ВО - Бакалавриат
- 02.03.01: Математика и компьютерные науки
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
Министерство образования и науки Российской Федерации Сибирский федеральный университет Е. В. Кучунова, Б. В. Олейников, О. М. Чередниченко ПРОГРАММИРОВАНИЕ Процедурное программирование Учебное пособие Красноярск СФУ 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
Оглавление 3 ОГЛАВЛЕНИЕ Введение ........................................................................................................ 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
Введение 4 ВВЕДЕНИЕ Настоящее учебное пособие предназначено для первоначального освоения языка программирования клона 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 рассмотрена тема создания модулей как отдельно компилируемых библиотек подпрограмм. Следует отметить, что в рамках ограниченного сеткой часов небольшого пособия сложно охватить все темы программирования в статической
Введение 5 памяти, поэтому некоторые разделы, связанные с определенными структурами данных, возможностями языка и алгоритмами, отводятся на самостоятельное изучение студентами и в данном пособии не рассматриваются. Несмотря на это, пособие должно помочь освоить базовый язык программирования и обрести навыки практического программирования разнообразных задач с использованием статической памяти. Учебное пособие не содержит материала, связанного с решением узкоспециализированных задач, а поэтому может быть использовано на уроках информатики в старших классах общеобразовательной школы.
Глава 1 6 Глава 1. ОСНОВНЫЕ ВОЗМОЖНОСТИ ПРОЦЕДУРНОГО ПРОГРАММИРОВАНИЯ ПО РАБОТЕ С ЧИСЛОВЫМИ ДАННЫМИ 1.1. Базовые понятия Алгоритм – порядок действий для достижения некоторого результата. Язык программирования – язык, на котором представляются алгоритм и требуемые данные. Различают языки программирования высокого уровня (языки, приближающиеся по используемым конструктивным элементам к естественным языкам) и языки программирования низкого уровня (ориентированные на машинную систему команд). Оператор – это отдельное слово (фраза), предусмотренное языком программирования и представляющее собой определенную инструкцию. Программа – это совокупность операторов. Программирование – процесс создания программы. Процесс создания и выполнения программы состоит из следующих этапов: 1) создание программы на исходном языке (обычно на языке высокого уровня); 2) получение объектного кода программы – код, получаемый после трансляции (компиляции или интерпретации) исходного кода; 3) связывание с необходимыми стандартными средствами (линковка); 4) получение исполняемого кода (машинный код). Среда программирования (среда разработки) – специальная программа, содержащая все необходимое для разработки и выполнения программ, в частности: редактор для написания программного (исходного) кода, компилятор, отладчик. В настоящее время существует большое количество разнообразных сред для написания программ на языках семейства Pascal. Одни из них коммерческие, например, Borland IDE, RAD-среды Delphi, другие свободно распространяемые (Lazarus, PascalABC.NET). В этой главе будут рассмотрены основные этапы создания простейшей программы и некоторые особенности написания программы для сред программирования Delphi 2009 и PascalABC.NET.
Основные возможности процедурного программирования по работе с числовыми данными 7 Среда программирования 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 относится к зарезервированным (ключевым) словам и указывает на то, что
Глава 1 8 создается программа с указанным далее в строке именем. В 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 используется и в других местах, но без точки, а с точкой запятой.
Основные возможности процедурного программирования по работе с числовыми данными 9 Листинг 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.
Глава 1 10 Листинг 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 отображаются значения заданных переменных и выражений. Для добавления переменной необходимо кликнуть правой