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

Программирование на языке Си

Справочник: Учебное пособие
Покупка
Основная коллекция
Артикул: 683098.03.01
Доступ онлайн
от 216 ₽
В корзину
Учебное пособие представляет собой начальный курс по программированию на языке высокого уровня Си и входит в серию учебников по программированию. Описаны работа линейных, разветвляющихся и циклических структур, обработка одномерных и двумерных массивов, рассмотрены методы работы со строками, структурами и файлами. Большое внимание уделено организации работы с динамической памятью. Изложение проиллюстрировано большим количеством примеров. В качестве практической базы для освоения особенностей языка Си используется среда Microsoft Visual Studio Professional 2013. Предназначено как для аудиторной, так и для самостоятельной работы при изучении основ программирования для приобретения навыков разработки алгоритмов и программ на языке Си. Для студентов учреждений среднего профессионального образования.
Тематика:
ББК:
УДК:
ОКСО:
ГРНТИ:
Кузин, А. В. Программирование на языке Си : учебное пособие / А.В. Кузин, Е.В. Чумакова. — Москва : ФОРУМ : ИНФРА-М, 2024. — 143 с. — (Среднее профессиональное образование). - ISBN 978-5-00091-556-1. - Текст : электронный. - URL: https://znanium.ru/catalog/product/2137197 (дата обращения: 22.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
ПРОГРАММИРОВАНИЕ

НА ЯЗЫКЕ СИ

А.В. КУЗИН
Е.В. ЧУМАКОВА

Рекомендовано 

Межрегиональным учебно-методическим советом 

профессионального образования в качестве учебного пособия 

для учебных заведений, реализующих программу среднего 

профессионального образования по укрупненной группе специальностей 

09.02.00 «Информатика и вычислительная техника» 

(протокол № 14 от 30.09.2019)

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

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

УДК 004.43(075.32)
ББК 32.973-018.1я723
 
К89

Кузин А.В.

К89  
Программирование на языке Си : учебное пособие / А.В. Кузин, Е.В. Чумако
ва. — Москва : ФОРУМ : ИНФРА-М, 2024. — 143 с. — (Среднее профессиональное 
образование). 

ISBN 978-5-00091-556-1 (ФОРУМ)
ISBN 978-5-16-013997-5 (ИНФРА-М, print)
ISBN 978-5-16-108915-6 (ИНФРА-М, online)

Учебное пособие представляет собой начальный курс по программированию 

на языке высокого уровня Си и входит в серию учебников по программированию.

Описаны работа линейных, разветвляющихся и циклических структур, обработка 

одномерных и двумерных массивов, рассмотрены методы работы со строками, структурами и файлами. Большое внимание уделено организации работы с динамической 
памятью. Изложение проиллюстрировано большим количеством примеров. В качестве практической базы для освоения особенностей языка Си используется среда 
Microsoft Visual Studio Professional 2013.

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

Для студентов учреждений среднего профессионального образования.

УДК 004.43(075.32)

ББК 32.973-018.1я723

Р е ц е н з е н т ы:

Опадчий Ю.Ф., доктор технических наук, профессор кафедры прикладной 

математики, информационных технологий и электротехники МАТИ — Российского государственного технологического университета имени К.Э. Циолковского; 

Симонов В.Л., кандидат технических наук, доцент кафедры моделирования ин
формационных систем и сетей Российского государственного социального университета

ISBN 978-5-00091-556-1 (ФОРУМ)
ISBN 978-5-16-013997-5 (ИНФРА-М, print)
ISBN 978-5-16-108915-6 (ИНФРА-М, online)

© Кузин А.В., Чумакова Е.В., 2020
© ФОРУМ, 2020

Введение

Учебное пособие представляет собой начальный курс по программированию на языке C (Си) и входит в серию учебников по программированию. 
Оно полезно не только людям, начинающим обучаться программированию, 
но и студентам, уже имеющим определенный багаж знаний.
С считается одним из старейших языков программирования, впоследствии образовавшим целое семейство. К семейству С относят сам С, С++, 
Objective-C, Java, C#.
С — первый язык из семейства. Его создали в 60-70-е годы XX века для 
реализации операционной системы Unix. Затем его адаптировали для других 
операционных систем. Ядро Windows написано в основном на С, ядра iOS 
и Android, а также драйверы для Mac OS X написаны с использованием С, 
популярные системы управления базами данных, например MySQL, написаны 
с использованием С.
С++ был создан на основе С и унаследовал его синтаксис. При этом в С++ 
добавили механизм шаблонов и поддержку объектно ориентированного программирования. Сейчас этот язык — самый распространенный в мире и используется как язык общего назначения. Сфера применения: веб-сервисы, 
про граммы и игры.
Objective-C появился в середине 1980-х годов и сохранил совместимость 
с языком С, хотя его синтаксис сильно отличается от синтаксиса «предка». 
Сфера применения: разработка программного обеспечения для продуктов 
Apple.
Java появился в 1995 году, позаимствовав синтаксис С++ и Objective-C. 
Сфера применения: серверное программное обеспечение, игры, мобильные 
приложения, научный и производственный софт.
С# — один из быстрорастущих и востребованных языков семейства. Он, 
как и Java, объектно ориентированный, но отличается специфическим синтаксисом и нетипичными конструкциями, поскольку в нем использованы заимствования из языков С, С++, Java, Pascal. Сфера применения: машинное 
обучение, создание игр и веб-приложений.

Введение

Язык С сохраняет свою актуальность и в настоящее время. Он широко 
используется для программирования встраиваемых систем с микроконтроллерами, широко развиваемых устройств интернета вещей (IoT), требующих 
реализации сложных алгоритмов работы при ограниченных аппаратных ресурсах.
Пособие состоит из пятнадцати обучающих глав, содержащих, помимо 
теории, и примеры практических заданий, что в значительной степени повышает уровень усвоения излагаемого в пособии материала. Содержанием 
начального курса являются принципы программирования, основные конструкции языка C, составляющие базис для прикладного программирования.
Глава 1 посвящена рассмотрению основных понятий информатики 
и программирования. Эта глава дает общее представление принципах работы 
программ на персональном компьютере. Кроме того, в главе рассматриваются 
характеристики языка и системы программирования C. Здесь студенты знакомятся с понятием формальных языков и преимуществами языка C при изучении программирования.
Глава 2 посвящена базисным конструкциям языка, а именно — рассматривается алфавит языка, структура программы и базовые типы данных.
Глава 3 посвящена посвящен программам с линейной структурой. Она 
освещает использование операторов присваивания и операторов ввода — вывода, позволяет студентам приступить к созданию простейших программ с линейной структурой.
В главе 4 излагаются принципы структурного программирования, которые 
являются основой при разработке программ на языках высокого уровня.
В главах 5 и 6 рассматриваются операторы с условиями, дающие возможность построения алгоритмов с ветвлениями и повторениями.
Главы 7, 8, 11 и 12 описывают концепцию типов данных и ряд структурных типов данных, создаваемых разработчиком, таких как массив, указатель и структура. Подробно рассматриваются диапазоны изменений значений 
типов, обращения к ним и использование их в выражениях (обработка переменных типов данных).
Глава 9 посвящена понятию подпрограмм, а именно — описанию функций 
с их многократным вызовом из основной программы.
Обработке строковых данных посвящена глава 10 учебного пособия, рассмотрены функции обработки символьной информации и строковые функции.
В главе 13 подробно описывается организация работы с файлами 
на языке C.
Последние две главы посвящены библиотекам и их применению, а также 
препроцессору языка C. Все главы сопровождаются наглядными примерами, 
дающими возможность легко освоить навыки программирования. В качестве 
практической базы для освоения особенностей языка C используется среда 
Microsoft Visual Studio.

Глава 1
ВВЕДЕНИЕ В ПРОГРАММИРОВАНИЕ

1.1. Принцип программного управления

Разнообразие задач, которые можно решить с помощью компьютера, определяется набором установленных программ. Программа представляет собой последовательность понятных вычислительной машине инструкций,
размещаемых вместе с обрабатываемыми данными в оперативной памяти и
выполняемых процессором.
Такая организация работы соответствует принципам, сформулированным Джоном фон Нейманом в 1946 г. и лежащим в основе работы большинства компьютеров. Одним из них является принцип программного управления, который заключается в следующем:
• программа размещается в последовательных ячейках оперативной памяти ЭВМ вместе с обрабатываемыми данными (например, с числами
или строками символов);
• программа состоит из последовательности команд, каждая из которых
может содержать адреса операндов и результата операции, а также код
операции. Операнды — это данные, над которыми выполняются операции;
• каждая команда представляет собой операцию, входящую в набор операций, выполняемых процессором (система команд процессора). Система команд обязательно содержит арифметические операции (сложение, вычитание, умножение и др.), а также операции копирования (перемещения информации из одних ячеек памяти в другие), ввода
данных в оперативную память (например, символов, набранных на
клавиатуре), вывода информации (например, на экран дисплея или на
диск), окончания программы и др.;
• процессор выполняет команды, начиная с первой команды программы.
Если в выполняемой команде не указан адрес следующей команды, то

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

1.2. Понятие о языках программирования

Сегодня практически любая программа создается с помощью того или
иного языка программирования высокого уровня. В общем случае язык — это
набор символов, слов или предложений, имеющий свой синтаксис (правила
построения конструкций) и семантику (смысл конструкций языка).
Различают естественные языки — языки общения людей и формальные —
искусственные языки. В естественных языках семантика определяется неформально, так что смысл слова или фразы зависит в том числе и от «окружения», т. е. от соседних слов и фраз, и сформулировать семантические правила практически невозможно.
В формальных языках и синтаксис и семантика характеризуются строгими правилами. С точки зрения семантики формальные языки проще естественных.
Компьютеры способны «понимать» только формальные языки, поскольку только формальная семантика дает однозначное толкование любой языковой конструкции.

6
Глава 1. Введение в программирование

Система команд процессора является формальным языком, носящим название машинного языка. Процессор компьютера способен непосредственно понимать только машинный язык. Поэтому первые программы создавались на машинном языке, каждая команда которого представляла достаточно длинный набор цифр, кодирующих название операции, адреса операндов и результата
операции. Писать безошибочно последовательности таких команд весьма сложно и малопроизводительно. Поэтому уже на заре программирования весьма актуальным стал вопрос создания языков программирования более высокого уровня.
Появившиеся в процессе развития программирования машинноориентированные языки и языки высокого уровня также являются формальными
языками, занимающими промежуточное положение между естественным
языком человека и машинным языком.
Языки программирования высокого уровня более удобны для человека,
чем машинный язык, с их появлением значительно снизились трудоемкость
и число ошибок, допускаемых в процессе программирования. Однако непосредственно понимать их процессор не способен. Для перевода текста программы на машинный язык используется специальная программа, которая
называется транслятором.
Все программы, написанные на языке высокого уровня, обычно проходят
предварительную трансляцию в машинный код, который затем непосредственно исполняется на процессоре. Такой транслятор называется компилятором. Компилятор — основная часть системы программирования, в которую
обычно входят также средства редактирования, отладки, оптимизации, документирования программ.
Существует много различных языков программирования высокого уровня — Бейсик, Фортран, Си, Паскаль и др. — и соответствующих систем программирования. Мы в дальнейшем будем иметь дело исключительно с языком Си — одним из лучших и популярных языков программирования.

1.3. Язык Си

Язык Си был создан в начале 1970х гг. Дэннисом Ритчи, который работал в компании Bell Telephone Laboratories. Язык Си был разработан для
программирования в новой по тем временам операционной системе Unix.
Изначально операционная система Unix была написана на языке ассемблера для ЭВМ PDP7 и перенесена затем в 1971 г. на PDP11. Для этой машины Кеном Томпсоном был разработан на основе языка Фортран интерпретирующий язык Би, явившийся предшественником языка Си. Этот язык
обеспечивал широкие возможности внедрения операционной системы Unix

1.3. Язык Си
7

на разных машинах, однако не удовлетворял всем требованиям разработчиков. Это и привело к созданию Дэннисом Ритчи и Брайном Керниганом
языка, получившего название Си и нашедшего самое широкое применение
на практике. В 1973 г. сама операционная система Unix была переписана на
языке Си. Операционная система Unix фирмы Bell Laboratories стала первым коммерческим продуктом, реализующим идею о том, что операционная
система может быть успешно написана на языке высокого уровня, если этот
язык является достаточно мощным и гибким.
В 1983 г. Американский национальный институт стандартов (ANSI) ре
шил выработать всеобъемлющий стандарт языка Си, который появился в
конце 1988 г. Этот стандарт основан на книге Б. Кернигана и Д. Ритчи «Язык
программирования Си».
В начале 1980х гг. Бьерн Страуструп из лаборатории Bell выполнил расширение языка Си, поддерживающее экстрагирование и объектноориентированное программирование. Новый язык получил название «С с классами»,
а с 1983 г. стал называться С++. Этот язык и его модификации стали основными инструментами системного программирования.
В середине 1990х гг. фирмой Borland была разработана система визуального объектноориентированного программирования C++Builder. Язык
C++, лежащий в основе C++ Builder, более мощный, чем Object Pascal, на
котором построена Delphi. И библиотеки функций C++ намного обширнее
библиотек Object Pascal. Поэтому то, что в C++ Builder делается легко и естественно, в Delphi в ряде случаев требует значительно больших усилий и получается не столь эффективно. Правда, это касается только весьма сложных
приложений. Большинство же прикладных задач с равным успехом могут решаться и средствами Delphi, и средствами C++ Builder.
В последнее время появилась новая версия языка Си, так называемый С#
(Си шарп). Язык С# и основанная на нем среда разработки Visual Studio фирмы Microsoft созданы специально для .NET, они объединяют наиболее сильные стороны языков C++ и Java и являются основным инструментом программирования в .NET.
Платформа .NET — это надстройка над операционными системами, позволяющая создавать прикладные программы, работающие без перекомпиляции на различных аппаратных средствах и с различными операционными
системами: Windows, Linux и др. Уже появились первые версии Windows,
поддерживающие .NET. И в недалеком будущем, повидимому, разработка
приложений для Интернета, распределенных приложений, а также и отдельных программ будет прежде всего ориентироваться на .NET.
Также на основе языка Си построен объектноориентированный язык
программирования Objective C (объективный Си), который используется
корпорацией Apple для разработки любых «яблочных» приложений.

8
Глава 1. Введение в программирование

Язык Си является универсальным языком программирования, это как
системный язык (на нем пишутся компиляторы, операционные системы),
так и язык для кодирования большинства программ в разных областях науки
и техники. Хотя язык учитывает основные особенности многих систем, он не
зависит от конкретной архитектуры какоголибо компьютера. На нем можно
писать переносимые программы, работающие на самом различном оборудовании.
Для разработки программ можно использовать свободные среды разработки Code Blocks или DevC++, последняя позволяет работать с графической библиотекой graphics.h. Однако наиболее передовым средством разработки на сегодняшний день является Microsoft Visual Studio 2013, которое
предоставляется студентам бесплатно. Используя эту среду для изучения основ программирования, можно постепенно перейти к разработке сложных
приложений с использованием современных технологий.

1.3. Язык Си
9

Глава 2
ОСНОВНЫЕ ПОНЯТИЯ ЯЗЫКА СИ

2.1. Алфавит языка

При написании инструкций (операций) применяются определенные
символы, составляющие алфавит языка. Алфавит — совокупность допустимых в языке символов или групп символов, рассматриваемых как единое целое. Алфавит языка Си является подмножеством набора символов кодовой
таблицы ASCII и включает следующие символы:
• прописные буквы латинского алфавита;
• строчные буквы латинского алфавита;
• арабские цифры;
• специальные символы: , . ; : ? ' " ! | / \ ~ _ ^ ( ) { } [ ] < > # % & = + *
• символ пробела.
Дополнительную группу символов алфавита составляют ключевые (зарезервированные) слова и специальные символы.
Ключевые слова — это имена объектов программы, зарезервированные в
языке для специального использования; они служат для обозначения операторов, описателей данных и т. п. Их употребление строго определено компилятором, и они не могут использоваться каклибо иначе. К ключевым словам
стандарта ANSI языка Си относятся:

auto
do
goto
short
union
break
else
int
signed
unsigned
case
double
long
sizeof
volatile
const
if
main
static
while
char
enum
new
struct
continue
extern
operator
switch
default
float
register
typedef
delete
for
return
typeid

Доступ онлайн
от 216 ₽
В корзину