- •Ю.Е. Алексеев, а.В. Куров
- •Часть 4
- •Алексеев Юрий Евтихович Куров Андрей Владимирович
- •8. Символьный тип данных
- •8.1 Общие сведения и библиотечные функции
- •8.2 Примеры программ обработки символьных данных
- •8.3 Задания на обработку символьных матриц
- •9. Строки
- •9.1 Общие сведения и библиотечные функции
- •9.2 Примеры программ обработки строк (массивова символов)
- •9.3 Задания на обработку строк
- •10. Типы данных структура и объединение
- •10.1 Общие сведения о структурах
- •10.2 Примеры программ обработки структур
- •10.3 Задания на обработку структур
- •10.4 Объединения
- •10.5 Примеры программ обработки объединений
- •11. Файлы
- •11.1 Основные сведения о файлах
- •11.2 Библиотечные функции для работы с файлами
- •11.3 Примеры программ обработки текстовых файлов
- •11.4 Задания на обработку текстовых файлов.
- •11.5 Примеры программ обработки бинарных файлов
- •11.6 Задания на бинарные файлы.
- •12. Тип данных указатель
- •12.1 Общие сведения Объявления и присваивания
- •Операции с указателями
- •Приоритеты операций при работе с указателями.
- •Взаимосвязь массивов и указателей
- •12.2 Динамические переменные и массивы Динамические переменные
- •Динамические массивы
- •Двумерные динамические массивы
- •Доступ к элементам динамической матрицы
- •Библиотечные функции с для работы с динамическими переменными и массивами
- •Передача в функции динамических массивов
- •13 Динамические структуры данных
- •13.1 Списки Линейный список
- •Пример программы работы с однонаправленным списком
- •Пример программы работы с двунаправленным списком
- •13.2 Задания на обработку списков.
- •13.3 Деревья бинарные
- •Структура бинарного дерева
- •Примеры работ с бинарным деревом
- •Список литературы
- •Алфавитный указатель
- •Вопросы для самопроверки Символы
- •Структуры
- •Указатели
МГТУ им. Н.Э. Баумана
Факультет «Информатика и системы управления»
Кафедра «Программное обеспечение ЭВМ и информационные технологии»
Ю.Е. Алексеев, а.В. Куров
Практикум по программированию на языке C в среде VS C++
Часть 4
Электронное учебное издание
Учебное пособие
по дисциплине «Информатика»
Москва
(С) 2014 МГТУ им. Н.Э. БАУМАНА
2014
УДК 681.3.06(075)
Рецензенты к.т.н., доцент С.М.Авдеева, к.т.н., доцент Т.Н.Ничушкина
Алексеев Ю.Е., Куров А.В.
Практикум по программированию на языке C в среде VS C++. Часть 4: Учеб. пособие. –М.: МГТУ им. Н.Э.Баумана, 2014.- с.
В четвертой части пособия рассматривается работа со следующими типами и структурами данных: символьным, строковым, структурным, файловым и указателями.
Для каждого рассматриваемого типа приводится его определение, указываются отличительные особенности, рассматриваются операции, которые можно выполнять с данными каждого типа, а также приводятся сведения о стандартных функциях обработки этих данных.
Изложение материала сопровождается примерами программ, позволяющих лучше уяснить основные особенности работы с каждым конкретным типом данных. Большое внимание уделено работе с указателями, так как они играют особую роль в языке C. Рассмотрено использование указателей при работе с динамическими переменными, а также для организации динамических структур данных: списков и деревьев.
Пособие ориентировано на среду программирования VS C++ и содержит алгоритмы решения практических задач. Представлены полные комплекты заданий (не менее 25 вариантов), имеющих разнообразный характер, но одинаковый уровень сложности.
Материал пособия авторы используют при проведении практических занятий в МГТУ им.Н.Э. Баумана.
Для студентов первого курса машино- и приборостроительных специальностей. Может быть полезно преподавателям как сборник заданий при проведении лабораторных работ.
Рекомендовано НМС МГТУ им.Н.Э. Баумана
Алексеев Юрий Евтихович Куров Андрей Владимирович
Практикум по программированию на языке C в среде VS C++. Часть 4
Москва
(С) 2014 МГТУ им. Н.Э. БАУМАНА
Оглавление
8. СИМВОЛЬНЫЙ ТИП ДАННЫХ 6
8.1 Общие сведения и библиотечные функции 6
8.2 Примеры программ обработки символьных данных 11
8.3 Задания на обработку символьных матриц 17
9. СТРОКИ 23
9.1 Общие сведения и библиотечные функции 23
9.2 Примеры программ обработки строк (массивова символов) 32
9.3 Задания на обработку строк 42
10. ТИПЫ ДАННЫХ СТРУКТУРА И ОБЪЕДИНЕНИЕ 46
10.1 Общие сведения о структурах 46
10.2 Примеры программ обработки структур 48
10.3 Задания на обработку структур 55
10.4 Объединения 59
10.5 Примеры программ обработки объединений 60
11. ФАЙЛЫ 65
11.1 Основные сведения о файлах 65
11.2 Библиотечные функции для работы с файлами 66
11.3 Примеры программ обработки текстовых файлов 71
11.4 Задания на обработку текстовых файлов. 78
11.5 Примеры программ обработки бинарных файлов 81
11.6 Задания на бинарные файлы. 92
12. ТИП ДАННЫХ УКАЗАТЕЛЬ 99
12.1 Общие сведения 99
Объявления и присваивания 99
Операции с указателями 101
Приоритеты операций при работе с указателями. 104
Взаимосвязь массивов и указателей 105
12.2 Динамические переменные и массивы 105
Динамические переменные 105
Динамические массивы 106
Двумерные динамические массивы 108
Доступ к элементам динамической матрицы 112
Библиотечные функции С для работы с динамическими переменными и массивами 114
Передача в функции динамических массивов 117
13 ДИНАМИЧЕСКИЕ СТРУКТУРЫ ДАННЫХ 121
13.1 Списки 121
Линейный список 121
Пример программы работы с однонаправленным списком 122
Пример программы работы с двунаправленным списком 129
13.2 Задания на обработку списков. 134
13.3 Деревья бинарные 139
Структура бинарного дерева 140
Примеры работ с бинарным деревом 142
Список литературы 147
Алфавитный указатель 147
Вопросы для самопроверки 149
Введение
Данное пособие представляет собой четвертую часть пособия, посвященного изложению основ программирования и решения типовых инженерных задач на языке C в среде VS C++ . В данной части рассматриваются нечисловые и структурированные типы данных: символы, строки, структуры, указатели, файлы. Современный специалист при решении практических задач сталкивается с обработкой не только числовых данных, поэтому он должен владеть навыками обработки данных и других типов, представленных в используемом языке программирования.
В первом разделе данной части пособия рассматривается символьный тип данных. Авторы знакомят читателя с особенностями обработки символов в языке C, которые состоят в частности в том, что символьные данные можно обрабатывать так же, как целые, поскольку символы представляются в памяти ЭВМ своими кодами. Приводятся сведения о стандартных функциях обработки символов.
Второй раздел посвящен рассмотрению строк. Отмечается отсутствие в языке строкового типа данных и обращается внимание на то, что строка символов является одномерных символьным массивом, оканчивающимся нулевым символом. Рассматриваются функции ввода строк и особенности их использования. Отдельно рассматриваются проблемы, возникающие при вводе и выводе строк, содержащих в своем составе символы кириллицы. Авторы предлагают функции перекодировки, позволяющие справиться с этими затруднениями. Также приводятся сведения о стандартных функциях обработки строк.
В третьем разделе рассматриваются вопросы обработки структур. Приводятся правила объявления структур и обращения к полям структур. Обращено внимание на возможность передачи в функции массивов в качестве полей структур, что может помочь начинающим программистам избежать ошибок при передаче массивов в подпрограммы. Рассматривается частный случай структур – объединения, позволяющие экономить память в тех случаях, когда разные структуры в качестве значений одного поля должны иметь данные разных типов.
В четвертом разделе авторы подробно рассматривают работу с указателями, поскольку они играют особую роль в языке C. Приводятся правила и примеры объявления указателей на разные объекты языка – константы, переменные, функции, а также на переменные различных типов. Рассмотрены операции, выполняемые с указателями. Обращается внимание на взаимосвязь указателей и массивов в языке C. Подробно рассмотрены вопросы работы с динамическими данными, доступ к которым осуществляется с использованием указателей. Объясняются особенности выделения памяти и работы с динамическими переменными, одномерными и двумерными массивами, а также передачи этих данных в функции. Приводятся сведения о стандартных функциях для работы с динамической памятью, рассмотрено их использование в конкретных программах. Авторы также рассмотрели вопросы организации динамических структур данных, в частности однонаправленных и двунаправленных списков. Рассмотрен перечень операций, выполняемых со списками, приведены примеры программ, в которых каждая операция реализована в виде отдельной функции. Раздел завершается рассмотрением особой разновидности динамических структур – бинарных деревьев, играющих важную роль в программировании.
В заключительном разделе пособия рассматривается обработка файлов. Авторы знакомят читателя с особенностями открытия (подготовки к работе) файлов, приводят описание стандартных функций, обеспечивающих выполнение необходимых операций при работе с файлами. Приводятся примеры программ обработки файлов как в режиме последовательного доступа (для текстовых и бинарных файлов), так и в режиме прямого доступа для бинарных файлов.
Как и в предыдущих частях, в данном пособии краткое изложение теоретического материала сопровождается достаточным количеством примеров, что должно позволить студенту за ограниченное время познакомиться с новыми для него типами данных и освоить основные правила обработки этих данных.
Для закрепления изучаемого материала и приобретению необходимого опыта разработки программ обработки данных нечисловых и структурированных типов авторами предлагаются по каждой теме комплекты индивидуальных заданий, выполнение которых послужит приобретению навыков и умений при решении рассматриваемых задач.
Задания имеют индивидуальный характер, могут использоваться при проведении лабораторных работ, подготовке к рубежным контролям знаний, а также в качестве заданий при проведении контрольных мероприятий.
