Национальный цифровой ресурс Руконт - межотраслевая электронная библиотека (ЭБС) на базе технологии Контекстум (всего произведений: 634655)
Контекстум
.

От Си к Си++ (500,00 руб.)

0   0
Первый авторКаширин И. Ю.
АвторыНовичков В. С.
ИздательствоМ.: Горячая линия – Телеком
Страниц335
ID202826
АннотацияУчебное пособие содержит необходимые теоретические сведения и набор упражнений и задач различной степени сложности, позволяющих приобрести навыки практического программирования на алгоритмических языках С и С++ (Си и Си++) и проконтролировать усвоение материала. Практические задания для программирования на С++ имеют «сквозную» структуру – распределены по мере изложения разделов. Материал книги успешно апробирован авторами в высших технических учебных заведениях.
Кем рекомендованоУМО по университетскому политехническому образованию в качестве учебного пособия для студентов высших учебных заведений, обучающихся по специальности «Программное обеспечение вычислительной техники и автоматизированных систем»
Кому рекомендованоДля студентов высших и средних учебных заведений, может быть использована начинающими программистами при изучении алгоритмических языков С и С++.
ISBN978-5-9912-0259-6
УДК004.4
ББК32.973
Каширин, И.Ю. От Си к Си++ : учеб. пособие / В.С. Новичков; И.Ю. Каширин .— 2-е изд., стер. — Москва : Горячая линия – Телеком, 2012 .— 335 с. : ил. — ISBN 978-5-9912-0259-6 .— URL: https://rucont.ru/efd/202826 (дата обращения: 24.04.2024)

Предпросмотр (выдержки из произведения)

И. Ю. Каширин, В. С. Новичков От С к С++ 2-е издание, стереотипное Допущено УМО по университетскому политехническому образованию в качестве учебного пособия для студентов высших учебных заведений, обучающихся по специальности «Программное обеспечение вычислительной техники и автоматизированных систем» Москва Горячая линия - Телеком 2012 ББК 32.973 УДК 681.33 К31 Каширин И. Ю., Новичков В. С. <...> ББК 32.973 Адрес издательства в Интернет WWW.TECHBOOK.RU Учебное издание Каширин Игорь Юрьевич, Новичков Валентин Семенович От С к С++: Учебное пособие 2-е издание, стереотипное Редактор П. В. <...> Первоначально составляется укрупненная схема алгоритма, в которой отражаются наиболее важные и существенные связи 6 Глава 1. <...> Программирование линейных алгоритмов между исследуемыми процессами (или частями процесса). <...> Программирование линейных алгоритмов Прежде чем приступать к составлению непосредственно программ на языке, рассмотрим вкратце первый этап программирования. <...> Схема алгоритма – это графический способ его представления с элементами словесной записи. <...> Программирование линейных алгоритмов Т а б л и ц а 1.1 Наименование символа Обозначение и размеры Выполнение операции или группы операций, в результате которых изменяются значение, форма представления или расположение данных Выбор направления выполнения алгоритма или программы в зависимости от некоторых условий Выполнение операций, меняющих команды или группы команд a Процесс (вычислительный блок) Функция b Решение (логический блок) Модификация (заголовок цикла) 0,25a Предопределенный процесс (подпрограмма) 0,15a Соединитель Указание связи между разъединенными частями схем алгоритмов и программ, расположенных на разных листах 0,6a 0,5a 0,25a a Ввод-вывод Указание связи между прерванными линиями потока, связывающими символами 0,5a 0,2a Межстраничный соединитель Начало, конец, прерывание процесса обработки данных или выполнения программы Использование ранее созданных или отдельно <...>
От_Си_к_Си++.pdf
Стр.1
От_Си_к_Си++_(1).pdf
Стр.1
Стр.2
Стр.3
Стр.4
Стр.329
Стр.330
Стр.331
Стр.332
Стр.333
От_Си_к_Си++.pdf
Стр.1
От_Си_к_Си++_(1).pdf
И. Ю. Каширин, В. С. Новичков От С к С++ 2-е издание, стереотипное Допущено УМО по университетскому политехническому образованию в качестве учебного пособия для студентов высших учебных заведений, обучающихся по специальности «Программное обеспечение вычислительной техники и автоматизированных систем» Москва Горячая линия - Телеком 2012
Стр.1
Каширин И. Ю., Новичков В. С. К31 От С к С++: Учебное пособие для вузов. – 2-е изд., стереотип. – М.: Горячая линия – Телеком, 2012. – 334 с.: ил. ISBN 978-5-9912-0259-6. Учебное пособие содержит необходимые теоретические сведения и набор упражнений и задач различной степени сложности, позволяющих приобрести навыки практического программирования на алгоритмических языках С и С++ (Си и Си++) и проконтролировать усвоение материала. Практические задания для программирования на С++ имеют «сквозную» структуру – распределены по мере изложения разделов. Материал книги успешно апробирован авторами в высших технических учебных заведениях. Для студентов высших и средних учебных заведений, может быть использована начинающими программистами при изучении алгоритмических языков С и С++. ББК 32.973 Адрес издательства в Интернет WWW.TECHBOOK.RU Учебное издание Каширин Игорь Юрьевич, Новичков Валентин Семенович От С к С++: Учебное пособие 2-е издание, стереотипное Редактор П. В. Румянцев Художник В. Г. Ситников Подготовка оригинал-макета И. М. Чумаковой . Подписано к печати 25.03.2012. Формат 60×88 1/16. Усл. печ. л. 21. Тираж 200 экз. (1-й завод 100 экз.) ISBN 978-5-9912-0259-6 © И. Ю. Каширин, В. С. Новичков, 2005, 2012 © Оформление издательства «Горячая линия – Телеком», 2012
Стр.2
ПРЕДИСЛОВИЕ Среди современных алгоритмических языков языки С и С++ занимают, пожалуй, первое место по распространенности и разнообразию версий. Они относятся к семейству универсальных языков программирования, т. е. ориентированных на весьма широкий круг задач, которые могут решаться при помощи ЭВМ. Кроме того, авторы этой книги признают лидерство языков С и С++ среди известных универсальных языков как наиболее концептуально целостных. Дело в том, что разработка любого из инструментальных программных средств, к которым относятся и языки программирования, основана на строгом теоретическом базисе. Теория разработки алгоритмических языков учитывает отлаживаемость программ (как быстрый поиск ошибок), гибкость языка при внесении текущих изменений в программу, возможности дальнейшего развития самого языка и его средств программистом и т. д. В этом отношении язык С довольно полно отвечает основным требованиям теории, являясь последовательным преемником оригинальных решений, воплощенных ранее в цепочке поколений языков Ассемблера, Фортрана, Алгола. Взяв из них самое лучшее, язык С приобрел множество новых свойств, сделавших его одним из первых универсальных функциональных языков. Язык программирования С разработан сотрудниками фирмы Bell Labs Деннисом Ритчи и Кеном Томпсоном в 1972 г. во время их совместной работы над операционной системой UNIX на ЭВМ РDР-11. Однако его популярность быстро переросла рамки конкретной ЭВМ, конкретной операционной системы и конкретных задач системного программирования. В настоящее время ни одна инструментальная операционная система не может считаться полной, если в ее состав не входит компилятор языка С. В некотором смысле язык С является самым универсальным языком, так как кроме набора средств, присущих современным языкам программирования высокого уровня (структурность, модульность, определяемые типы данных), в него включены средства для программирования на уровне Ассемблера (указатели, побитовые операции, операции сдвига). Большой набор операторов и операций позволяет писать компактные и эффективные программы. Однако такие мощные средства требуют от программиста осторожности, аккуратности и хорошего знания языка со всеми его преимуществами и недостатками. В настоящей книге рассматриваются реализации С и С++, разработанные фирмой Borland. 3
Стр.3
И. Ю. Каширин, В. С.Новичков. От С к С++ Язык С – структурированный, модульный, компилируемый, универсальный язык, традиционно используемый для системного программирования. Он является переносимым языком, так как прикладные программы, написанные на нем, могут быть легко перенесены с одного компьютера на другой, даже если они имеют различные операционные системы. Язык С может использоваться практически для любых задач. Строгое следование авторов языка С функциональной концепции позволило изящно достроить язык и перевести его в объектно-ориентированную версию – С++, практически не меняя ни старой синтаксической, ни семантической основы. Быстрое развитие языка программирования С++ с появлением новых версий, использующих идеи CASE-технологии, свидетельствует о том, что идеология С не только современна, но и будет иметь большое будущее. Настоящая книга состоит из двух основных частей, описывающих соответственно программирование на языках C и C++. Для чтения книги практически не нужно иметь навыков программирования на каких-либо более простых алгоритмических языках. В то же время читателю, уже знакомому с языком С, может быть рекомендовано начинать чтение с более поздних глав, посвященных программированию на языке С++. Практические упражнения, приведенные в конце каждой главы, имеют различную степень сложности и значительно облегчат понимание материала при их выполнении. Книга может быть использована как для самостоятельного изучения, так и для чтения курса лекций с лабораторным практикумом в высших учебных заведениях. 4
Стр.4
Оглавление ПРЕДИСЛОВИЕ.............................................................................................. 3 ГЛАВА 1. ПРОГРАММИРОВАНИЕ ЛИНЕЙНЫХ АЛГОРИТМОВ........ 5 1.1. ЭТАПЫ РЕШЕНИЯ ЗАДАЧ НА ЭВМ.............................................................. 5 1.2. РАЗРАБОТКА АЛГОРИТМА РЕШЕНИЯ ЗАДАЧИ............................................. 9 1.2.1. Понятие алгоритма ......................................................................... 9 1.2.2. Алгоритмизация............................................................................ 11 1.2.3. Схемы алгоритмов........................................................................ 12 1.3. ПОСТРОЕНИЕ ПРОСТЕЙШИХ ПРОГРАММ .................................................. 15 1.3.1. Структура программы.................................................................. 16 1.3.2. Идентификаторы........................................................................... 17 1.3.3. Константы...................................................................................... 18 1.3.4. Арифметические операции .......................................................... 20 1.3.5. Математические функции............................................................ 22 1.3.6. Операция присваивания............................................................... 23 1.3.7. Функции ввода и вывода.............................................................. 24 1.3.8. Основные типы данных................................................................ 26 1.4. СТИЛЬ ЗАПИСИ ПРОГРАММ НА ЯЗЫКЕ С................................................... 27 1.5. ПРИМЕР СОСТАВЛЕНИЯ ЛИНЕЙНОЙ ПРОГРАММЫ.................................... 28 Вопросы для самоконтроля ................................................................... 30 Упражнения............................................................................................. 31 ГЛАВА 2. ПРОГРАММИРОВАНИЕ РАЗВЕТВЛЯЮЩИХСЯ АЛГОРИТМОВ ............................................................................................. 35 2.1. ПОНЯТИЕ РАЗВЕТВЛЯЮЩЕГОСЯ АЛГОРИТМА .......................................... 35 2.2. ОПЕРАЦИИ ЛОГИЧЕСКОГО ТИПА .............................................................. 36 2.3. УСЛОВНЫЙ ОПЕРАТОР.............................................................................. 37 2.4. ОПЕРАЦИЯ УСЛОВИЯ................................................................................ 40 2.5. ОПЕРАТОР-ПЕРЕКЛЮЧАТЕЛЬ.................................................................... 41 2.6. ПРИМЕР СОСТАВЛЕНИЯ РАЗВЕТВЛЯЮЩЕЙСЯ ПРОГРАММЫ..................... 43 Упражнения............................................................................................. 44 2.7. ПОБИТОВЫЕ ОПЕРАЦИИ ........................................................................... 48 Вопросы для самоконтроля ................................................................... 49 Дополнительные упражнения................................................................ 50 ГЛАВА 3. ПРОГРАММИРОВАНИЕ ЦИКЛИЧЕСКИХ АЛГОРИТМОВ ............................................................................................. 52 3.1. ПОНЯТИЕ ЦИКЛИЧЕСКОГО АЛГОРИТМА................................................... 52 3.1.1. Определение цикла....................................................................... 52 3.1.2. Структурограммы......................................................................... 54 329
Стр.329
И. Ю. Каширин, В. С.Новичков. От С к С++ 3.1.3. Циклы с известным числом повторений..................................... 55 3.1.4. Итерационные циклы ................................................................... 58 3.1.5. Вложенные циклы ........................................................................ 59 3.2. ПРОГРАММИРОВАНИЕ ЦИКЛИЧЕСКИХ АЛГОРИТМОВ С ИЗВЕСТНЫМ ЧИСЛОМ ПОВТОРЕНИЙ..................................................................................... 61 3.2.1. Оператор цикла с параметром..................................................... 61 3.2.2. Табулирование функции .............................................................. 62 3.2.3. Вычисление конечных сумм и произведений............................ 63 Вопросы для самоконтроля ................................................................... 65 Упражнения............................................................................................. 66 3.3. КОНСТРУИРОВАНИЕ ПРОГРАММ ЦИКЛИЧЕСКОЙ СТРУКТУРЫ С НЕИЗВЕСТНЫМ ЧИСЛОМ ПОВТОРЕНИЙ............................................................ 69 3.3.1. Оператор цикла с предусловием ................................................. 69 3.3.2. Оператор цикла с постусловием.................................................. 71 3.3.3. Операция «запятая»...................................................................... 75 3.3.4. Пример циклической программы................................................ 75 Вопросы для самоконтроля ................................................................... 77 Дополнительные упражнения................................................................ 77 3.3.5. Итерационные циклы. Вычисление суммы ряда ....................... 79 3.3.6. Метод итерации для уточнения корней...................................... 82 Вопросы для самоконтроля ................................................................... 84 Упражнения............................................................................................. 84 3.4. ПРОЕКТИРОВАНИЕ АЛГОРИТМОВ И ПРОГРАММ СО СТРУКТУРОЙ ВЛОЖЕННЫХ ЦИКЛОВ...................................................................................... 88 3.4.1. Табулирование функций от нескольких переменных ............... 89 3.4.2. Вычисление кратных сумм и произведений............................... 91 Вопросы для самоконтроля ................................................................... 93 Упражнения............................................................................................. 93 ГЛАВА 4. МАССИВЫ И УКАЗАТЕЛИ..................................................... 96 4.1. МАССИВЫ................................................................................................. 96 4.1.1. Описание массива......................................................................... 96 4.1.2. Одномерные массивы................................................................... 97 4.1.3. Двумерные массивы ................................................................... 101 4.1.4. Ввод-вывод массивов ................................................................. 103 4.1.5. Примеры программирования задач с использованием массивов ................................................................. 105 4.1.6. Инициализация массивов........................................................... 110 Вопросы для самоконтроля ................................................................. 111 Упражнения........................................................................................... 112 330
Стр.330
Оглавление 4.2. УКАЗАТЕЛИ............................................................................................. 114 4.2.1. Описание указателей .................................................................. 114 4.2.2. Адресные операции .................................................................... 114 4.2.3. Инициализация указателей ........................................................ 115 4.2.4. Особенности использования массивов и указателей в программе........................................................................................... 116 4.2.5. Ввод-вывод данных с помощью указателей............................. 117 4.2.6. Пример программирования задачи с использованием указателей.............................................................................................. 119 Вопросы для самоконтроля ................................................................. 121 Упражнение........................................................................................... 121 ГЛАВА 5. ФУНКЦИИ................................................................................ 122 5.1. ОСНОВНЫЕ ПОНЯТИЯ ............................................................................. 122 5.1.1. Вспомогательные, или подчиненные, алгоритмы ................... 122 5.1.2. Понятие функции........................................................................ 124 5.1.3. Определение функции................................................................ 125 5.1.4. Описание функции ..................................................................... 126 5.1.5. Вызов функции ........................................................................... 129 5.2. ОБМЕН ИНФОРМАЦИЕЙ МЕЖДУ ФУНКЦИЯМИ........................................ 131 5.2.1. Оператор возврата ...................................................................... 131 5.2.2. Передача адреса в функцию ...................................................... 131 5.2.3. Библиотечные функции.............................................................. 134 5.2.4. Примеры программ с функциями.............................................. 134 Упражнения........................................................................................... 138 5.3. ОСОБЕННОСТИ ИСПОЛЬЗОВАНИЯ МАССИВОВ И УКАЗАТЕЛЕЙ В ФУНКЦИЯХ.................................................................................................. 140 5.3.1. Пример составления программы............................................... 145 Упражнения........................................................................................... 148 5.4. ФУНКЦИИ РАБОТЫ С ТЕКСТОВЫМИ СТРОКАМИ И ФРАГМЕНТАМИ ОПЕРАТИВНОЙ ПАМЯТИ ................................................................................ 151 5.4.1. Пример программы с массивами и указателями в функциях .153 Вопросы для самоконтроля ................................................................. 155 Упражнения........................................................................................... 155 Дополнительные упражнения.............................................................. 157 5.5. РЕКУРСИИ............................................................................................... 159 5.5.1. Понятие рекурсии....................................................................... 159 5.5.2. Техника построения рекурсивных алгоритмов........................ 161 5.5.3. Формы рекурсий ......................................................................... 164 5.5.3.1. Простая линейная рекурсия ............................................. 164 5.5.3.2. Параллельная рекурсия .................................................... 165 331
Стр.331
И. Ю. Каширин, В. С.Новичков. От С к С++ 5.5.3.3. Взаимная рекурсия............................................................ 165 5.5.3.4. Рекурсия более высокого порядка................................... 167 5.5.4. Рекурсия и итерация................................................................... 167 5.5.5. Пример составления программы............................................... 169 Вопросы для самоконтроля ................................................................. 172 Упражнения........................................................................................... 173 ГЛАВА 6. СТРУКТУРИРОВАННЫЕ ТИПЫ ДАННЫХ........................ 175 6.1. ОПРЕДЕЛЕНИЕ СТРУКТУРЫ..................................................................... 175 6.1.1. Пример составления программы............................................... 177 Упражнения........................................................................................... 181 6.2. СТРУКТУРА ТИПА ПОЛЯ БИТОВ............................................................... 184 6.3. ОБЪЕДИНЕНИЕ........................................................................................ 184 6.4. ОПЕРАЦИИ НАД СТРУКТУРАМИ И ИХ ЭЛЕМЕНТАМИ ............................. 185 6.5. СТРУКТУРЫ И ФУНКЦИИ......................................................................... 186 6.6. ПЕРЕМЕННЫЕ СТРУКТУРЫ...................................................................... 187 6.7. ПРИМЕР ПРОГРАММЫ СО СТРУКТУРАМИ................................................ 189 Вопросы для самоконтроля ................................................................. 192 Упражнения........................................................................................... 193 ГЛАВА 7. ФАЙЛЫ..................................................................................... 196 7.1. ОПРЕДЕЛЕНИЕ ФАЙЛА............................................................................ 196 7.2. ОТКРЫТИЕ ФАЙЛА.................................................................................. 196 7.3. ЗАКРЫТИЕ ФАЙЛА................................................................................... 198 7.4. ВВОД-ВЫВОД ФАЙЛА.............................................................................. 199 7.4.1. Ввод-вывод символа................................................................... 199 7.4.2. Ввод-вывод строки ..................................................................... 201 7.4.3. Ввод-вывод целого ..................................................................... 201 7.4.4. Форматированный ввод-вывод.................................................. 201 7.4.5. Ввод-вывод блока ....................................................................... 202 Упражнения........................................................................................... 202 7.5. ПРОИЗВОЛЬНЫЙ ДОСТУП К ФАЙЛУ ........................................................ 204 7.6. ПРИМЕР ПРОГРАММЫ С ФАЙЛАМИ......................................................... 206 Вопросы для самоконтроля ................................................................. 210 Дополнительные упражнения.............................................................. 211 ГЛАВА 8. ДИРЕКТИВЫ ПРЕПРОЦЕССОРА......................................... 213 8.1. ПРЕПРОЦЕССОР ЯЗЫКА С ....................................................................... 213 8.2. ВКЛЮЧЕНИЕ В ТЕКСТ ПРОГРАММЫ ВНЕШНЕГО ФАЙЛА......................... 213 8.3. ВЫПОЛНЕНИЕ МАКРОПОДСТАНОВОК..................................................... 214 8.4. СТАНДАРТНЫЕ МАКРООПРЕДЕЛЕНИЯ .................................................... 216 8.5. УСЛОВНАЯ КОМПИЛЯЦИЯ ...................................................................... 216 Вопросы для самоконтроля ................................................................. 218 332
Стр.332
Оглавление Упражнение........................................................................................... 219 ГЛАВА 9. КЛАССЫ С++ ........................................................................... 220 9.1. КОНЦЕПЦИЯ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО ПРОГРАММИРОВАНИЯ В ЯЗЫКЕ С++ ................................................................................................. 220 9.2. ПОНЯТИЕ «КЛАСС»................................................................................. 221 9.3. УПРАВЛЕНИЕ ДОСТУПОМ К ЭЛЕМЕНТАМ ДАННЫХ КЛАССОВ ................ 223 9.4. ОПРЕДЕЛЕНИЕ ФУНКЦИЙ-ЧЛЕНОВ КЛАССА (МЕТОДОВ)......................... 225 9.5. ОБЪЕКТЫ КЛАССОВ ................................................................................ 227 9.6. ПРИМЕР ПРОГРАММЫ С КЛАССАМИ....................................................... 229 Вопросы для самоконтроля ................................................................. 230 Упражнения........................................................................................... 231 ГЛАВА 10. КОНСТРУКТОРЫ И ДЕСТРУКТОРЫ................................. 232 10.1. КОНСТРУКТОРЫ КЛАССОВ.................................................................... 232 10.2. ОПЕРАЦИЯ ССЫЛКИ.............................................................................. 235 10.3. ДЕСТРУКТОРЫ КЛАССОВ ...................................................................... 236 10.4. ПРИМЕР ПРОГРАММЫ С КОНСТРУКТОРАМИ И ДЕСТРУКТОРАМИ ......... 237 Вопросы для самоконтроля ................................................................. 238 Упражнения........................................................................................... 239 ГЛАВА 11. ПЕРЕГРУЖАЕМЫЕ ОПЕРАЦИИ........................................ 240 11.1. ПОНЯТИЕ ПЕРЕГРУЗКИ ОПЕРАЦИЙ ....................................................... 240 11.2. ПЕРЕГРУЗКА РАЗЛИЧНЫХ ОПЕРАЦИЙ................................................... 241 11.3. ПРИМЕР ПРОГРАММЫ С ПЕРЕГРУЗКОЙ ОПЕРАЦИЙ............................... 242 Вопросы для самоконтроля ................................................................. 243 Упражнения........................................................................................... 243 ГЛАВА 12. ПОТОКИ ВВОДА-ВЫВОДА................................................. 244 12.1. КОНЦЕПЦИЯ ПОТОКОВ ......................................................................... 244 12.2. ОПЕРАЦИИ ВСТАВКИ В ПОТОК.............................................................. 244 12.3. УПРАВЛЕНИЕ ФОРМАТОМ..................................................................... 245 12.4. ОПЕРАЦИИ ВСТАВКИ, ОПРЕДЕЛЯЕМЫЕ ПОЛЬЗОВАТЕЛЕМ.................... 249 12.5. МАНИПУЛЯТОРЫ, ОПРЕДЕЛЯЕМЫЕ ПОЛЬЗОВАТЕЛЕМ.......................... 250 12.6. ОПЕРАЦИИ ИЗВЛЕЧЕНИЯ ИЗ ПОТОКА.................................................... 256 12.7. ОПЕРАЦИИ ИЗВЛЕЧЕНИЯ, ОПРЕДЕЛЯЕМЫЕ ПОЛЬЗОВАТЕЛЕМ.............. 258 12.8. ПРИМЕР ПРОГРАММЫ С ПОТОКАМИ ВВОДА-ВЫВОДА ......................... 258 Вопросы для самоконтроля ................................................................. 263 Упражнения........................................................................................... 263 ГЛАВА 13. ПРОИЗВОДНЫЕ КЛАССЫ................................................... 264 13.1. ПРОСТОЕ НАСЛЕДОВАНИЕ.................................................................... 264 13.2. ДОСТУП К НАСЛЕДУЕМЫМ КОМПОНЕНТАМ......................................... 265 13.3. КОНСТРУКТОРЫ ДЛЯ ПРОИЗВОДНЫХ КЛАССОВ.................................... 268 333
Стр.333