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

Информационные технологии. Программирование на C++

Покупка
Основная коллекция
Артикул: 778148.01.99
Настоящее учебно-методическое пособие является продолжением учебно-методических пособий «Информационные технологии. Базовые информационные технологии» и «Информационные технологии. Специальные информационные технологии». Его целью является знакомство студентов с основами программирования на языке C++. В пособии даны сведения, необходимые для изучения языка программирования C++ путем выполнения третьего цикла лабораторного практикума, а также содержатся материалы, позволяющие закрепить полученные знания путем выполнения курсовой работы по программированию. В учебно-методическом пособии предлагаются пошаговые инструкции к выполнению всех работ с опорой на специализированные учебные пособия. Оно будет полезно начинающим преподавателям информатики в качестве пособия, позволяющего организовать их работу.
Гридчин, А. В. Информационные технологии. Программирование на C++ : учебно-методическое пособие / А. В. Гридчин. - Новосибирск : Изд-во НГТУ, 2020. - 68 с. - ISBN 978-5-7782-4174-9. - Текст : электронный. - URL: https://znanium.com/catalog/product/1866900 (дата обращения: 02.05.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Министерство науки и высшего образования Российской Федерации 

НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ 
__________________________________________________________________________ 
 
 
 
 
 
А.В. ГРИДЧИН 
 
 
 
ИНФОРМАЦИОННЫЕ 
ТЕХНОЛОГИИ 
 
ПРОГРАММИРОВАНИЕ НА C++  
 
 
Учебно-методическое пособие 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
НОВОСИБИРСК 
2020 

УДК 621.382-181.48 (075.8) 
Г 836 
 
Рецензенты: 
канд. физ.-мат. наук, доцент Б.К. Богомолов 
канд. техн. наук, доцент Д.Н. Цветков 
 
 
Работа подготовлена на кафедре ППиМЭ  
и утверждена Редакционно-издательским советом университета  
в качестве учебно-методического пособия для студентов,  
обучающихся по программам подготовки бакалавров  
специальностей 11.04.04 «Электроника и наноэлектроника»  
и 28.03.01 «Нанотехнологии и микросистемная техника» 
 
 
Гридчин А.В. 
Г 836  
Информационные технологии. Программирование на C++: 
учебно-методическое пособие / А.В. Гридчин. – Новосибирск: 
Изд-во НГТУ, 2020. – 68 с. 

ISBN 978-5-7782-4174-9 

Настоящее учебно-методическое пособие является продолжением 
учебно-методических пособий «Информационные технологии. Базовые информационные технологии» и «Информационные технологии. 
Специальные информационные технологии». Его целью является знакомство студентов с основами программирования на языке C++. 
В пособии даны сведения, необходимые для изучения языка программирования C++ путем выполнения третьего цикла лабораторного 
практикума, а также содержатся материалы, позволяющие закрепить 
полученные знания путем выполнения курсовой работы по программированию. 
В учебно-методическом пособии предлагаются пошаговые инструкции к выполнению всех работ с опорой на специализированные учебные пособия. Оно будет полезно начинающим преподавателям информатики в качестве пособия, позволяющего организовать их работу.  

УДК 621.382-181.48 (075.8) 

ISBN 978-5-7782-4174-9 
© Гридчин А.В., 2020 
 
© Новосибирский государственный 
 
технический университет, 2020 

ОГЛАВЛЕНИЕ 
 
1. ОСНОВЫ ПРОГРАММИРОВАНИЯ НА ЯЗЫКЕ C++ ................................... 4 
1.1. Общие сведения ........................................................................................... 4 
1.1.1. Основы алгоритмизации процессов ................................................. 4 
1.1.2. Визуализация алгоритмов ................................................................. 8 
1.1.3. Типы данных .................................................................................... 12 
1.1.4. Библиотеки функций ....................................................................... 17 
1.1.5. Как программа становится программой ........................................ 22 
1.2. Общая цель и содержание практикума .................................................... 28 
1.3. Порядок выполнения практикума ............................................................ 30 
1.4. Содержание отчета .................................................................................... 32 
1.5. Вопросы и практические задания на защиту ........................................... 33 
1.5.1. Линейное программирование ......................................................... 33 
1.5.2. Алгоритмы ветвления и выбора ..................................................... 35 
1.5.3. Циклические алгоритмы ................................................................. 37 
1.5.4. Работа с одномерными массивами ................................................. 39 
1.5.5. Работа с динамическими двумерными массивами ....................... 41 
1.5.6. Программирование с использованием строк ................................ 43 
1.5.7. Программирование с использованием структур ........................... 45 
1.5.8. Программирование с использованием функций ........................... 48 

2. РАЗРАБОТКА ПРОГРАММ НА ЯЗЫКЕ С++ ............................................... 51 
2.1. Общие сведения ......................................................................................... 51 
2.2. Порядок выполнения работы .................................................................... 52 
2.3. Рекомендуемый регламент выполнения работы ..................................... 53 
2.4. Общие требования к оформлению работы .............................................. 54 
2.5. Порядок сдачи отчета и защиты курсовой работы ................................. 55 
2.6. Часто задаваемые вопросы (FAQ) ............................................................ 57 
2.7. Типовые задания для выполнения курсовой работы .............................. 60 
Материалы для разработки программ ............................................................. 66 
Библиографический список ................................................................................. 67 
 

1. ОСНОВЫ ПРОГРАММИРОВАНИЯ  
НА ЯЗЫКЕ C++ 

1.1. ОБЩИЕ СВЕДЕНИЯ 

1.1.1. Основы алгоритмизации процессов 

Резкий рост уровня информатизации современного мира, в том 
числе оснащенности каждого отдельно взятого человека современными средствами вычислительной техники, в настоящее время не подлежит сомнению. Компьютеризируется все: мобильные телефоны, 
наручные часы, транспортные средства, дома, квартиры и офисы. По 
сути, все эти устройства представляют собой или включают в свой состав персональные компьютеры (ПК), оснащенные к тому же выходом 
в ГКС Интернет. 
Очевидно, что для успешной работы столь огромного количества 
компьютеров необходимы не только производственные мощности, на 
которых производятся эти ПК, но и огромное количество специалистов, разрабатывающих программное обеспечение (ПО) для этих ПК. 
Программное обеспечение (англ. Software) в отличие от аппаратного 
(англ. Hardware) не требует глубокого знания электроники и электротехники. Однако работа разработчика ПО требует ясной головы,  
т. е. умения логически мыслить, и на этом основании придумывать алгоритмы решения той или иной поставленной задачи.  
Алгоритмизация есть необходимый элемент нашей жизни, вытекающий из потребностей самого человека. Например, если у человека 
есть потребность в молоке, а при этом он живет в городе, то для реализации своей потребности он разрабатывает алгоритм, как это сделать. 
Это может быть следующая последовательность действий: 
 Встать 
 Одеться и обуться 

 Выйти из квартиры 
 Спуститься по лестнице 
 Выйти на улицу 
 Дойти до магазина 
 Выбрать молоко 
 Расплатиться 
 Дойти до дома 
 Подняться по лестнице 
 Войти в квартиру 
 Разуться и снять верхнюю одежду 
 Пройти в кухню 
 Налить молоко в стакан 
 Оставшееся молоко поставить в холодильник 
Этот алгоритм человек выполняет не задумываясь, исходя из своего собственного жизненного опыта. Аналогичным образом, не задумываясь, человек действует и во многих других ситуациях современной 
жизни. Любой специалист, зная свою профессию и находясь в рамках 
своей зоны ответственности, также способен действовать в любой, 
профессионально знакомой ему ситуации, и также способен действовать не задумываясь. Это экономит время, дает возможность выиграть 
его в тех случаях, когда этого времени просто нет: например, в случае 
стихийного бедствия, аварии, во время хирургической операции, в 
космосе, под водой и т. п. 
Человеку легко следовать уже кем-то придуманному алгоритму. 
Несравненно 
более 
трудно 
самому 
разрабатывать 
алгоритмы.  
Но именно это искусство и составляет основу того, что называется 
программированием. Многие, особенно пытающиеся изучать программирование самостоятельно, делают основной упор на изучение языков 
программирования (например, C#, Delphi или Java). Однако современный ПК есть совокупность трех основных систем: аппаратного обеспечения (в которое входит все так называемое «железо ПК»), лингвистического обеспечения (это и есть компьютерные языки программирования), а также математического обеспечения, которое и отвечает на 
вопросы: «Что считать?» и «Как считать?». 
Поэтому для изучения ПК на уровне пользователя, умеющего произвести несложные расчеты или сконструировать программу или сайт 
из готовых блоков, как это уже практикуется в мире, нет особой нужды 
задумываться о том, как, собственно говоря, считает ПК. Главное, что 

он производит необходимые расчеты. Однако при таком подходе специалист привыкает мыслить шаблонно, что снижает ценность его как 
специалиста. Таким образом, для того чтобы изучить программирование на серьезном уровне, необходимо начинать вовсе не с языков программирования, а именно с алгоритмов. И лишь затем, разобравшись в 
вопросах: «Почему?» и «Для чего?» – приступать к изучению языков 
программирования. 
Для начала знакомства с алгоритмами разберем небольшой пример. 
Пусть имеется студент, которому задана курсовая работа по программированию. Есть поставленная задача, которую он должен решить к 
определенному сроку и притом решить ее с помощью составления 
программы на определенном языке программирования. Каковы должны быть в таком случае действия студента? 
Для ответа на этот вопрос рассмотрим возможности студента.  
Он может: 
 во-первых, обратиться к старшекурсникам за уже готовой программой. Но в этом случае ему придется разобраться с текстом этой 
программы, не говоря уже о том, что в случае какого-либо сбоя в ее 
работе (например, при перенесении на другой ПК) ему придется налаживать ее работу. Если это случится, например, при защите курсовой 
работы, это будет очевидным знаком преподавателю, что этот студент, 
скорее всего, не сам делал свою работу. Он непременно попытается 
выяснить, так ли это, путем постановки вопросов по тексту программы. И если студент не разобрался в ее алгоритме работы, то его недостаточное знание немедленно будет обнаружено и оценено неудовлетворительной оценкой; 
 во-вторых, заказать работу в какой-либо фирме. В этом случае 
студенту также придется разбираться с уже написанной программой. 
Для облегчения себе задачи он может обратиться за помощью к специалисту, но это увеличивает финансовые затраты и не всегда дает гарантии получения желаемого результата; 
 в-третьих, найти подобную программу и переделать ее под свои 
потребности. В этом случае студент будет пользоваться алгоритмом, 
разработанным другим человеком либо приспособленным другим человеком под решение его задачи. Однако для приспособления того же 
алгоритма под решение уже новой задачи студенту потребуется,  
во-первых, понять, как именно решалась прежняя задача и какие 
именно команды требуется удалить из программы; во-вторых, понять, 

какие команды поставить на место удаленных команд. Все это требует, 
по сути, двойной работы, поскольку вместо одной задачи приходится 
решать полторы, а то и две, а отчитываться, разумеется, только за одну. Мало того, требуется быть внимательным, чтобы где-нибудь в 
комментариях к программе не осталось того, что относилось к решению прежней задачи. Иначе это непременно вызовет подозрение у 
преподавателя и приведет студента к необходимости отвечать на дополнительные вопросы по программе; 
 в-четвертых, написать программу самому от начала до конца и 
«с чистого листа». Этот способ – максимально трудоемок, требует 
вдумчивого подхода к решению задачи, но он – единственный, который гарантирует студенту максимальное понимание того, о чем программа и как она работает. При таком подходе естественным образом 
возникает необходимость в консультациях преподавателя либо обращении к специальной литературе (либо и то и другое вместе). Консультации преподавателя позволят студенту точнее двигаться по пути 
создания программы и вместе с этим снизить количество вопросов 
преподавателя при защите работы. 
Очевидно, что для студентов, ответственно относящихся к процессу своего образования, наилучшим образом подходит последний способ. Однако и в нем существуют определенные возможности, способные как усложнить, так и упростить решение поставленной задачи. 
Например, нам уже известно, что составление программы начинается с 
использования алгоритмов. Но как представить себе этот алгоритм?  
В виде последовательности команд на языке программирования? Но 
для этого нужно, по крайней мере, знать, какие именно команды могут 
нам потребоваться, а это опять упирается в необходимость понимания 
того же самого алгоритма.  
Можно попытаться, конечно, обойти эту трудность, просто представив себе мысленно необходимую последовательность действий, 
полагаясь при этом на свою собственную интуицию или уже имеющийся опыт в программировании. Но, как правило, такое возможно 
лишь для относительно простых алгоритмов. Если он достаточно сложен, то представить себе мысленно все его разветвления в виде некой 
единой разветвленной конструкции едва ли вообще представляется 
возможным. Поэтому сложные конструкции алгоритмов, как правило, 
визуализируют. Удобным способом такой визуализации являются 
блок-схемы. 
 

1.1.2. Визуализация алгоритмов 

Блок-схема – это схематичное изображение алгоритма работы 
программы, реализуемое при помощи специальных символов – блоков. 
Блоки в блок-схеме изображаются в соответствии с требованиями 
стандарта (ГОСТ 19.701 – 90) и располагаются в строгом порядке. Этот 
стандарт находится в открытом доступе в ГКС и блок-схемы рекомендуется изображать в соответствии с требованиями этого стандарта. 
Блок-схема изображается на рисунке в виде последовательности 
блоков, соединенных между собой связями в виде стрелок. Блок может 
содержать одну или несколько одинаковых операций. В соответствии 
со стандартом каждая программа имеет свое начало и свой конец.  
Они изображаются в виде прямоугольников со скругленными углами. 
У программы может быть только одно начало и только один конец. 
Все операции по вычислению каких-либо величин обозначаются в виде прямоугольников. Внутри прямоугольников указывают наименования вычисляемых величин без указания формул, по которым они вычисляются. 
Операции ввода информации на блок-схеме изображаются в виде 
параллелограмма с указанием внутри него вводимых величин. Операция вывода информации не эквивалентна операции ввода и на блоксхеме может обозначаться различным способом в зависимости от того, 
куда выводится информация. Если информация выводится на дисплей 
ПК, то на блок-схеме он изображается в виде условного символа – пятиугольника с изогнутой одной стороной. Если информация выводится 
на печать, то печатный лист изображается на блок-схеме в виде условного символа – прямоугольника, нижняя сторона которого представляет собой волнистую линию. Если информация выводится в базу данных, то последняя изображается в виде цилиндра, расположенного горизонтально.  
Приведенные выше операции обычно входят в состав линейного 
алгоритма – процесса, в ходе которого операции выполняются последовательно одна за другой. Если реализация задачи требует наличия вариантов, то в этом случае применяются алгоритмы ветвления 
и выбора. 
Алгоритм ветвления подразумевает создание точки ветвления 
программы – команды, которая имеет два различных способа выполнения в зависимости от реализации поставленного условия. Если условие выполняется, программа реализует одну цепочку действий; если 

нет, то другую. Этот выбор не подразумевает наличия множества вариантов, хотя с помощью операций ветвления мы можем построить 
каскадный алгоритм, в котором можно предусмотреть несколько возможных путей реализации программы. Однако в таком случае удобнее 
воспользоваться алгоритмом выбора, сразу предусматривающим 
наличие множества путей реализации программы, при этом путь этот 
определяется при помощи вводимого с клавиатуры или вычисляемого 
в программе параметра. Операции ветвления и выбора изображаются 
на блок-схемах в виде ромба. Если это оператор ветвления, то у ромба 
входная стрелка изображается входящей в верхнюю вершину ромба, а 
две выходные стрелки – выходящими из двух боковых вершин ромба. 
Внутри ромба указывается условие (например, 
1).
x 
 Если оно выполняется, программа идет по левому пути, над которым пишется слово 
«Да», если нет – по правому пути, над которым пишется слово «Нет». 
Если ромб используется для обозначения оператора выбора, то входная стрелка также входит в верхнюю его вершину, а выходная стрелка 
изображается только одна, выходящая из нижней вершины ромба, но 
имеющая столько разветвлений, сколько случаев предусмотрено оператором выбора. Над каждым путем пишется соответствующее ему 
значение параметра выбора. 
Особую категорию алгоритмов составляют циклические алгоритмы. Циклическим алгоритмом, или циклом, называют отрезок программного кода, при котором один и тот же набор операций выполняется такое число раз, которое задано параметрами цикла. В программировании принято различать циклы: условные и безусловные.  
Безусловные циклы – это циклы, в ходе которых один и тот же отрезок программного кода выполняется заданное разработчиком количество раз. При этом с каждым таким повторением на одну и ту же величину (например, на единицу) изменяется (т. е. увеличивается или 
уменьшается) значение индекса цикла, иначе называемого счетчиком. 
По мере достижения счетчиком значения, заданного разработчиком 
цикла, циклическое выполнение заданного в цикле отрезка программного кода прекращается, и программа выполняется далее. 
Не следует путать безусловные циклы с бесконечными циклами. 
Безусловные циклы всегда конечны, поскольку всегда содержат лишь 
определенное количество повторений, задаваемых, как правило, самим 
разработчиком программы. Бесконечный цикл – это цикл, который в 
отличие от безусловного выполняется неограниченно долго и возникает 
самопроизвольно в результате ошибок в разработке алгоритма или  

неправильной его работы в определенных условиях. Такое состояние, 
когда ПК находится в состоянии бесконечного цикла, называется зацикливанием. Выходом из такого состояния может быть либо предусмотренный в программе на этот случай оператор ветвления, вставленный внутрь цикла, либо перезагрузка процессора. 
Условные циклы разделяют на циклы с предусловием и циклы с постусловием. Циклы с предусловием – это циклы, в которых условие 
указывается сразу же перед началом выполнения цикла. В зависимости 
от его выполнения или невыполнения цикл запускается или не запускается. Таким образом, минимальное количество циклов, которые могут быть выполнены, равно нулю (при невыполнении условия цикл 
сразу будет пропущен и больше программа к его выполнению не вернется). Если же применяется цикл с постусловием, то оно проверяется 
после того как цикл выполнится хотя бы один раз. После его первого 
выполнения будет проверено условие цикла на его выполнимость. Если условие будет выполнено, цикл будет выполняться до тех пор, пока 
условие будет выполняться. Как только условие перестанет выполняться, цикл прекратится. Поэтому цикл с постусловием будет выполнен хотя бы один раз. Следует также заметить, что условие может быть 
поставлено и в отрицательной форме. Например, при такой постановке 
условия цикл с постусловием может выполняться до тех пор, пока не 
выполняется поставленное разработчиком цикла условие. 
Безусловные циклические алгоритмы на блок-схемах изображаются в виде шестиугольника, внутри которого указывается строка, описывающая цикл. Далее стрелка идет вниз к операторам цикла, а по 
окончании цикла возвращается в шестиугольник слева (в левую его 
вершину), а затем процесс выходит из правой вершины шестиугольника. Условные циклические алгоритмы на блок-схемах изображаются 
обычными ромбами, как для операторов ветвления. Если условие выполняется, от ромба стрелка идет вниз к операторам цикла и затем 
входит в левую вершину ромба. Если оно не выполняется, стрелка выходит из правой вершины ромба и уходит за пределы цикла. Очевидно, 
что условие цикла может быть поставлено как в утвердительной, так и 
в отрицательной форме (цикл выполняется до тех пор, пока не выполняется заданное условие). 
Работа с программами, как правило, невозможна без использования 
массивов. Понятие «массив» родственно понятиям «множество» и 
«матрица», известным из математики. Как известно, множеством в математике называют некоторую совокупность объектов, характеризуе
мых общим свойством, например: «На улице множество машин» или 
«В университете учится множество студентов». В первом случае общим свойством предметов является: «Быть (т. е. являться) машиной»,  
а во втором: «Быть студентом данного университета». Что касается 
матрицы, то под матрицей понимается таблица, состоящая из какихлибо чисел. Массив в программировании также задается числами (целыми или вещественными в зависимости от обстоятельств). Его можно 
также представить себе на бумаге в виде некоторой таблицы, состоящей из некоторого количества строк и некоторого количества столбцов. Однако это лишь наше представление о массиве. В памяти ПК 
массив представляет собой лишь некоторую совокупность ячеек памяти, в которые записаны элементы данного массива. Выбирая из массива какой-либо элемент, программа адресуется лишь к какой-то из ячеек 
памяти ПК, которая физически существует сама по себе отдельно от 
других. Она связана с другими ячейками памяти, хранящими в себе 
другие элементы этого массива, чисто логически, т. е. в рамках того 
алгоритма, который мы используем при решении задачи. Поэтому и 
относиться к элементам массива следует как к отдельным переменным, объединенным, однако, между собой общим свойством: «Быть 
элементами данного массива». 
Заполнение массива элементами обычно производится при помощи 
циклов, однако размерность массива (число строк  число столбцов) 
имеет значение. Размерность массива может быть задана непосредственно в тексте программного кода (т. е. безусловно), а может быть 
введена пользователем с клавиатуры. В последнем случае массив 
называется динамическим и его размерность может быть переопределена по ходу выполнения программы. 
Если разрабатывается сложная программа, состоящая из нескольких частей, то для программирования могут быть применены подпрограммы, реализуемые в виде структур или функций. Для их понимания рассмотрим программу структурно. 
С точки зрения программирования любая программа есть сложный 
и состоящий из множества частей один составной оператор. В языке 
программирования C++ он заключается между фигурными скобками. 
Этот оператор, по сути, есть функция, решающая ту задачу, ради которой разработана. У нее есть имя (в языке C++ это main). Аналогичным 
образом задаются и другие пользовательские функции. Имена этим 
функциям дает сам разработчик программы. Например, функция fact 
может быть написана для вычисления факториала какого-либо числа.