Главная страница
Навигация по странице:

  • ^издательство^ Москва, 2013 УДК 681.3.06:800.92(075.8) ББК 32.973.2-018.1 П44

  • УДК 681.3.06:800.92(075.8) ББК 32.973.2-018.1

  • Курс программирования на языке Си

  • Глава 4

  • Глава 8

  • Курс на Си. Подбельский. Курс программирования на Си. В., Фомин С. С. Курс программирования на языке Си Учебник


    Скачать 1.57 Mb.
    НазваниеВ., Фомин С. С. Курс программирования на языке Си Учебник
    АнкорКурс на Си
    Дата18.02.2023
    Размер1.57 Mb.
    Формат файлаdocx
    Имя файлаПодбельский. Курс программирования на Си.docx
    ТипУчебник
    #943863
    страница1 из 42
      1   2   3   4   5   6   7   8   9   ...   42

    Подбельский В. В., Фомин С. С.

    Курс программирования
    на языке Си


    Учебник

    Допущено Учебно-методическим объединением
    вузов РФ по образованию в области экономики,
    менеджмента, логистики и бизнес-информатики в
    качестве учебника для студентов высших учебных
    заведений, обучающихся по направлению


    «Бизнес-информатика»



    ^издательство^

    Москва, 2013

    УДК 681.3.06:800.92(075.8)

    ББК 32.973.2-018.1

    П44

    Подбельский В. В., Фомин С. С.

    П44 Курс программирования на языке Си: учебник. - М.: ДМК Пресс, 2012. - 384 с.

    ISBN 978-5-94074-449-8

    Книга является полным курсом программирования на стандарт­ном языке Си. Рассматриваются все средства языка Си, не зависящие от реализаций, существующие в компиляторах на современных ПК различных платформ.

    Для студентов и преподавателей вузов, а также для желающих освоить самостоятельно программирование на языке Си.

    УДК 681.3.06:800.92(075.8)

    ББК 32.973.2-018.1

    Подбельский Вадим Валериевич
    Фомин Сергей Сергеевич

    Курс программирования на языке Си

    Учебник

    Главный редактор Мовчан Д. А.
    dm@dmk-press.ru

    Корректор Синяева Г. И.

    Верстка Чаннова А. А.

    Дизайн обложки Мовчан А. Г.

    Подписано в печать 29.08.2012. Формат 60x90 1/16 .

    Гарнитура «Петербург». Печать офсетная.

    Усл. печ. л. 24. Тираж 1000 экз.

    Веб-сайт издательства: www.dmk-press.ru

    © Подбельский В. В., Фомин С. С., 2012


    ISBN 978-5-94074-449-8
    © Оформление, ДМК Пресс, 2012

    Содержание

    Содержание 3

    ПРЕДИСЛОВИЕ 12

    Глава 1 16

    БАЗОВЫЕ ПОНЯТИЯ ЯЗЫКА 16

    1.1.Алфавит, идентификаторы, служебные слова 17

    1.2.Литералы 20

    1.3.Переменные и именованные 27

    константы 27

    1.4. Операции 35

    1.5. Разделители 44

    1.6.Выражения 49

    Контрольные вопросы 59

    Глава 2 61

    ВВЕДЕНИЕ 61

    В ПРОГРАММИРОВАНИЕ НА СИ 61

    2.1.Структура и компоненты простой программы 61

    2.2.Элементарные средства 71

    программирования 71

    2.3. Операторы цикла 92

    2.4. Массивы и вложение 108

    операторов цикла 108

    2.5.Функции 123

    2.6.Переключатели 135

    Контрольные вопросы 139

    Глава 3 140

    ПРЕПРОЦЕССОРНЫЕ СРЕДСТВА 140

    3.1.Стадии и директивы препроцессорной обработки 141

    HUB 143

    3.2.Замены в тексте 145

    3.3.Включение текстов из файлов 150

    3.4.Условная компиляция 152

    3.5.Макроподстановки средствами 157

    препроцессора 157

    3.6.Вспомогательные директивы 163

    3.7.Встроенные макроимена 165

    Контрольные вопросы 167

    Глава 4 169

    УКАЗАТЕЛИ, МАССИВЫ, СТРОКИ 169

    4.1.Указатели на объекты 169

    4.2.Указатели и массивы 178

    4.3. Символьная информация и строки 193

    Контрольные вопросы 201

    Глава 5 204

    ФУНКЦИИ 204

    5.1. Общие сведения о функциях 204

    5.2.Указатели в параметрах функций 209

    5.3.Массивы и строки 214

    как параметры функций 214

    5.4.Указатели на функции 223

    5.5.Функции с переменным 237

    количеством аргументов 237

    5.6.Рекурсивные функции 249

    5.7.Классы памяти 252

    и организация программ 252

    5.8. Параметры функции main( ) 259

    Контрольные вопросы 262

    Глава 6 264

    СТРУКТУРЫ И ОБЪЕДИНЕНИЯ 264

    6.1.Структурные типы и структуры 264

    6.2.Структуры, массивы и указатели 278

    6.3.Структуры и функции 289

    6.4.Динамические информационные структуры 293

    6.5.Объединения и битовые поля 300

    Контрольные вопросы 309

    Глава 7 312

    ВВОД И ВЫВОД 312

    7.1. Потоковый ввод-вывод 312

    7.2. Ввод-вывод нижнего уровня 349

    Контрольные вопросы 359

    Глава 8 360

    ПОДГОТОВКА И ВЫПОЛНЕНИЕ 360

    ПРОГРАММ 360

    8.1.Схема подготовки программ 360

    8.2.Подготовка программ 362

    в операционной системе UNIX 362

    8.3. Утилита make 364

    8.4. Библиотеки объектных модулей 368

    Контрольные вопросы 375

    Приложение 1 376

    ТАБЛИЦЫ КОДОВ ASCII 376

    HUB 381

    Приложение 2 384

    Константы предельных значений 384

    Приложение 3 386

    Стандартная библиотека функций языка Си 386

    Приложение 4 397

    МОДЕЛИ ПРЕДСТАВЛЕНИЯ 397

    ЧИСЕЛ НА РАЗЛИЧНЫХ 397

    КОМПЬЮТЕРНЫХ ПЛАТФОРМАХ 397

    Литература 400

    Предметный указатель 401

    Глава 4

    Содержание 3

    ПРЕДИСЛОВИЕ 12

    Глава 1 16

    БАЗОВЫЕ ПОНЯТИЯ ЯЗЫКА 16

    1.1.Алфавит, идентификаторы, служебные слова 17

    1.2.Литералы 20

    1.3.Переменные и именованные 27

    константы 27

    1.4. Операции 35

    1.5. Разделители 44

    1.6.Выражения 49

    Контрольные вопросы 59

    Глава 2 61

    ВВЕДЕНИЕ 61

    В ПРОГРАММИРОВАНИЕ НА СИ 61

    2.1.Структура и компоненты простой программы 61

    2.2.Элементарные средства 71

    программирования 71

    2.3. Операторы цикла 92

    2.4. Массивы и вложение 108

    операторов цикла 108

    2.5.Функции 123

    2.6.Переключатели 135

    Контрольные вопросы 139

    Глава 3 140

    ПРЕПРОЦЕССОРНЫЕ СРЕДСТВА 140

    3.1.Стадии и директивы препроцессорной обработки 141

    HUB 143

    3.2.Замены в тексте 145

    3.3.Включение текстов из файлов 150

    3.4.Условная компиляция 152

    3.5.Макроподстановки средствами 157

    препроцессора 157

    3.6.Вспомогательные директивы 163

    3.7.Встроенные макроимена 165

    Контрольные вопросы 167

    Глава 4 169

    УКАЗАТЕЛИ, МАССИВЫ, СТРОКИ 169

    4.1.Указатели на объекты 169

    4.2.Указатели и массивы 178

    4.3. Символьная информация и строки 193

    Контрольные вопросы 201

    Глава 5 204

    ФУНКЦИИ 204

    5.1. Общие сведения о функциях 204

    5.2.Указатели в параметрах функций 209

    5.3.Массивы и строки 214

    как параметры функций 214

    5.4.Указатели на функции 223

    5.5.Функции с переменным 237

    количеством аргументов 237

    5.6.Рекурсивные функции 249

    5.7.Классы памяти 252

    и организация программ 252

    5.8. Параметры функции main( ) 259

    Контрольные вопросы 262

    Глава 6 264

    СТРУКТУРЫ И ОБЪЕДИНЕНИЯ 264

    6.1.Структурные типы и структуры 264

    6.2.Структуры, массивы и указатели 278

    6.3.Структуры и функции 289

    6.4.Динамические информационные структуры 293

    6.5.Объединения и битовые поля 300

    Контрольные вопросы 309

    Глава 7 312

    ВВОД И ВЫВОД 312

    7.1. Потоковый ввод-вывод 312

    7.2. Ввод-вывод нижнего уровня 349

    Контрольные вопросы 359

    Глава 8 360

    ПОДГОТОВКА И ВЫПОЛНЕНИЕ 360

    ПРОГРАММ 360

    8.1.Схема подготовки программ 360

    8.2.Подготовка программ 362

    в операционной системе UNIX 362

    8.3. Утилита make 364

    8.4. Библиотеки объектных модулей 368

    Контрольные вопросы 375

    Приложение 1 376

    ТАБЛИЦЫ КОДОВ ASCII 376

    HUB 381

    Приложение 2 384

    Константы предельных значений 384

    Приложение 3 386

    Стандартная библиотека функций языка Си 386

    Приложение 4 397

    МОДЕЛИ ПРЕДСТАВЛЕНИЯ 397

    ЧИСЕЛ НА РАЗЛИЧНЫХ 397

    КОМПЬЮТЕРНЫХ ПЛАТФОРМАХ 397

    Литература 400

    Предметный указатель 401

    Глава 8

    Содержание 3

    ПРЕДИСЛОВИЕ 12

    Глава 1 16

    БАЗОВЫЕ ПОНЯТИЯ ЯЗЫКА 16

    1.1.Алфавит, идентификаторы, служебные слова 17

    1.2.Литералы 20

    1.3.Переменные и именованные 27

    константы 27

    1.4. Операции 35

    1.5. Разделители 44

    1.6.Выражения 49

    Контрольные вопросы 59

    Глава 2 61

    ВВЕДЕНИЕ 61

    В ПРОГРАММИРОВАНИЕ НА СИ 61

    2.1.Структура и компоненты простой программы 61

    2.2.Элементарные средства 71

    программирования 71

    2.3. Операторы цикла 92

    2.4. Массивы и вложение 108

    операторов цикла 108

    2.5.Функции 123

    2.6.Переключатели 135

    Контрольные вопросы 139

    Глава 3 140

    ПРЕПРОЦЕССОРНЫЕ СРЕДСТВА 140

    3.1.Стадии и директивы препроцессорной обработки 141

    HUB 143

    3.2.Замены в тексте 145

    3.3.Включение текстов из файлов 150

    3.4.Условная компиляция 152

    3.5.Макроподстановки средствами 157

    препроцессора 157

    3.6.Вспомогательные директивы 163

    3.7.Встроенные макроимена 165

    Контрольные вопросы 167

    Глава 4 169

    УКАЗАТЕЛИ, МАССИВЫ, СТРОКИ 169

    4.1.Указатели на объекты 169

    4.2.Указатели и массивы 178

    4.3. Символьная информация и строки 193

    Контрольные вопросы 201

    Глава 5 204

    ФУНКЦИИ 204

    5.1. Общие сведения о функциях 204

    5.2.Указатели в параметрах функций 209

    5.3.Массивы и строки 214

    как параметры функций 214

    5.4.Указатели на функции 223

    5.5.Функции с переменным 237

    количеством аргументов 237

    5.6.Рекурсивные функции 249

    5.7.Классы памяти 252

    и организация программ 252

    5.8. Параметры функции main( ) 259

    Контрольные вопросы 262

    Глава 6 264

    СТРУКТУРЫ И ОБЪЕДИНЕНИЯ 264

    6.1.Структурные типы и структуры 264

    6.2.Структуры, массивы и указатели 278

    6.3.Структуры и функции 289

    6.4.Динамические информационные структуры 293

    6.5.Объединения и битовые поля 300

    Контрольные вопросы 309

    Глава 7 312

    ВВОД И ВЫВОД 312

    7.1. Потоковый ввод-вывод 312

    7.2. Ввод-вывод нижнего уровня 349

    Контрольные вопросы 359

    Глава 8 360

    ПОДГОТОВКА И ВЫПОЛНЕНИЕ 360

    ПРОГРАММ 360

    8.1.Схема подготовки программ 360

    8.2.Подготовка программ 362

    в операционной системе UNIX 362

    8.3. Утилита make 364

    8.4. Библиотеки объектных модулей 368

    Контрольные вопросы 375

    Приложение 1 376

    ТАБЛИЦЫ КОДОВ ASCII 376

    HUB 381

    Приложение 2 384

    Константы предельных значений 384

    Приложение 3 386

    Стандартная библиотека функций языка Си 386

    Приложение 4 397

    МОДЕЛИ ПРЕДСТАВЛЕНИЯ 397

    ЧИСЕЛ НА РАЗЛИЧНЫХ 397

    КОМПЬЮТЕРНЫХ ПЛАТФОРМАХ 397

    Литература 400

    Предметный указатель 401

    ПРЕДИСЛОВИЕ

    В 2012 г. языку Си исполняется 40 лет. Как латинский язык явил­ся основой многих европейских языков, так и язык Си стал родо­начальником языков Си++, Java, Perl, С#, PHP, JavaScript и т. д. В отличие от мертвой латыни, язык Си - не только живой язык, но и наиболее распространенный и эффективный из универсальных языков программирования. Программы на языке Си исполняются почти на всех компьютерах, он работает со средой программирова­ния UNIX, и сама операционная система UNIX написана на нем. На Си написано множество библиотечных функций и утилит. Сотни тысяч программистов знают язык Си, он неотделим от общечело­веческой культуры программирования. Любой программист должен владеть языком Си, чтобы профессионально работать в области информационных технологий и понимать своих коллег. В учебных программах и стандартах высших и средних специальных учебных заведений для большинства естественно-научных специальностей предусмотрено изучение программирования на языке Си.

    Язык программирования Си создан в 1972 г. сотрудником фирмы Bell Laboratories Деннисом Ритчи (Dennis M. Ritchie) при разработ­ке операционной системы UNIX. Язык проектировался как инст­румент для системного программирования с ориентацией на раз­работку хорошо структурированных программ. Удачное сочетание лаконичности конструкций и богатства выразительных возможно­стей позволило языку Си быстро распространиться и стать наиболее популярным языком прикладного и системного программирования. Компиляторы языка Си работают почти на всех типах современ­ных ЭВМ в операционных системах Windows, UNIX-подобных ОС (FreeBSD, Linux), Solaris, Mac OS и др.

    В отличие от многих предшествующих языков (Ада, Алгол-60, Алгол-68 и т. д.), которые вступали в силу после принятия соот­ветствующих национальных и международных стандартов, язык Си вначале был создан как рабочий инструмент, не претендующий на широкое применение. Стандарта на язык Си до 1989 г. не сущест­вовало, и в качестве формального описания разработчики компиля­торов использовали первое издание книги Б. Кернигана и Д. Ритчи, вышедшее в США в 1978 г. (переведена на русский язык в 1985 г. [1]). Роль неформального стандарта языка Си сохранилась за этой книгой и в настоящее время. Не случайно в литературе и документа­ции по компиляторам ссылка на эту работу обозначается специаль­ным сокращением K&R.

    Второе издание книги Б. Кернигана и Д. Ритчи [2] описывает язык Си в стандартизованном Американским институтом национальных стандартов виде (стандарт ANSI языка Си). В настоящее время, кро­ме стандарта ANSI C, разработаны международный стандарт ISO C (International Standard Organization C) и стандарт 1999 года C99 - современный стандарт языка программирования Си. Определен в ISO/IEC 9899:1999, современная версия - ISO/IEC 9899:1999/ Cor 3:2007 от 2007-11-15. Эти версии стандарта близки друг к другу, и на различиях между стандартами нет необходимости останавли­ваться до возникновения разногласий в толковании той или иной конструкции языка либо при оценке стандартности конкретного компилятора. Эти ситуации выходят за рамки курса по программи­рованию на языке Си. В случае необходимости получения справок по стандартам языка Си следует обращаться к специальным публи­кациям. Неформальное применение книги K&R в качестве стандар­та до 1989 г. и последующая ее переработка авторами в соответствии с принятым стандартом ANSI привели к тому, что ее и сейчас можно рассматривать как достоверный источник при получении справок по языку Си.

    Настоящий учебник предназначен для изучения программиро­вания на стандартном языке Си. Ориентация сделана как на из­ложение синтаксиса и семантики конструкций языка, так и на их практическое использование при решении типовых задач програм­мирования. После описания в главе 1 основных понятий языка Си рассмотрены средства представлений базовых конструкций струк­турного программирования, возможности которых в главе 2 иллюст­рируются на простых вычислительных задачах. Глава 3 содержит подробное описание препроцессорных средств компилятора языка Си, которые активно используются при последующем изучении методов и приемов программирования на языке Си. Следующая глава и посвящена незаменимым в системном программировании понятиям - объектам и адресам (указателям). Аппарат указателей используется затем при обработке массивов и строк. Центральное

    место занимает глава 5, посвященная функциям. Здесь возможности функций рассмотрены подробно и с нужной полнотой. Особое вни­мание уделено взаимосвязи функций с указателями, а также классам памяти, которые вводятся в связи с организацией многофайловых программ, включающих много функций. Глава 6 рассматривает структурированные данные (структуры и объединения). Особенно­сти работы с файлами, а также средства ввода-вывода показаны на типовых задачах в главе 7. В главе 8 приводятся сведения о под­готовке и выполнении программ в среде семейства операционных систем UNIX.

    Приводимые в учебнике программы сопровождаются резуль­татами, полученными на ЭВМ. Более подробно с практическими приемами программирования на языке Си читатель может позна­комиться, обратившись к «Практикуму по программированию на Си» [10].

    Целью настоящего учебника является изложение методики и принципов корректного, структурированного программирования на языке Си. Программы, иллюстрирующие конструкции и возможно­сти языка, написаны максимально понятно для читателя. Авторы нигде не гнались за эффективностью кода в ущерб его структури­рованности и простоты. Возможности современных компиляторов языка Си таковы, что они позволяют генерировать весьма эффек­тивный код по тексту хорошо структурированной программы без специальных ухищрений программиста, направленных на повыше­ние быстродействия или незначительную экономию памяти.

    Книга написана на основе дисциплин, которые авторы в течение ряда лет преподавали в МИЭМе на факультете прикладной мате­матики, на факультете автоматики и вычислительной техники и факультете повышения квалификации инженеров. Материал курса соответствует учебной программе дисциплины «Алгоритмические языки и программирование». Изучение указанной дисциплины, в частности языка Си, служит основой для курсов по математиче­скому обеспечению ЭВМ и сетей, по операционным системам, по­строению компиляторов и системному программированию.

    Авторы надеются, что книга поможет ликвидировать разрыв меж­ду техническими руководствами по реализации языка Си и потреб­ностями в методическом обеспечении учебного процесса. Для чте­ния книги достаточно знать основы информатики. Поэтому пособие можно использовать как в вузе, так и в курсах информатики школ, гимназий, лицеев и техникумов. Необходимым условием освоения материала книги является выполнение приведенных в ней примеров на любой ЭВМ, снабженной транслятором с языка Си.

    Повышению качества рукописи способствовали замечания рецен­зентов.

    Любые конструктивные замечания и предложения по улучшению учебника авторы с благодарностью примут и учтут в дальнейшем. Нам можно писать по адресу издательства.

      1   2   3   4   5   6   7   8   9   ...   42


    написать администратору сайта