Основы программирования: язык C++
Покупка
Тематика:
Программирование на C и C++
Издательство:
Издательство Уральского университета
Год издания: 2021
Кол-во страниц: 170
Дополнительно
Вид издания:
Учебное пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-7996-3256-4
Артикул: 799101.01.99
Практикум включает в себя набор лабораторных и самостоятельных работ и предназначен для наработки и закрепления навыков элементарной алгоритмизации и написания программ на языке C++. Предлагаются задачи на организацию вычислений, логические операции, работу с потоками ввода-вывода, одномерными и двумерными массивами, си-строками, конечными автоматами, а также задачи на управление памятью. Для студентов бакалавриата, обучающихся по направлениям «Механика и математическое моделирование» и «Прикладная математика».
Тематика:
ББК:
УДК:
ОКСО:
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ УРАЛЬСКИЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ ИМЕНИ ПЕРВОГО ПРЕЗИДЕНТА РОССИИ Б. Н. ЕЛЬЦИНА Рекомендовано методическим советом Уральского федерального университета в качестве практикума для студентов, обучающихся по направлениям подготовки 01.03.03 «Механика и математическое моделирование», 01.03.04 «Прикладная математика» Д. Р. Кувшинов, С. И. Осипов ОСНОВЫ ПРОГРАММИРОВАНИЯ Язык Практикум Екатеринбург Издательство Уральского университета 2021
УДК 004.43(076.5) ББК 32.973.26-018.1я73 К88 Под общей редакцией Д. Р. Кувшинова Рецензенты: B. С. Тарасян, кандидат физико-математических наук, доцент, заведующий кафедрой «Мехатроника» (Уральский государственный университет путей сообщения); C. В. Булычева, кандидат физико-математических наук, доцент (Магнитогорский государственный технический университет) Кувшинов, Д. Р. K88 Основы программирования : язык C++ : практикум / Д. Р. Кувшинов, С. И. Осипов ; под общ. ред. Д. Р. Кувшинова ; Министерство науки и высшего образования Российской Федерации, Уральский федеральный университет. — Екатеринбург : Изд-во Урал. унта, 2021. — 170 с. : ил. — 30 экз. — ISBN 978-5-7996-3256-4. — Текст : непосредственный. ISBN 978-5-7996-3256-4 Практикум включает в себя набор лабораторных и самостоятельных работ и предназначен для наработки и закрепления навыков элементарной алгоритмизации и написания программ на языке C ++. Предлагаются задачи на организацию вычислений, логические операции, работу с потоками ввода-вывода, одномерными и двумерными массивами, си-строками, конечными автоматами, а также задачи на управление памятью. Для студентов бакалавриата, обучающихся по направлениям «Механика и математическое моделирование» и «Прикладная математика». УДК 004.43(076.5) ББК 32.973.26-018.1я73 ISBN 978-5-7996-3256-4 © Уральский федеральный университет, 2021
Оглавление Предисловие 5 1. Значения и переменные 6 2. Функции 13 2.1. П ри м еры ......................................................................... 14 2.2. Варианты заданий......................................................... 15 3. Командная строка и элементарная алгоритмизация 18 4. Аккумуляция последовательности значений 23 4.1. Примеры ......................................................................... 24 4.2. Варианты заданий ......................................................... 24 5. Табуляция заданной функции 26 5.1. П ри м еры ......................................................................... 27 5.2. Варианты заданий......................................................... 27 6. Логические вычисления 31 6.1. П ри м еры ......................................................................... 32 6.2. Варианты заданий......................................................... 34 7. Простая обработка массива 38 7.1. П ри м еры ......................................................................... 39 7.2. Варианты заданий......................................................... 40 3
8. Процедурное программирование 42 9. Элементарные вычисления 52 9.1. П ри м еры ...................................................................... 53 9.2. Варианты заданий...................................................... 60 10. Массивы и двоичные файлы 63 11. Линейные алгоритмы I 74 11.1. П ри м еры ...................................................................... 75 11.2. Варианты заданий...................................................... 85 12. Случайный лабиринт 88 13. Матрицы 93 13.1. П ри м еры ...................................................................... 94 13.2. Варианты заданий........................................................ 103 14. Линейные алгоритмы II 111 14.1. П ри м еры ........................................................................ 112 14.2. Варианты заданий........................................................ 119 15. Разные задачи I 125 16. Конечные автоматы 130 16.1. П ри м еры ........................................................................ 130 16.2. Варианты заданий........................................................ 136 17. Разные задачи II 141 18. Си-строки 146 18.1. П ри м еры ........................................................................ 147 18.2. Варианты заданий........................................................ 159 19. Введение в численные методы 167
Предисловие Материал книги рассчитан на длину семестра в 18 недель. Предполагается использование стобалльной системы. Каждая из работ помечена либо как лабораторная, либо как самостоятельная. Лабораторная работа выполняется в учебном классе и не разделена на варианты. Самостоятельная работа состоит из набора вариантов и может выполняться в классе и назначаться в качестве домашнего задания. Рекомендуется оценивать работу студента на лабораторной работе (кроме первой) в 0-3 балла (отсутствовал, присутствовал, участвовал, выполнил). Итого, лабораторные работы суммарно дают 0-24 балла. Оставшиеся 0-76 баллов распределяются между самостоятельными работами. Предлагаются следующие максимальные оценки в баллах за самостоятельные работы: Работа Оценка Работа Оценка 2 4 11 8 4 3 13 9 5 4 14 9 6 5 16 10 7 6 18 9 9 9 5
Значения и переменные Цели лабораторной работы • Освоить сборку консольного приложения в среде разработки на языке программирования C++. • Изучить базовые средства текстового ввода-вывода, предоставляемые стандартной библиотекой C++. • Изучить работу операторов C++, выполняющих арифметические операции над целыми числами. • Изучение цикла чтения. Оператор Операция + сложение вычитание * умножение / деление % остаток от деления Арифметические операторы C++ 6
Задание 1. Предполагается, что доступна некая среда разработки (IDE) с установленным компилятором C++. Запустите ее. 2. Создайте новый (пустой) проект консольного приложения. 3. Если создан пустой проект, то он не содержит файлов исходного кода. Добавьте в него новый пустой файл исходного кода на языке C++ (cpp-файл). Далее в данной работе все действия производятся в этом файле. 4. Попробуйте ввести в новый файл текст 2+2 и запустить сборку проекта. Видны ли ошибки компиляции? 5. Введите следующую программу: Пример 1.1. Простейшая программа int main () {} Запустить сборку и исполнение кода. Программа должна собраться без ошибок. 6. Выполните следующую модификацию: Пример 1.2. 2+2? int main() { 2 + 2; } Запустите новую программу. Выводы? 7. Выполните следующую модификацию: Пример 1.3. Текстовый вывод #include <iostream > int main ( ) { std : : cout << (2 + 2); } 7
Здесь iostream — заголовочный файл, часть стандартной библиотеки C++. Заголовочные файлы подключаются с помощью директивы препроцессора #include, после которой идет имя подключаемого файла, указываемое или в «угловых скобках» (знаки «меньше» и «больше»), или в кавычках (знак "). Стандартные заголовочные файлы C++ не имеют расширения (iostream, но не iostream.h и не iostream.hpp). Кавычки принято использовать, когда подключается файл из проекта или находящийся в одной директории с подключающим его файлом исходного кода. Угловые скобки принято использовать в том случае, когда подключается файл из стандартной библиотеки или иной библиотеки, путь к которой известен компилятору. 8. Выполните следующую модификацию программы. Пример 1.4. Вывод нескольких значений #include <iostream > int main() { std : : cout << "6wbyw4wgivesw" << (6*4) << "\n"; } Что означает знак *? Что будет выведено, если заменить * на / (деление)? Попробуйте сначала дать ответ на этот вопрос, а затем проверьте свой ответ экспериментом. 9. Запись \n задает символ перевода строки. Если при запуске программы вывод осуществляется в окно консоли, которое сразу закрывается, то можно добавить в программу (перед закрывающей }) одну строчку: std : : cin . ignore (); 10. Выведите значения выражений (4/6), (6/4), (4.0/6), (6.0/4). Проанализируйте полученные результаты. Запустите программу. 8
Когда оба операнда являются целыми числами, выполняется целочисленное деление. В вопросе определения точного смысла операции в C++ основополагающее значение имеет тип операндов. При написании программ очень важно об этом помнить. 11. Выведите значения выражений (4%6), (6%4), ( ( - 6)%4), (6% (-4)) и ( ( - 6)% (-4)). Здесь унарный минус — оператор, выполняющий смену знака. Проанализируйте полученные результаты. 12. Теперь попробуйте ввести и запустить следующую программу. Пример 1.5. Приветствие #include <iostream> int main () { s td: : co ut << " Hello !\n"; s t d : : c i n . ignore (); } Программа должна вывести строку с приветствием, после которой с новой строки ожидать ввод. 13. Часто бывает обременительно в каждом обращении к имени из стандартной библиотеки писать префикс std :: («выбрать имя из пространства имен std»). Чтобы этого не делать, можно указать директиву using namespace std ; после которой компилятор будет искать имена, не найденные в глобальном пространстве имен, в пространстве имен std. Пример 1.6. Уберем префикс std:: #include <iostream> int main () { using namespace std ; 9
cout << " Hello !\n" ; cin . ignore (); } 14. Для того чтобы получить какие-либо данные от пользователя (из потока ввода cin), требуется «застолбить» в памяти место для их размещения, что в C++ осуществляется путем определения переменной подходящего типа. Предположим, мы считываем два целых числа n и т . Определим две переменные: int n, m; Данная строчка требует от компилятора зарезервировать в памяти место под два значения типа int и назначить им имена n и m. Теперь при обращении по имени будет осуществляться доступ к соответствующей области памяти. Основополагающим ее свойством является возможность изменять свое состояние — переменные могут изменять свои значения. 15. Добавьте в программу определение двух целочисленных переменных n и m, как указано в предыдущем пункте. Выведите их значения на экран. Что происходит? Что должно быть выведено? 16. Переменным можно задать начальное значение (инициализировать их). Например, так: int n = 1, m = 2; Задайте начальные значения переменным в программе. Убедитесь, что они теперь выводятся на экран. 17. Наконец, благодаря тому, что у нас есть теперь зарезервированное в памяти место под два числа, мы можем запросить их у пользователя и считать из потока cin. Сделать это можно с помощью оператора >> («направление ввода обратно направлению вывода»): 10