Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Язык Си: кратко и ясно

Учебное пособие
Покупка
Основная коллекция
Артикул: 279800.08.01
К покупке доступен более свежий выпуск Перейти
В учебном пособии представлена новейшая версия языка программирования Си, ставшего международным стандартом. Совмещены подходы учебного пособия и справочника, что облегчает студентам изучение материала. Особое внимание уделено стилю программирования, его эффективности и выразительности. Для студентов технических вузов, обучающихся по направлениям подготовки 01.03.02 «Прикладная математика и информатика» и 02.03.02 «Фундаментальная информатика и информационные технологии».
Парфенов, Д. В. Язык Си: кратко и ясно : учебное пособие / Д.В. Парфенов. — Москва : ИНФРА-М, 2023. — 320 с. — (Высшее образование: Бакалавриат). - ISBN 978-5-16-017910-0. - Текст : электронный. - URL: https://znanium.com/catalog/product/1896456 (дата обращения: 23.07.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
ЯЗЫК СИ

КРАТКО И ЯСНО

Д.В. ПАРФЕНОВ

Москва
ИНФРА-М

2023

УЧЕБНОЕ ПОСОБИЕ

Допущено УМО по классическому образованию 

в качестве учебного пособия для студентов высших учебных заведений, 

обучающихся по направлениям подготовки 01.03.02 «Прикладная 

математика и информатика» и 02.03.02 «Фундаментальная 

информатика и информационные технологии»

Регистрационный номер рецензии 088-4/42-14 от 24.03.2014

УДК 519.682.2(075.8)
ББК 32.973-018.1я73
 
П18

Парфенов Д.В.
П18  
Язык Си: кратко и ясно : учебное пособие / Д.В. Парфенов. — 
Москва : ИНФРА-М, 2023. — 320 с. — (Высшее образование: Бакалав-
риат). 

ISBN 978-5-16-017910-0 (print)
ISBN 978-5-16-110920-5 (online)
В учебном пособии представлена новейшая версия языка программи-
рования Си, ставшего международным стандартом. Совмещены подходы 
учебного пособия и справочника, что облегчает студентам изучение ма-
териала. Особое внимание уделено стилю программирования, его эффек-
тивности и выразительности.
Для студентов технических вузов, обучающихся по направлениям 
подготовки 01.03.02 «Прикладная математика и информатика» и 02.03.02 
«Фундаментальная информатика и информационные технологии».

УДК 519.682.2(075.8)
ББК 32.973-018.1я73

ISBN 978-5-16-017910-0 (print)
ISBN 978-5-16-110920-5 (online)
© Парфенов Д.В., 2014

 

ООО «Научно-издательский центр ИНФРА-М»
127214, Москва, ул. Полярная, д. 31В, стр. 1
Тел.: (495) 280-15-96, 280-33-86. Факс: (495) 280-36-29
E-mail: books@infra-m.ru        http://www.infra-m.ru

Подписано в печать 29.06.2022. 
Формат 6090/16. Бумага офсетная. Гарнитура Petersburg. 
Печать цифровая. Усл. печ. л. 20,0.
ППТ10. Заказ № 00000
ТК 279800-1896456-240414

Отпечатано в типографии ООО «Научно-издательский центр ИНФРА-М»
127214, Москва, ул. Полярная, д. 31В, стр. 1
Тел.: (495) 280-15-96, 280-33-86. Факс: (495) 280-36-29

ФЗ 
№ 436-ФЗ
Издание не подлежит маркировке 
в соответствии с п. 1 ч. 4 ст. 11

ПРЕДИСЛОВИЕ

Эта книга задумана как дорога новичка к профессиональному пониманию языка программирования Си.
Профессионал должен уметь отвечать не только на вопрос
«Как это сделать?», но и на вопрос «Почему?». Для этого необходимо глубокое понимание изящных и логичных механизмов
языка, избавляющее от потребности заучивать множество
следствий: они автоматически вытекают из немногих основных принципов. Надеюсь, что настоящее учебное пособие сыграет роль «учебника алгоритмического языка», в котором значительное внимание уделяется также стилю программирования, эффективности и выразительности.
Поскольку область применения Си как одного из лидеров
среди языков программирования очень широка и охватывает
сферы от управления производственными процессами до
средств поддержки виртуальной реальности, от создания операционных систем до сложных математических вычислений,
автор пытался избежать привязки повествования и многочисленных примеров к какойлибо конкретной предметной области, чтобы сделать изложение одновременно компактным,
универсальным, достаточно полным, но не перегруженным
мелочами, систематическим и в то же время четко построенным по принципу «от простого к сложному».
Известно немало хороших пособий по языку Си – ведь его
популярность огромна. Человек, взявший в руки эту книгу,
обязательно задаст вопрос: «Зачем мне именно эта книга?» Но
даже беглого просмотра достаточно, чтобы убедиться, что
предлагаемое пособие существенно отличается от других,
представленных в печати, как способом подачи материала, так
и кру´гом рассматриваемых вопросов. Дело не только в том, что
в пособии представлена новейшая версия языка, ставшая международным стандартом в конце 2011 г.
Многолетний опыт чтения данного курса в Московском
государственном техническом университете радиотехники,

электроники и автоматики (МГТУ МИРЭА) убедил автора в
том, что обращение к учебному пособию как к справочнику является неотъемлемой чертой современного процесса освоения
программирования. Создавая свои первые программы, студенты стремятся найти ответы на частные вопросы в первую очередь в том же источнике, который ввел их в суть дела. Поэтому
представляется, что такая книга должна совмещать подходы
учебника и справочника, а они заметно противоречат друг другу. Отсюда вытекает нетрадиционно выстроенное изложение,
четко структурированное и активно привлекающее компактную схематическую запись языковых правил. Насколько автору удалось реализовать задуманное, судить читателям.

6
Предисловие

В
ВЕДЕНИЕ. БАЗОВЫЕ ПОНЯТИЯ
ПРОГРАММИРОВАНИЯ

В1. Основные сведения об аппаратной части
компьютеров

Современные компьютеры – электронные устройства, предназначенные для ввода, хранения, обработки и
вывода представимой в электронном виде информации. Их
функции в зависимости от назначения могут сильно различаться: научные, инженерные, экономические и другие расчеты, математическое моделирование поведения различных систем, интеллектуальное управление механизмами и процессами
(например, течением химических реакций), обработка, поиск,
передача, анализ и синтез информации (текстовой, визуальной, звуковой и т.д.), средства создания виртуальной и расширенной реальности (синтез визуальных, слуховых и тактильных воздействий, имитирующих явления реального мира или
фантастических миров). Столь различающиеся задачи определяют многообразие вычислительных средств.
По физическому способу организации вычислений различают цифровые, аналоговые и квантовые вычислители. Не вдаваясь в описание их различий, сосредоточимся на цифровых
компьютерах как наиболее распространенных в настоящее время и практически значимых. В зависимости от круга решаемых
задач различают компьютеры:
узкоспециализированные – предназначены для единственного применения, например управления режимом работы двигателя автомобиля;
специализированные – нацелены на решение множества задач
одного типа, например игровая приставка к телевизору;
широкого применения (например, персональный компьютер,
высокопроизводительный вычислительный кластер – связка
мощных компьютеров).

Назначение определяет конкретные используемые аппаратные и программные средства компьютера.
Аппаратные средства – это совокупность всех электронных
схем, механизмов и элементов конструкций, составляющих
«физическую» часть вычислителя (англ. hardware1, в повседневной речи часто именуемые «железом» компьютера), а программные средства – исчерпывающее описание правил обработки
информации
силами
аппаратных
средств
(англ.
software). В качестве предельно грубой, но наглядной аналогии
можно уподобить аппаратные средства телу человека, а программные – полному набору правил его поведения.
Успешное программирование предполагает базовое понимание ключевых аппаратных средств типичного персонального компьютера.
Оперативное запоминающее устройство (ОЗУ, оперативная
память произвольного доступа, англ. random access memory –
RAM) – это микросхемы разделенной на ячейки одинакового
объема памяти. В такую память можно целиком или частично относительно быстро записать данные или программы в произвольной последовательности, а потом прочитать ту же информацию в том же или другом порядке. Доступ может быть осуществлен непосредственно к одной произвольной ячейке памяти. Для
попадания в требуемую ячейку используется адресация – сопоставление по некоторому правилу ячейкам памяти номеров – адресов. Адрес однозначно определяет конкретную ячейку памяти.
При выключении компьютера содержимое такой памяти обычно
полностью утрачивается. В дальнейшем говоря о памяти, будем
почти всегда подразумевать именно такую ее разновидность.
На самом деле имеется еще один важный вид памяти –
кэшпамять (англ. cache memory, от фр. caché – скрытый,
спрятанный). Назначение этой памяти, многократно (от десятков до тысяч раз) более быстрой по сравнению с оперативной, – промежуточное хранение наиболее востребованных
данных и команд для быстрой доставки их в процессор и из
процессора. «Скрытый» характер памяти проявляется в невоз8
Введение. Базовые понятия программирования

1 Чтобы упростить понимание довольно специфических сообщений компилятора и сборщика и ориентации в многочисленных программистских текстах,
в скобках приводятся английские варианты ключевых терминов.

можности адресовать то, что в ней лежит: специальная подсистема компьютера сама решает, что и на какое время там разместить, и осуществляет автоматический доступ в нее так, как будто информация размещена в обычной оперативной памяти.
Профессиональному программисту необходимо знать о наличии (а еще лучше алгоритмы работы) кэшпамяти, чтобы реализовать эффективные стратегии работы с памятью.
Центральный процессор (центральный процессорный модуль, англ. central processor unit – CPU, в дальнейшем для краткости – процессор) или несколько взаимосвязанных процессоров – это микросхемы с высокой степенью интеграции
(сложностью), непосредственно осуществляющие обработку
информации. Они пошагово считывают из оперативной памяти программы – последовательности команд обработки
информации, описывающие, что делать, и исполняют их – меняют данные по этим правилам. Данные могут размещаться в
памяти или в так называемых регистрах процессора. Регистр –
одна или несколько связанных между собой ячеек памяти,
расположенных внутри процессора. В отличие от обычной
оперативной памяти у них обычно нет адресов, но скорость обращения к информации бывает еще выше, чем у быстрой
кэшпамяти. Поскольку различные разновидности даже совместимых процессоров оснащены различающимися наборами регистров и некоторые регистры могут отсутствовать или
быть поразному устроены, у программистов далеко не всегда
есть возможность пользоваться регистрами непосредственно.
В действительности это ограничение несущественно и не мешает создавать переносимые программы, такие, которые могут
выполняться на разных компьютерах, не принимая во внимание их не очень значительные отличия.
Постоянные запоминающие устройства включают накопители на жестких магнитных дисках (англ. hard disk drives –
HDD), накопители на гибких магнитных дисках (дискетах,
англ. floppy disk drives – FDD), накопители на магнитных лентах (стримеры, англ. streamers), разнообразные оптические накопители (MO, MD, CDROM, DVDROM, DVDRAM, BD и
др.), flashпамять, твердотельные накопители (англ. solid state
drives, SSD), гибридные, сетевые устройства хранения информации и множество менее распространенных устройств. ЗапиВ1. Основные сведения об аппаратной части компьютеров
9

санная на них информация сохраняется и после выключения
питания компьютера. Она может быть прочитана впоследствии, а на некоторых типах носителей в дальнейшем полностью
или частично стерта и перезаписана какойто другой информацией. Большинство этих устройств характеризуется последовательным доступом к информации, который заключается в
следующем: 1) устанавливается исходная точка начала нужного фрагмента информации; 2) фрагмент информации записывается от начала до конца последовательно – блок за блоком;
3) точно в такой же последовательности он и считывается.
К последовательным устройствам относятся также клавиатура
(символы набираются друг за другом), текстовое окно консоли
(области экрана, куда программа осуществляет вывод текста) и
большинство внешних портов для подключения компьютера к
другим устройствам – USB (универсальная последовательная
шина, англ. universal serial bus), SATA (Serial AT Attachment),
COMпорт
(последовательный
коммуникационный
порт),
Ethernet, IEEE 1394 (FireWire), Bluetooth и т.д. Все устройства
такого рода собирательно назовем последовательными. Стандартная библиотека языка Си включает мощные и универсальные средства работы с такими устройствами.
Несмотря на важность для функционирования компьютера
и других аппаратных средств, при изучении программирования на языках высокого уровня, таких, как Си, в общем случае
нет смысла акцентировать на них внимание. Имеющиеся средства языка достаточны для работы с ними вследствие единообразия его механизмов.

В2. Классификация программного обеспечения

Программные
средства
являются
совокупностью взаимодействующих друг с другом отдельных программ, подобно тому, как аппаратные средства состоят из связанных определенным образом друг с другом выполняющих
различные функции компонентов – процессоров, источников
вторичного электропитания, жестких дисков и др. Программы
могут обмениваться как информацией (данными), так и указа10
Введение. Базовые понятия программирования

К покупке доступен более свежий выпуск Перейти