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

Компьютерные науки : Основы программирования

Покупка
Артикул: 678948.01.99
Доступ онлайн
100 ₽
В корзину
Издание содержит набор теоретических сведений, упражнений и пояснений, предназначенных для формирования и закрепления базовых навыков программирования на языке C++. Отдельное внимание уделено работе с числами с плавающей запятой. Пособие предназначено для студентов, начинающих изучать программирование.
Кувшинов, Д. Р. Компьютерные науки : Основы программирования: Учебное пособие / Кувшинов Д.Р., - 2-е изд., стер. - Москва :Флинта, Изд-во Урал. ун-та, 2017. - 102 с. ISBN 978-5-9765-3144-4. - Текст : электронный. - URL: https://znanium.com/catalog/product/948144 (дата обращения: 27.04.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

УРАЛЬСКИЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ
ИМЕНИ ПЕРВОГО ПРЕЗИДЕНТА РОССИИ Б. Н. ЕЛЬЦИНА

Д. Р. Кувшинов

КОМПЬЮТЕРНЫЕ НАУКИ

Основы программирования

Рекомендовано методическим советом УрФУ
в качестве учебного пособия для студентов, обучающихся
по программе бакалавриата по направлению подготовки
010800 «Механика и математическое моделирование»

Москва
Издательство «ФЛИНТА»
Издательство Уральского университета
2017

2-е издание, стереотипное

УДК 004.42(075.8)

К885

Р е ц е н з е н т ы :
кафедра информатики и математики
Уральского института управления — филиала РАНХиГС
(заведующий кафедрой — доктор физико-математических наук
профессор С. Ю. Ш а ш к и н );
А. В. Г о р ш к о в, кандидат физико-математических наук, доцент
(Институт машиноведения УрО РАН)

К885
Кувшинов, Д. Р.

Компьютерные науки : Основы программирования 
[Электронный ресурс]: [учеб. пособие] / Д. Р. Кувшинов ; 
М-во образования и науки Рос. Федерации, Урал. федер. унт. — 2-е изд., стер. — М. : ФЛИНТА : Изд-во Урал. ун-та, 2017. — 
102 с.

ISBN 978-5-9765-3144-4 (ФЛИНТА)
ISBN

 

978-5-7996-1411-9 (Изд-во Урал. ун-та)

Издание содержит набор теоретических сведений, упражнений и пояснений, предназначенных для формирования и закрепления базовых навыков программирования на языке C++. Отдельное внимание уделено работе с числами с плавающей запятой. Пособие предназначено для студентов, начинающих изучать
программирование.

УДК 004.42(075.8)

c⃝ Уральский федеральный университет, 2015
ISBN 978-5-9765-3144-4 (ФЛИНТА)
ISBN

 

978-5-7996-1411-9 (Изд-во Урал. ун-та)

Оглавление

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

Глава 1. Начало работы
7
1.1. Создание проекта . . . . . . . . . . . . . . . . . .
7
1.2. Структура проекта
. . . . . . . . . . . . . . . . .
8
1.3. Простейшая программа . . . . . . . . . . . . . . .
10
1.4. Текстовый ввод-вывод
. . . . . . . . . . . . . . .
12

Глава 2. Арифметика и логика
23
2.1. Системы счисления . . . . . . . . . . . . . . . . .
23
2.1.1.
Двоичная система . . . . . . . . . . . . . .
24
2.1.2.
Шестнадцатеричная система . . . . . . . .
26
2.2. Булевские операции . . . . . . . . . . . . . . . . .
27
2.3. Поразрядные операции . . . . . . . . . . . . . . .
30

Глава 3. Функции
37
3.1. Функциональная декомпозиция . . . . . . . . . .
37
3.2. Вычисление значений формул . . . . . . . . . . .
40
3.3. Проверка условий . . . . . . . . . . . . . . . . . .
43
3.4. Рекурсия . . . . . . . . . . . . . . . . . . . . . . .
55

Глава 4. Массивы и циклы
57
4.1. Циклы . . . . . . . . . . . . . . . . . . . . . . . . .
57
4.2. Массивы
. . . . . . . . . . . . . . . . . . . . . . .
61
4.3. Перечисления
. . . . . . . . . . . . . . . . . . . .
72
4.4. Конечные автоматы . . . . . . . . . . . . . . . . .
74

3

Глава 5. Структуры данных и файлы
82

Приложение
91
Список рекомендуемой литературы . . . . . . . . . . .
91
Числа с плавающей запятой . . . . . . . . . . . . . . .
92
Справочный материал по cmath . . . . . . . . . . . . .
100

Предисловие

Язык программирования C++ на данный момент является
одним из основных инфраструктурных языков программирования и используется в системном программировании, высокопроизводительных вычислениях, при создании промежуточного программного обеспечения (библиотек, служащих основой
для прикладного программного обеспечения) и интерактивных
приложений, требующих высокого быстродействия (в частности, видеоигр).

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

Материал пособия разбит на пять разделов и приложение.
Первый раздел «Начало работы» предназначен для ознакомления студентов с созданием простейших программ и стандартными средствами текстового ввода-вывода. Следующие разделы «Арифметика и логика», «Функции», «Массивы и циклы»
и «Структуры данных и файлы» последовательно наращивают
синтаксическую и семантическую нагрузку упражнений для
постепенного освоения основных элементов парадигмы струк
5

турного программирования на основе C++. Приложение содержит два раздела. Раздел «Числа с плавающей запятой» посвящен стандарту IEEE-754, реализуемому в современном аппаратном и программном обеспечении и наиболее широко применяемому при решении практических задач с использованием
численных методов и имитационного моделирования. Раздел
«Справочный материал по cmath» содержит таблицу стандартных математических функций из заголовочного файла cmath.
Для ряда терминов указаны эквиваленты на английском языке
(в скобках курсивом).
В каждом разделе приведен соответствующий теоретический материал и набор упражнений. Упражнения отмечены
значком
У . Предполагается, что упражнения из первого раздела будут выполняться студентами в компьютерном классе в
самом начале первого семестра обучения с целью ознакомления
со средой разработки и простейшими элементами синтаксиса
C++. Упражнения из пятого раздела предполагают использование классов и инкапсуляцию внутреннего состояния объектов. Упражнения 2.1–2.12, 2.23, 3.21, 3.22, 3.34, 4.15, 4.16 могут быть использованы на занятиях вне компьютерного класса.
Б´ольшая же часть упражнений предназначена для использования в составе лабораторных работ. Предлагается разбить их по
лабораторным следующим образом.

• Семестр 1: 1) 3.1–3.20; 2) 3.23; 3) 3.24–3.33; 4) 2.13–2.22;
5) 4.1–4.14; 6) 4.17–4.26; 7) 4.28–4.35; 8) 4.36–4.42; 9) 4.43;
10) 4.44–4.50.

• Семестр 2: 1) 5.1, 5.2; 2) 5.3–5.6; 3) 5.7, 5.8; 4) 5.9–5.11;
5) 5.12.

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

Глава 1

Начало работы

1.1.
Создание проекта

Данное пособие предполагает использование интегрированной среды разработки Microsoft Visual Studio 20121. Чтобы начать программировать в этой среде, требуется создать проект
разрабатываемого приложения (программы). Ниже приведена
последовательность действий, приводящих к созданию проекта
Visual C++ с одним файлом исходного кода C++.

1. Вызвать мастер создания нового проекта: Файл → Создать → Проект...

2. Выбрать тип решения (в случае решения задач из пособия — Visual C++ Консольное приложение Win32).

3. В том же окне ввести название проекта (в примере —
HelloWorld) и нажать кнопку OK.

4. В появившемся окне выбрать Параметры приложения.

5. Установить флажок Пустой проект, после чего нажать
кнопку Готово.

1Допускается использование других компиляторов и сред разработки.

7

6. В данный момент наш проект пуст. Чтобы вводить C++код, необходимо добавить хотя бы один .cpp-файл: Проект
→ Добавить новый элемент...

7. В появившемся окне выбрать Файл C++ (.cpp), в поле ввода внизу ввести название файла (например, «HelloWorld»)
и нажать кнопку Добавить.

8. Теперь можно набирать код.

Обратите внимание, что по умолчанию проект размещается в отдельной папке, находящейся по адресу Мои документы\Visual Studio 2012\Projects\, название которой совпадает с
названием проекта. Файлы с исходным кодом C++ являются
обычными текстовыми файлами, при необходимости их можно править даже простейшим текстовым редактором: например, встроенным в ОС Windows Блокнотом. Файлы с исходным кодом размещаются во вложенных папках: например, наш
HelloWorld.cpp находится по адресу Мои документы \ Visual Studio 2012 \ Projects \ HelloWorld \ HelloWorld \ HelloWorld.cpp.

1.2.
Структура проекта

В среде Visual C++ проект представляет собой иерархическую структуру, которая отображается в окне Обозреватель решений. На вершине этой структуры находится решение (solution), описание которого хранится в .sln-файле. Решение может
объединять несколько связанных проектов, каждый из которых по умолчанию располагается в отдельной папке внутри
папки решения. Решение создается автоматически вместе с новым проектом.
Проект, в свою очередь, состоит из файлов и позволяет
задать конфигурацию сборки приложения (в нашем случае —
.exe-файла). Описание проекта хранится в файлах с расширениями .vcxproj и .vcxproj.filters.

8

Чтобы настроить конфигурацию решения или проекта, можно щелкнуть правой кнопкой мыши по названию решения или
проекта в окне Обозреватель решений и выбрать пункт меню
Свойства.
Перед тем как запустить только что написанную C++-программу, ее нужно собрать. Процесс сборки проекта состоит из
двух основных этапов:

• компиляция — перевод всех файлов с исходным кодом,
включенных в проект, в машинный код, понятный центральному процессору;

• компоновка — объединение результатов в исполняемый
файл (.exe в ОС Windows), представляющий собой целостное приложение, которое уже можно запустить на
исполнение.

Начать процесс сборки можно различными способами:

• нажав клавишу F7 либо выбрав пункт меню Построение
→ Построить решение (пересобрать только те части решения, которые изменились с момента предыдущей сборки)
или пункт меню Построение → Перестроить решение (выполняет полную пересборку, целиком удаляя результаты
предыдущей сборки);

• нажав клавишу F5 или кнопку в виде зеленого треугольника на панели инструментов, что приведет к запуску
полученного .exe-файла в режиме отладки, если сборка
прошла успешно;

• нажав Ctrl+F5 (см. далее).

Справа от «зеленого треугольника» находится список выбора конфигурации сборки. По умолчанию выбрана конфигурация Debug (отладка). При финальной сборке программных
продуктов обычно используют конфигурацию Release (выпуск).
Эти конфигурации различаются применяемыми компилятором

9

оптимизациями и наличием отладочной информации. В случае необходимости можно добавить дополнительные конфигурации.

1.3.
Простейшая программа

Стандарт C++ строго регламентирует, какой текст может
считаться корректной C++-программой, а какой — нет. Например, мы могли бы попробовать что-нибудь посчитать. Наберем
в окне редактора 2+2=? и нажмем F7.
Увы, компилятор не понял, что означает текст «2+2=?», поскольку он не является корректной C++-программой. Последняя строка вывода сообщает нам количество успешно собранных проектов текущего решения (после слова «успешно»). Количество проектов, сборка которых не удалась, указано после
фразы «с ошибками» (в нашем случае один проект). Наконец,
если какие-то проекты решения не пересобирались (например,
в них не было внесено изменений со времени предыдущей сборки), то их количество будет указано после слова «пропущено».
В списке сообщений компилятора мы можем видеть ошибки (errors) и предупреждения (warnings). Сборка не будет
выполнена успешно, пока есть хотя бы одна ошибка. Предупреждения не препятствуют успешной сборке, но на них следует
обращать внимание, так как они могут указывать на семантические ошибки, допущенные программистом. Компилятор предупреждает, что код выглядит подозрительно, но если вы уверены в том, что все правильно, то можете оставить его без
изменений.
Сообщение об ошибке синтаксическая ошибка: константа
возникло из-за того, что корректная C++-программа не может
начинаться с константы (в нашем случае — с 2). Двойной щелчок по сообщению об ошибке в окне Вывод позволяет перейти
к месту ошибки в тексте программы.
К сожалению, нередко компилятор оказывается неспособным точно определить место синтаксической ошибки (напри
10

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

• комментарии, игнорируемые компилятором;

• директивы препроцессора, выполняемые до компиляции;

• директивы компилятора;

• объявления;

• определения.

Кроме того, программа, которая компилируется в исполняемый файл, должна содержать точку входа (entry point) —
правильно оформленный фрагмент кода, с которого начинается выполнение при запуске приложения. В случае стандартного
C++ точка входа является функцией с именем main, минимально возможный вариант которой выглядит следующим образом.

int main ()
{}

Если вы наберете этот код вместо ранее введенного 2+2=?
и нажмете F5, то проект будет успешно собран, а полученный
в результате сборки .exe-файл — запущен. Так как мы создали проект консольного приложения, то появится окно консоли, с помощью которого можно вводить и выводить текст. Оно
сразу закроется, потому что наша программа ничего не делает,
завершаясь немедленно после запуска.
Полученный в результате сборки .exe-файл можно запустить и напрямую вне отладчика (debugger), который запускается по F5 и позволяет отслеживать процесс исполнения программы. Откомпилированные .exe-файлы располагаются внутри папки проекта в папке, названной по конфигурации сборки. В нашем случае, это Мои документы \ Visual Studio 2012 \
Projects \ HelloWorld \ Debug \ HelloWorld.exe.

11

Строчка в примере есть не что иное, как определение
(definition) функции с именем main, не принимающей параметров и возвращающей целое число. Определение задает некоторую именованную сущность, например функцию или переменную. Благодаря наличию имени мы можем сослаться на эту
сущность в коде, размещенном ниже определения в той же области видимости.
В то время как определение дает исчерпывающее описание
некоторой именованной сущности, объявление (declaration)
лишь вводит имя, сообщая компилятору, что где-то в другом
месте кода дано полное определение. В основном объявления
используются для связи разных частей программы друг с другом и обычно помещаются в заголовочные файлы.
Некоторое имя может соответствовать не более чем одному
определению («правило одного определения»), в то время как
идентичных объявлений может быть много.
Комментарии (comments) предназначены для размещения в коде заметок в виде обычного текста, содержащих пояснения для людей, читающих программу. Кому-то это может показаться странным, однако программы следует писать
в первую очередь для людей, и лишь во вторую очередь — для
компьютеров. Если программа написана неряшливо, путано,
в ней отсутствуют пояснения и не видна логика, то ее очень
трудно отлаживать, развивать и сопровождать, в ней наверняка множество ошибок.

1.4.
Текстовый ввод-вывод

Собственно язык C++ как таковой не содержит никаких
встроенных средств ввода-вывода, работы с файлами, периферийными устройствами и операционной системой. Все эти
средства должны быть взяты из существующих библиотек.
Стандарт C++ определяет минимум функционала, который
должен входить в комплект поставки C++-компилятора. Этот
минимум называется Стандартной библиотекой C++. Что
12

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