Компьютерные науки : Основы программирования
Покупка
Издательство:
ФЛИНТА
Автор:
Кувшинов Дмитрий Рустамович
Год издания: 2017
Кол-во страниц: 102
Дополнительно
Вид издания:
Учебное пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-9765-3144-4
Артикул: 678948.01.99
Издание содержит набор теоретических сведений, упражнений и пояснений, предназначенных для формирования и закрепления базовых навыков программирования на языке C++. Отдельное внимание уделено работе с числами с плавающей запятой. Пособие предназначено для студентов, начинающих изучать программирование.
Тематика:
ББК:
УДК:
ОКСО:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ УРАЛЬСКИЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ ИМЕНИ ПЕРВОГО ПРЕЗИДЕНТА РОССИИ Б. Н. ЕЛЬЦИНА Д. Р. Кувшинов КОМПЬЮТЕРНЫЕ НАУКИ Основы программирования Рекомендовано методическим советом УрФУ в качестве учебного пособия для студентов, обучающихся по программе бакалавриата по направлению подготовки 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