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

Основы программирования: язык C++

Покупка
Артикул: 799101.01.99
Доступ онлайн
500 ₽
В корзину
Практикум включает в себя набор лабораторных и самостоятельных работ и предназначен для наработки и закрепления навыков элементарной алгоритмизации и написания программ на языке C++. Предлагаются задачи на организацию вычислений, логические операции, работу с потоками ввода-вывода, одномерными и двумерными массивами, си-строками, конечными автоматами, а также задачи на управление памятью. Для студентов бакалавриата, обучающихся по направлениям «Механика и математическое моделирование» и «Прикладная математика».
Кувшинов, Д. Р. Основы программирования : язык C++ : практикум / Д. Р. Кувшинов, С. И. Осипов ; под общ. ред. Д. Р. Кувшинова ; Министерство науки и высшего образования Российской Федерации, Уральский федеральный университет. - Екатеринбург : Изд-во Уральского ун-та, 2021. - 170 с. - ISBN 978-5-7996-3256-4. - Текст : электронный. - URL: https://znanium.com/catalog/product/1936356 (дата обращения: 28.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ 
РОССИЙСКОЙ ФЕДЕРАЦИИ

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

Рекомендовано методическим советом 
Уральского федерального университета в качестве практикума 
для студентов, обучающихся по направлениям подготовки 
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

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