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

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

Покупка
Основная коллекция
Артикул: 151650.11.01
К покупке доступен более свежий выпуск Перейти
Учебное пособие является начальным курсом программирования с примерами на языке С. Рассмотрены основы программирования, приемы и методы в стиле классического С. Пособие можно использовать как руководство по языку, приводятся многочисленные примеры, оттестированные на компьютере. Соответствует требованиям федеральных государственных образовательных стандартов высшего образования последнего поколения. Рекомендовано студентам, изучающим дисциплины «Основы программирования», «Языки высокого уровня», «Информатика».
Дорогов, В. Г. Основы программирования на языке С : учебное пособие / В. Г. Дорогов, Е. Г. Дорогова ; под ред. Л. Г. Гагариной. — Москва : ФОРУМ : ИНФРА-М, 2021. — 224 с. — (Бакалавриат). - ISBN 978-5-8199-0882-2. - Текст : электронный. - URL: https://znanium.ru/catalog/product/1225391 (дата обращения: 22.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
ОСНОВЫ
ПРОГРАММИРОВАНИЯ
НА ЯЗЫКЕ С

В.Г. Дорогов, Е.Г. Дорогова

Рекомендовано Учебно-методическим советом
Московского государственного института электронной техники
(технического университета) в качестве учебного пособия
для студентов высших учебных заведений, обучающихся
по направлению «Информатика и вычислительная техника»
и по основной образовательной программе подготовки
бакалавров «Программная инженерия»

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

Москва 
ИД «ФОРУМ» — ИНФРА-М
2021

Под редакцией профессора Л.Г. Гагариной

УДК 004(075.8)
ББК 32.973я73
 
Д69

Дорогов В.Г. 
Д69 
 
Основы программирования на языке С : учебное пособие / В.Г. Дорогов, Е.Г. Дорогова ; под ред. проф. Л.Г. Гагариной. — Москва : 
ИД «ФОРУМ» : ИНФРА-М, 2021. — 224 с. — (Высшее образование: 
Бакалавриат).

ISBN 978-5-8199-0882-2 (ИД «ФОРУМ»)
ISBN 978-5-16-015115-1 (ИНФРА-М, print)
ISBN 978-5-16-107656-9 (ИНФРА-М, online)

Учебное пособие является начальным курсом программирования 
с примерами на языке С. Рассмотрены основы программирования, приемы и методы в стиле классического С. Пособие можно использовать как 
руководство по языку, приводятся многочисленные примеры, оттестированные на компьютере.
Соответствует требованиям федеральных государственных образовательных стандартов высшего образования последнего поколения.
Рекомендовано студентам, изучающим дисциплины «Основы программирования», «Языки высокого уровня», «Информатика».

УДК 004(075.8)
ББК 32.973я73

Р е ц е н з е н т ы:
Нестеров А.Э., доктор технических наук; 
Петров А.А., кандидат технических наук

ISBN 978-5-8199-0882-2 (ИД «ФОРУМ»)
ISBN 978-5-16-015115-1 (ИНФРА-М, print)
ISBN 978-5-16-107656-9 (ИНФРА-М, online)

© Дорогов В.Г., 
Дорогова Е.Г., 2011
© ИД «ФОРУМ», 2011

Введение

Язык С разработан и реализован в 1972 г. сотрудником фирмы
AT&T Bell Laboratories Деннисом Ритчи во время работы над операционной системой UNIX. При создании системных программ
программист обязан уделять особое внимание быстродействию,
надежности и эффективности программного кода, что обычно
достигается использованием ассемблера, но при решении таких
сложных задач, как разработка ОС, возникает желание использовать более производительные средства программирования. Именно так и возник язык С — объединил в себе гибкость ассемблера и
удобство языков высокого уровня.
Создатели языка С не стали разрабатывать абстрактную модель
языка, а просто реализовали в нем те возможности, в которых более всего нуждались системные программисты — в первую очередь
это средства непосредственной работы с памятью, структурные
конструкции управления и модульная организация программы.
Как видите, создание универсального языка для широкого использования не планировалось и долгое время язык С оставался инструментальным языком операционной системы UNIX для сотрудников фирмы AT&T.
Однако к концу 1980х гг. язык С, оттеснив Fortran с позиции
лидера, приобрел массовую популярность среди программистов во
всем мире и стал использоваться в самых различных прикладных
задачах. Немалую роль здесь сыграло распространение Unix (а значит, и С) в университетской среде, где проходило подготовку новое поколение программистов.
Рост популярности С, с одной стороны, и отсутствие утвержденного стандарта — с другой, привели к тому, что в создании
компиляторов начали участвовать коллективы разработчиков, ранее не причастных к проектированию языка, что привело к возникновению проблемы совместимости программ. Программы, написанные и отлаженные с применением средств программирова
ния одного разработчика, могли не работать на компиляторе
другого разработчика.
В 1983 г. Американский институт национальных стандартов
(American National Standards Institute — ANSI) учредил комитет,
перед которым была поставлена цель выработать «однозначное и
машиннонезависимое определение языка С», полностью сохранив при этом его стилистику. Результатом работы, этого комитета
и явился стандарт ANSI языка С. Кроме того существует еще один
стандарт языка С — ISO (International Standart Organization).
Современные компиляторы обеспечивают поддержку значительной части обоих стандартов, приведем наиболее известные из
них: GNU компилятор, Intel C++, Borland C++, Visual C++.
Настоящее пособие предназначено для изучения программирования на стандартном языке С. Большое внимание уделено как
ситаксису и конструкциям языка, так и их практическому использованию при решении типовых задач. Наряду с простым перечислением правил широко используется изучение, написание и проработка примеров.
Следует отметить, что изучать язык программирования только
по книге или лекциям — пустая трата времени. Для достижении
успеха в программировании необходима практика, поэтому предполагается, что читатели будут выполнять упражнения, приведенные в пособии, на компьютере. Все программы тестировались в
MS Visual C++ 6.0 под управлением Windows XP.

4
Введение

Глава 1
БАЗОВЫЕ ПОНЯТИЯ ПРОГРАММИРОВАНИЯ

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

Техническое задание (ТЗ) — это исходный документ для проектирования разработки программы, он содержит основные технические требования, предъявляемые к программе и исходные
данные для разработки; в ТЗ указываются назначение, область
применения, сроки исполнения и многое другое. Как правило, ТЗ
составляют на основе анализа результатов предварительных исследований, расчетов и моделирования. Этот этап работы над программой относится к дисциплине «проектирование» и мы не будем
его подробно рассматривать.

1.1. Алгоритмизация задачи

Связь между алгоритмом решения и языком программирования очень тесная. Проводя аналогию с естественными языками,
заметим, что человек думает только о том, что можно воплотить в
слове, а программист решает задачи на компьютере только в тех
терминах и с использованием тех конструкций, которые есть в
языке программирования.
Алгоритм связан с языком программирования, но тем не менее
не зависит от него прежде всего потому, что в разных языках программирования есть общие, характерные для всех языков инструменты, на которые и опирается алгоритм.
Заметим, что алгоритмизация задачи — это всегда сокращение
круга понятий, которыми можно оперировать при решении задачи, это прежде всего переход от терминов и понятий естественного
языка к терминам и понятиям языка программирования. Что же
такое алгоритм? Приведем самое общее его определение.
Алгоритм решения — точные предписания (инструкции), которые определяют процесс, ведущий от исходных данных к требуемому конечному результату.
Поскольку алгоритм — это «точная инструкция», а инструкции
встречаются практически во всех областях человеческой деятельности, то возможны самые разнообразные алгоритмы, например
проведения физического эксперимента, сборки шкафа или телевизора, обработки детали. Однако следует заметить, что не всякая
инструкция есть алгоритм.
Инструкция становится алгоритмом, когда процесс преобразования исходной информации к требуемому конечному результату

6
Глава 1. Базовые понятия программирования

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

1.2. Схема алгоритма программы

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

1.3. Пример алгоритмизации

Составить алгоритм программы для расчета налога на продажи. На первом этапе опишем задачу как можно подробнее. Большинство программ подчиняются алгоритму, включающему три
этапа: ввод данных, их обработку и вывод результата, например на
экран дисплея. Рассмотрим подробнее кажый из них.
Ввод данных: для расчета необходимы два параметра — объем
продаж и ставка налога, причем ставка налога — величина постоянная, объем продаж может меняться. Поскольку программа используется неоднократно, объем продаж следует вводить при каждом новом расчете. Ставка налога может быть определена в тексте
программы. Опишем ввод короче:
вопервых, указать пользователю, что он должен ввести сумму
продаж (sum), показатель вводится с клавиатуры;
вовторых, указать компьютеру величину налога на продажи
(rate), задать в виде константы в тексте программы.

1.3. Пример алгоритмизации
7

Обработка: чтобы рассчитать сумму налога (tax), необходимо
умножить сумму продаж на ставку налога.
Вывод данных: результат вычислений (tax) должен быть выведен на экран дисплея.
На втором этапе рисуем схему алгоритма, используя принятые
обозначения (рис. 1.2).
Обратите внимание на блок обработки ошибок при вводе информации с клавиатуры — это необходимая часть любой программы, принимающей данные от человека, который является
источником потенциальных ошибок. Можно избежать проблем в
будущем, если на входе в обрабатывающие блоки отсекать некорректные данные, в нашем случае — это простейшая проверка,
сумма не может быть отрицательным значением. Анализируя по8
Глава 1. Базовые понятия программирования

Рис. 1.1. Основные элементы схемыалгоритма

лученный алгоритм, отметим, что объем вспомогательной части
(вводвывод данных и контроль ошибок) намного превосходит
содержательную часть — обработку, ради которой и составлялся
алгоритм. Это типичная ситуация для задач, решаемых на компьютере, в среднем половина программного кода посвящена вспомогательной части работы.

1.4. Этапы трансляции программы

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

1.4. Этапы трансляции программы
9

Рис. 1.2. Схема алгоритма решения

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

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

10
Глава 1. Базовые понятия программирования

Рис. 1.3. Размещение программы и данных в памяти компьютера

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