ISBN 978-5-9275-0801-3 Учебное пособие содержит 770 заданий по программированию и указания по их выполнению в средах Borland Delphi, Free Pascal Lazarus и PascalABC.NET. <...> Указания и примеры ориентированы на современные диалекты Паскаля: язык Delphi Pascal, реализованный в системах Borland Delphi 7.0, Turbo Delphi 2006 и Free Pascal Lazarus 0.9, и язык PascalABC.NET, реализованный в одноименной программной системе (данная система разрабатывается на мехмате ЮФУ под руководством доц. <...> В третьей части пособия содержатся справочные сведения по языкам Delphi Pascal и PascalABC.NET, которые могут оказаться полезными при 4 Предисловие выполнении учебных заданий. <...> Для более эффективной организации практикума по программированию автором настоящего пособия разработан электронный задачник Programming Taskbook, который содержит все задания, приведенные в пособии, и предоставляет учащимся следующие возможности: • отображение на экране текста задания и связанных с ним данных; • демонстрация правильных результатов для каждого задания; • предоставление исходных данных программе учащегося; • проверка правильности операций ввода-вывода; • анализ результатов, полученных программой; • запись в особый файл результатов информации о каждом тестовом испытании программы; • регистрация задания как выполненного после проведения серии успешных тестовых испытаний. <...> Кроме заданий, приведенных в настоящем пособии, задачник Programming Taskbook содержит 330 заданий начального уровня, посвященных скалярным типам данных, управляющим операторам и разработке процедур и функций с числовыми параметрами [3, 10]. <...> Подробное описание процесса выполнения заданий с использованием задачника Programming Taskbook приводится в п. <...> Дополнительную информацию о задачнике Programming Taskbook можно получить на сайте http://ptaskbook.com/. <...> Кроме того, исключена из рассмотрения система Pascal ABC, поддержка которой была прекращена в 2007 г., а к набору рассматриваемых реализаций языка Delphi Pascal добавлена система Free Pascal Lazarus. <...> 17) нужно учитывать дополнительные условия: • данные <...>
Практикум_по_программированию_на_языке_Паскаль_Массивы,_строки,_файлы,_рекурсия,_линейные_динамические_структуры,_бинарные_деревья.pdf
УДК 004.438(076.5)
ББК 32.973.26-018.1я73
А 16
Печатается по решению редакционно-издательского совета
Южного федерального университета
Рецензент:
к. ф.-м. н., доцент кафедры алгебры и дискретной
математики факультета математики, механики и компьютерных наук
Южного федерального университета С. С. Михалкович
Учебное пособие подготовлено и издано в рамках национального проекта
«Образование» по «Программе развития федерального государственного
образовательного учреждения высшего профессионального образования
«Южный федеральный университет» на 2007-2010 гг.»
Абрамян М. Э.
А16 Практикум по программированию на языке Паскаль: Массивы, строки, файлы,
рекурсия, линейные динамические структуры, бинарные деревья. – 7-е изд.,
перераб. и доп. – Ростов н/Д.: Изд-во ЮФУ, 2010. – 276 с.: ил.
ISBN 978-5-9275-0801-3
Учебное пособие содержит 770 заданий по программированию и указания по
их выполнению в средах Borland Delphi, Free Pascal Lazarus и PascalABC.NET.
Приводятся решения типовых задач и необходимый справочный материал.
Для преподавателей программирования, старшеклассников и студентов.
ISBN 978-5-9275-0801-3
УДК 004.438(076.5)
ББК 32.973.26-018.1я73
© М. Э. Абрамян, 2010
© Оформление. Макет. Издательство
Южного федерального университета, 2010
Стр.2
273
Содержание
Предисловие...................................................................................................................3
Часть I. Учебные задания................................................................................5
1. Предварительные замечания ....................................................................................5
2. Минимумы и максимумы: группа Minmax.............................................................6
3. Одномерные массивы: группа Array .......................................................................9
3.1. Формирование массива и вывод его элементов ..............................................9
3.2. Анализ элементов массива...............................................................................10
3.3. Работа с несколькими массивами ...................................................................13
3.4. Преобразование массива ..................................................................................14
3.4.1. Изменение элементов массива ..............................................................14
3.4.2. Удаление и вставка элементов ..............................................................16
3.4.3. Сортировка массива ...............................................................................17
3.5. Серии целых чисел ...........................................................................................18
3.6. Множества точек на плоскости .......................................................................19
4. Двумерные массивы (матрицы): группа Matrix....................................................21
4.1. Формирование матрицы и вывод ее элементов.............................................21
4.2. Анализ элементов матрицы .............................................................................23
4.3. Преобразование матрицы.................................................................................25
4.4. Диагонали квадратной матрицы......................................................................27
5. Символы и строки: группа String...........................................................................29
5.1. Символы и их коды. Формирование строк ....................................................29
5.2. Посимвольный анализ и преобразование строк. Строки и числа................29
5.3. Обработка строк с помощью стандартных функций. Поиск и замена........30
5.4. Анализ и преобразование слов в строке.........................................................31
5.5. Дополнительные задания на обработку строк...............................................33
6. Типизированные файлы: группа File.....................................................................34
6.1. Основные операции с типизированными файлами.......................................35
6.1.1. Создание файла, ввод и вывод его элементов .....................................35
6.1.2. Преобразование файла ...........................................................................37
6.1.3. Обработка нетипизированных файлов .................................................38
6.2. Работа с несколькими числовыми файлами. Файлы-архивы.......................38
6.3. Cимвольные и строковые файлы.....................................................................39
6.4. Использование файлов для работы с матрицами ..........................................41
7. Текстовые файлы: группа Text...............................................................................43
7.1. Основные операции с текстовыми файлами..................................................44
7.2. Анализ и форматирование текста ...................................................................45
7.3. Текстовые файлы с числовой информацией..................................................47
7.4. Дополнительные задания на обработку текстовых файлов .........................49
8. Составные типы данных в процедурах и функциях: группа Param ...................50
8.1. Одномерные и двумерные массивы................................................................50
8.2. Строки ................................................................................................................55
Стр.273
274
Содержание
8.3. Файлы ................................................................................................................57
8.4. Записи ................................................................................................................59
9. Рекурсия: группа Recur...........................................................................................61
9.1. Простейшие рекурсивные алгоритмы ............................................................61
9.2. Разбор выражений ............................................................................................63
9.3. Перебор с возвратом.........................................................................................65
10. Динамические структуры данных: группа Dynamic..........................................66
10.1. Стек ..................................................................................................................66
10.2. Очередь............................................................................................................68
10.3. Двусвязный список.........................................................................................71
10.4. Список с барьерным элементом....................................................................78
11. Бинарные деревья: группа Tree............................................................................81
11.1. Анализ бинарного дерева...............................................................................82
11.2. Формирование бинарного дерева .................................................................84
11.3. Преобразование бинарного дерева ...............................................................86
11.4. Бинарные деревья с обратной связью ..........................................................87
11.5. Бинарные деревья поиска ..............................................................................88
11.6. Бинарные деревья разбора выражений.........................................................91
11.7. Деревья общего вида......................................................................................93
Часть II. Указания и решения........................................................................ 96
12. Указания.................................................................................................................96
12.1. Минимумы и максимумы ..............................................................................96
12.2. Одномерные массивы.....................................................................................97
12.3. Двумерные массивы (матрицы) ..................................................................104
12.4. Символы и строки.........................................................................................107
12.5. Типизированные файлы...............................................................................111
12.6. Текстовые файлы..........................................................................................116
12.7. Составные типы данных в процедурах и функциях .................................121
12.8. Рекурсия.........................................................................................................125
12.9. Динамические структуры данных...............................................................128
12.10. Бинарные деревья .......................................................................................129
13. Решения................................................................................................................137
13.1. Минимумы и максимумы: Minmax1...........................................................137
13.2. Одномерные массивы...................................................................................144
13.2.1. Массивы в Паскале: общее описание .............................................144
13.2.2. Ввод и вывод элементов массива: Array7 ......................................147
13.2.3. Анализ элементов массива: Array47 ...............................................147
13.2.4. Преобразование массива: Array79 ..................................................148
13.2.5. Серии целых чисел: Array116..........................................................149
13.3. Двумерные массивы (матрицы) ..................................................................150
13.3.1. Ввод и вывод элементов матрицы: Matrix7 ...................................150
13.3.2. Диагонали квадратной матрицы: Matrix82.....................................153
13.4. Символы и строки.........................................................................................154
13.4.1. Символы и строки в Паскале: общее описание .............................154
13.4.2. Формирование строк: String10 ........................................................157
13.4.3. Строки и числа: String19 ..................................................................159
13.4.4. Анализ слов в строке: String41 ........................................................161
Стр.274
275
13.5. Типизированные файлы ...............................................................................163
13.5.1. Создание файла, ввод и вывод его элементов: File48 ...................163
13.5.2. Преобразование файла: File25 .........................................................169
13.5.3. Работа с нетипизированными файлами: File43..............................172
13.6. Текстовые файлы ..........................................................................................175
13.6.1. Создание текстового файла: Text1 ..................................................175
13.6.2. Анализ текстового файла: Text4......................................................178
13.6.3. Преобразование текстового файла: Text21.....................................179
13.7. Составные типы данных в процедурах и функциях..................................182
13.7.1. Передача массивов в качестве параметров,
работа с открытыми и динамическими массивами: Param1.........182
13.7.2. Работа с записями: Param59 .............................................................187
13.8. Рекурсия.........................................................................................................189
13.8.1. Простейшие рекурсивные алгоритмы: Recur1...............................189
13.8.2. Разбор выражений: Recur14, Recur15, Recur16, Recur18 ..............191
13.8.3. Перебор с возвратом: Recur25 .........................................................200
13.9. Динамические структуры данных...............................................................205
13.9.1. Анализ существующей динамической структуры: Dynamic2......205
13.9.2. Добавление элемента к динамической структуре: Dynamic3.......210
13.9.3. Удаление элемента из динамической структуры: Dynamic5........211
13.9.4. Двусвязные динамические структуры: Dynamic30 .......................212
13.9.5. Циклические динамические структуры: Dynamic55 .....................214
13.9.6. Перегруппировка элементов динамической
структуры: Dynamic8, Dynamic10, Dynamic49...............................215
13.9.7. Создание процедур и функций для работы
с динамической структурой: Dynamic11 ........................................217
13.10. Бинарные деревья .......................................................................................219
13.10.1. Анализ бинарного дерева: Tree2, Tree12 ......................................219
13.10.2. Формирование бинарного дерева: Tree32 ....................................223
13.10.3. Преобразование бинарного дерева: Tree40 ..................................224
13.10.4. Бинарные деревья с обратной связью: Tree49..............................226
13.10.5. Бинарные деревья поиска, сортировка деревом: Tree65.............228
13.10.6. Бинарные деревья разбора выражений: Tree74, Tree75 ..............231
13.10.7. Деревья общего вида: Tree86 .........................................................235
Часть III. Справочные сведения .................................................................239
14. Программирование на языке Паскаль: строки, файлы, указатели .................239
14.1. Работа с символами и строками ..................................................................239
14.1.1. Основные процедуры и функции ....................................................239
14.1.2. Дополнительные функции Delphi Pascal для обработки строк ....240
14.1.3. Дополнительные функции PascalABC.NET
для обработки строк..........................................................................243
14.2. Работа с файлами ..........................................................................................245
14.2.1. Файловые типы и системные файловые переменные ...................245
14.2.2. Обработка ошибок ввода-вывода ....................................................246
14.2.3. Процедуры и функции для работы с файлами любого типа ........247
14.2.4. Процедуры и функции для работы с типизированными
и нетипизированными файлами ......................................................249
Стр.275
276
Содержание
14.2.5. Процедуры и функции для работы с текстовыми файлами .........249
14.2.6. Ввод-вывод для типизированных файлов ......................................250
14.2.7. Ввод-вывод для нетипизированных файлов ..................................251
14.2.8. Ввод-вывод для текстовых файлов .................................................252
14.2.9. Дополнительные функции Delphi Pascal и PascalABC.NET
для работы с файлами и каталогами ...............................................254
14.2.10. Имена-синонимы Delphi Pascal и PascalABC.NET
для работы с файлами.......................................................................256
14.3. Работа с указателями....................................................................................256
14.3.1. Типы переменных-указателей .........................................................256
14.3.2. Нулевой указатель, операции над указателями .............................256
14.3.3. Выделение и освобождение динамической памяти ......................257
15. Кодовые таблицы символов ...............................................................................257
16. Форматирование текста программ ....................................................................258
17. Задачник Programming Taskbook .......................................................................261
17.1. Назначение и состав задачника Programming Taskbook...........................261
17.2. Вспомогательные типы и процедуры, используемые
при выполнении учебных заданий .............................................................263
17.3. Отладочные средства задачника .................................................................265
17.3.1. Раздел отладки и его элементы .......................................................266
17.3.2. Процедуры Show и ShowLine ..........................................................267
17.3.3. Вспомогательные процедуры, связанные
с выводом отладочной информации ...............................................268
17.4. Особенности реализации задачника для системы PascalABC.NET ........269
Литература .................................................................................................................271
Подписано в печать 24.08.2010 г. Формат 60х84 1/16.
Усл. печ. л. 16,04. Уч.-изд. лист 22,22. Тираж 400 экз. Заказ № 1240.
Типография Южного федерального университета
344090, г. Ростов-на-Дону, пр. Стачки, 200/1, тел (863) 247-80-51.
Стр.276