Академический Документы
Профессиональный Документы
Культура Документы
Содержание
Лекция 1. Понятие алгоритма. Виды алгоритмов
Краткие итоги
Вопросы
Упражнения
Лекция 2. Блок-схемы. Графическая реализация алгоритмов
Занятие 1. Понятие блок-схемы. Основные виды блоков
Занятие 2. Графическая реализация линейного алгоритма
Занятие 3. Графическая реализация разветвляющегося алгоритма
Занятие 4. Графическая реализация циклического алгоритма
Занятие 5. Выполнение блок-схем
Краткие итоги
Вопросы
Упражнения
Лекция 3. Основы программирования на языке С++
Занятие 1. Базовые знания о языке программирования С++
Занятие 2. Начало работы в приложении Microsoft Visual Studio
Занятие 3. Начало работы в приложении Borland С++
Краткие итоги
Вопросы
Упражнения
Лекция 4. Реализация линейного и разветвляющегося алгоритмов
Краткие итоги
Вопросы
Упражнения
Дополнения
Литература
Цель данной лекции – ознакомить студентов с понятием алгоритма; показать, что такая абстрактная
вещь как алгоритм окружает нас в повседневной жизни.
Вообще говоря, первое определение не передает полноты смысла понятия алгоритм. Используемое
слово "последовательность" сужает данное понятие, т.к. действия не обязательно должны следовать
друг за другом – они могут повторяться или содержать условие.
Свойства алгоритмов:
1. Дискретность (от лат. discretus — разделенный, прерывистый) – это разбиение алгоритма на ряд
отдельных законченных действий (шагов).
2. Детерминированность (от лат. determinate — определенность, точность) - любое действие
алгоритма должно быть строго и недвусмысленно определено в каждом случае. Например,
алгоритм проезда к другу, если к остановке подходят автобусы разных маршрутов, то в
алгоритме должен быть указан конкретный номер маршрута 5. Кроме того, необходимо указать
точное количество остановок, которое надо проехать, скажем, три.
3. Конечность – каждое действие в отдельности и алгоритм в целом должны иметь возможность
завершения.
4. Массовость – один и тот же алгоритм можно использовать с разными исходными данными.
5. Результативность – алгоритм должен приводить к достоверному решению.
Основная цель алгоритмизации – составление алгоритмов для ЭВМ с дальнейшим решением задачи на
ЭВМ.
Примеры алгоритма:
intuit.valrkl.ru/course-1345/index.html 2/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Рассмотрим подробно каждый вариант записи алгоритамов на примере следующей задачи. Требуется
найти частное двух чисел.
Словесный способ не имеет широкого распространения, так как такие описания: строго не
формализуемы; страдают многословностью записей; допускают неоднозначность толкования
отдельных предписаний.
Ввод ввод(переменная)
Вывод вывод(переменная)
вывод("фраза")
Ветвление если условие
то действие1
иначе действие2
Повторение пока условие
начало пока
действие
конец пока
Пример псевдокода:
intuit.valrkl.ru/course-1345/index.html 3/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
иначе вывод("нет решения")
кон алг Нахождение частного двух чисел
В данном примере используется три переменные: делимое, делитель и частное. Делимое и делитель
задаются исполнителем произвольными числами. Частное считается лишь в том случае, если делитель
не равен нулю.
1. линейный алгоритм,
2. разветвляющийся алгоритм,
3. циклический алгоритм.
Очевидно, что данный пример относится к линейному алгоритму, т.к. все действия следуют одно за
другим, без условий и повторений.
Самый простой пример реализации разветвляющегося алгоритма – если на улице идет дождь, то
необходимо взять зонт, иначе не брать зонт с собой.
Приведенный выше пример псевдокода по нахождению частного двух чисел также относится к
разветвляющемуся алгоритму.
Циклический алгоритм – это алгоритм, команды которого повторяются некое количество раз подряд.
Самый простой пример реализации циклического алгоритма – при чтении книги будут повторяться
одни и те же действия: прочитать страницу, перелистнуть и т.д.
Краткие итоги
Любая задача может быть разбита на элементарные действия. Для любой математической задачи или
ситуации из жизни можно составить алгоритм решения. Алгоритм может быть описан словесно,
псевдокодом, графически или программно. Задача всегда решается с помощью базовых типов
алгоритма – линейного, разветвляющегося или циклического.
intuit.valrkl.ru/course-1345/index.html 4/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Вопросы
1. Что такое алгоритм?
2. В чем состоит задача алгоритмизации?
3. Какими свойствами обладает алгоритм?
4. Какие виды алгоритма бывают?
Упражнения
1. Составьте алгоритмы по походу в магазин за яблоками. Используйте линейный и
разветвляющийся алгоритмы. Реализуйте их словесно.
2. Составьте алгоритм по нахождению корней квадратного уравнения через дискриминант.
Используйте разветвляющийся алгоритм. Реализуйте его псевдокодом.
Цель данной лекции – ознакомить студентов с понятием блок-схемы; показать основные конструкции
реализации разных видов алгоритма; показать принципы проверки блок-схем и получения по ним
ответа.
Блок-схема состоит из функциональных блоков разной формы, связанных между собой стрелками. В
каждом блоке описывается одно или несколько действий. Основные виды блоков представлены в табл.
2.1.
блок условия
intuit.valrkl.ru/course-1345/index.html 5/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
слева направо стрелку ставить не обязательно. Блоки в блок-схеме имеют только один вход и один
выход (за исключением логического блока – блока с условием).
Блок начала блок-схемы имеет один выход и не имеет входов, блок конца блок-схемы имеет один вход
и не имеет выходов. Блок условия – единственный блок, имеющий два выхода, т.к. соответствует
разветвляющемуся алгоритму. На одном выходе указывается "да", на другом – "нет". Все остальные
блоки имеют один вход и один выход. Блок выполнения действия может содержать присвоение
значения переменной (например " ") или вычисление (например " ").
Все три вида алгоритмов реализуются в блок-схеме названными выше типами блоков. К примеру, в
линейном алгоритме могут присутствовать все блоки, кроме блока условия. В разветвляющемся и
циклическом алгоритмах могут быть использованы все названные виды блоков, но обязательным
является блок условия. Внутри блока условия записывается условие, про которое можно однозначно
ответить, истинно оно или ложно Если условие истинно, то выполняются действия, соответствующие
стрелке "да", иначе стрелке "нет".
Пример 1. Вася хочет позвонить Пете по городскому телефону. Необходимо составить блок-схему,
описывающую порядок действий Васи.
Решение. Чтобы позвонить по городскому телефону, нужно знать номер Пети. Значит, сначала надо
найти номер телефона Пети, набрать его и поговорить с Петей. На этом цель Васи (поговорить с Петей
по телефону) будет достигнута. Результат блок схемы представлен на рис. 2.1.
Пример 2. Ученику требуется купить учебник. Составить блок-схему, описывающую порядок действий
ученика.
Решение. Сначала ученику нужно взять деньги, потом прийти в книжный магазин и заплатить за
учебник. На этом цель (покупка учебника) будет достигнута. Результат блок схемы представлен на рис.
2.2.
intuit.valrkl.ru/course-1345/index.html 6/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Решение. Сначала следует задать значения для чисел и , согласно условиям задачи. После этого
их уже можно будет использовать в расчетах для получения суммы и разности по формулам:
. Полученные значения суммы и разности нужно будет показать на экране, и мы
используем блок вывода данных. Если не выводить данные на экран, то пользователь нашего
алгоритма не узнает, какие получились значения суммы и разности. Результат блок схемы представлен
на рис. 2.3.
intuit.valrkl.ru/course-1345/index.html 7/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
увеличить изображение
Рис. 2.3. Блок-схема для примера 3: а) в каждом блоке по одному действию, б) действия объединены
по смыслу операции
В блок-схеме на рис. 2.3а каждое действие расположено в отдельном блоке. В блок-схеме рис. 2.3б
объединены между собой схожие по смыслу операции. В дальнейшем мы будем объединять некоторые
действия в один блок. Это очень удобно и визуально упрощает чтение блок-схемы.
Внутри блока условия записывается условие. Если данное условие верно, то выполняются блоки,
идущие по стрелке "да", т.е. "Набор действий 1". Если условие оказывается неверным, т.е. ложным, то
выполняются блоки, идущие по стрелке "нет", а именно "Набор действий 2". Разветвление
заканчивается, когда обе стрелки ("да" и "нет") соединяются. На рис. 2.5 представлен еще один
вариант использования блока условия. Бывают задачи, в которых, исходя из условия, необходимо либо
выполнить действие, либо пропустить его. Если условие верно выполняется, то следуют блоки,
соответствующие стрелке "да", т.е. "Набор действий 1". Если же условие оказывается ложным, то
следует перейти по стрелке "нет". Т.к. стрелке "нет" не соответствует ни одного блока с действием, то
ни одного действия не будет выполнено. Т.е. получается, что мы пропустили и не выполнили "Набор
действий 1".
Если необходимо, чтобы оба условия были верными одновременно, то следует использовать логическое
пересечение "И":
intuit.valrkl.ru/course-1345/index.html 8/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Если достаточно, чтобы только одно условие выполнялось – либо первое, либо второе, то следует
использовать логическое объединение "ИЛИ":
Пример 4. Джон звонит Полу по городскому телефону, но трубку может взять не только Пол. Составить
блок-схему, описывающую действия Джона в этом случае.
Решение. В отличие от примера 1, здесь присутствует условие – Пол ли взял трубку телефона. На
данное условие можно однозначно ответить: "да", Пол, или "нет", кто-то другой. Если трубку взял Пол,
то Джону нужно с ним поговорить, и цель будет достигнута. Если трубку взял кто-то другой, то
необходимо позвать Пола к телефону, поговорить с ним, и цель также будет достигнута. Третьего
варианта, например, "не туда попали" или "его нет дома" мы не рассматриваем. Результат блок-схемы
представлен на рис. 2.6.
Пример 5. Ученику требуется купить учебник. В магазине в наличие оказался нужный учебник в
жесткой и мягкой обложке. Составить блок-схему, описывающую действия ученика.
И в том, и в другом случае, цель будет достигнута и задача будет выполнена, т.к. ученик купит
учебник.
intuit.valrkl.ru/course-1345/index.html 9/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Решение. Как и в примере 3, сначала необходимо задать значения и . Затем рассчитать сумму и
разность по формулам: , и вывести полученные числа на экран (блок вывода
данных). Когда значения и будут получены, следует сравнить их между собой. Условие
запишется в виде: . Если полученная сумма будет больше разности , то мы пойдем по
стрелке "да" и выведем фразу " ". Если же условие окажется ложным (т.е. ), то пойдем
по стрелке "нет" и выведем фразу " ". Результат блок схемы представлен на рис. 2.8.
intuit.valrkl.ru/course-1345/index.html 10/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
intuit.valrkl.ru/course-1345/index.html 11/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Если условие верно, то итерация повторяется, если же неверно, то осуществляется выход из цикла. В
отличие от цикла с предусловием, любой цикл с постусловием всегда выполнится хоть раз.
Пример 7. Вася звонит Пете, но у Пети может быть занята линия. Составить блок-схему действий Васи
в этом случае.
Решение. Когда телефонная линия занята, то необходимо снова и снова набирать номер, пока Петя не
закончит предыдущий разговор, и телефонная линия не окажется вновь свободной. Блок-схема
представлена на рис. 2.11.
intuit.valrkl.ru/course-1345/index.html 12/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Здесь тело цикла состоит из одного действия "Набрать номер Пети", т.к. именно это действие следует
повторять, пока линия будет занята. Под итерацией цикла понимается очередная попытка дозвониться
до Пети. Как таковой переменной цикла здесь нет, т.к. ситуация взята из жизни. Выход из цикла
происходит в тот момент, когда условие "У Пети занято" стало неверным, т.е. телефонная линия
свободна – действительно, нет необходимости больше набирать номер Пети. В данном примере
применен цикл с постусловием, т.к. сначала необходимо набрать номер Пети, ведь иначе мы не можем
ответить на вопрос – занята ли линия у Пети.
Пример 8. Ученику требуется купить учебник. Составить блок-схему, описывающую действия ученика в
случае, если учебника нет в ряде магазинов.
Решение. Действия ученика в данном примере очевидны: когда он приходит в первый и любой
последующий магазины, то возможны два варианта – учебник имеется в наличии или учебника нет в
продаже. Если учебника нет в продаже, то ученику следует пойти в другой книжный магазин и
спросить данный учебник, и т.д. пока учебник не будет куплен, т.к. перед учеником стоит конечная
цель – купить учебник. Мы будем использовать цикл с предусловием, т.к. сначала требуется найти
магазин, имеющий в наличии данный учебник. Цикл будет выполняться, пока условие "В данном
магазине нет учебника" будет верным, а выход из цикла осуществится, когда условие станет ложным,
т.е. когда ученик придет в магазин, в котором есть данный учебник. Действительно, в этом случае
ученик купит нужный ему учебник и не будет больше искать книжные магазины. Результат блок-схемы
представлен на рис. 2.12.
intuit.valrkl.ru/course-1345/index.html 13/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Здесь тело цикла состоит из одного действия "Найти другой книжный магазин". Переменной цикла в
явном виде нет, но можно подразумевать номер магазина, в который пришел ученик в очередной раз.
Как любой другой цикл с предусловием, данный цикл может ни разу не выполниться (не иметь
итераций), если в первом же магазине окажется нужный учебник.
Примечание. Если в данную задачу добавить условие выбора учебника в жесткой или мягкой обложке,
как в примере 5, то оно появится после выхода из цикла. На реализацию циклического алгоритма
данное условие не повлияет.
Решение. В отличие от примеров 3 и 6 здесь число меняется от -10 до 10 с шагом 5. Это означает,
что число является переменной цикла. Сначала равно -10 – это первоначальное задание
переменной цикла. Далее будет изменяться с шагом 5, и т.д. пока не будет достигнуто значение 10 –
это соответствует изменению переменной цикла. Итерации надо повторять, пока выполняется условие "
". Итак, будет принимать следующие значения: -10, -5, 0, 5, 10. Число не будет являться
переменной цикла, т.к. и не изменяется по условию задачи. Результат блок-схемы (с
предусловием) представлен на рис. 2.13.
intuit.valrkl.ru/course-1345/index.html 14/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Тело цикла состоит из нескольких действий: вычисление суммы, вычисление разности и вывод
полученных данных на экран. Таким образом, у нас получится несколько значений сумм и разностей,
т.к. изменяется. Количество сумм и количество разностей совпадет с количеством различных
значений , т.е. пять.
Данная задача может быть сделана и с циклом с предусловием, и с постусловием. В этом случае тело
цикла, условие и изменение переменной цикла будут такими же, как и в цикле с предусловием, но
сначала необходимо выполнить тело цикла, а потом проверить условие для выполнения следующей
итерации.
intuit.valrkl.ru/course-1345/index.html 15/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
В данной задаче также могут быть соединены циклический и разветвляющийся алгоритмы, если по
условию задачи требуется сравнить полученные значения суммы и разности, как в примере 6. В этом
случае цикл можно реализовать как с предусловием, так и с постусловием, а сравнение суммы и
разности добавится внутрь тела цикла, т.к. следует сравнить между собой все полученные суммы и
разности. Организация самого цикла останется прежней. Приведем на рис. 2.15а блок-схему с
предусловием, а на рис. 2.15б блок-схему с постусловием.
intuit.valrkl.ru/course-1345/index.html 16/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Выполнение блок-схемы – это прохождение всех действий блок-схемы согласно алгоритму от блока
Начало до блока Конец для получения результата.
Если блок-схема составлена корректно, то, выполнив ее, человек получит ответ к своей задаче. Если
же при составлении блок-схемы были допущены ошибки, то исполнитель либо вообще не дойдет до
блока Конец, либо получит неверный ответ.
Для выполнения нам понадобится поле для расчетов (аналог "оперативной памяти") и поле для вывода
результата (аналог экрана для вывода данных). Экран будем показывать несколько раз в зависимости
от вывода новых данных на экране.
Конец.
Конец.
Выполнение блок-схемы для примера 9. Даны числа . Известно, что число меняется от -10 до 10
с шагом 5, и не изменяется. Вычислить сумму и разность чисел и для всех значений
и .
intuit.valrkl.ru/course-1345/index.html 18/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Экран
S=-3 R=-17
a=a+5=-10+5=-5
{Идем по стрелке вверх}
a≤10 -5≤10 да, верно
S=a+b=-5+7=2
R=a-b=-5-7=-12
Вывод S, R
Экран
S=-3 R=-17
S=2 R=-12
a=a+5=-5+5=0
{Идем по стрелке вверх}
a≤10 0≤10 да, верно
S=a+b=0+7=7
R=a-b=0-7=-7
Вывод S, R
Экран
S=-3 R=-17
S=2 R=-12
S=7 R=-7
a=a+5=0+5=5
{Идем по стрелке вверх}
a≤10 5≤10 да, верно
S=a+b=5+7=12
R=a-b=5-7=-2
Вывод S, R
Экран
S=-3 R=-17
S=2 R=-12
S=7 R=-7
S=12 R=-2
a=a+5=5+5=10
{Идем по стрелке вверх}
a≤10 10≤10 да, верно
S=a+b=10+7=17
R=a-b=10-7=3
Вывод S, R
intuit.valrkl.ru/course-1345/index.html 19/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Экран
S=-3 R=-17
S=2 R=-12
S=7 R=-7
S=12 R=-2
S=17 R=3
a=a+5=10+5=15
{Идем по стрелке вверх}
a≤10 15≤10 нет, ложно {выходим из цикла}
Конец.
Экран
S=-3 R=-17
a=a+5=-10+5=-5
a≤10 -5≤10 да, верно
{Идем по стрелке вверх}
S=a+b=-5+7=2
R=a-b=-5-7=-12
Вывод S, R
Экран
S=-3 R=-17
S=2 R=-12
a=a+5=-5+5=0
a≤10 0≤10 да, верно
{Идем по стрелке вверх}
S=a+b=0+7=7
R=a-b=0-7=-7
Вывод S, R
Экран
S=-3 R=-17
S=2 R=-12
S=7 R=-7
a=a+5=0+5=5
a≤10 5≤10 да, верно
{Идем по стрелке вверх}
S=a+b=5+7=12
R=a-b=5-7=-2
Вывод S, R
intuit.valrkl.ru/course-1345/index.html 20/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Экран
S=-3 R=-17
S=2 R=-12
S=7 R=-7
S=12 R=-2
a=a+5=5+5=10
a≤10 10≤10 да, верно
{Идем по стрелке вверх}
S=a+b=10+7=17
R=a-b=10-7=3
Вывод S, R
Экран
S=-3 R=-17
S=2 R=-12
S=7 R=-7
S=12 R=-2
S=17 R=3
a=a+5=10+5=15
a≤10 15≤10 нет, ложно {выходим из цикла}
Конец.
Пример 10. Даны числа . Известно, что число меняется от -10 до 10 с шагом 5, и не
изменяется. Вычислить сумму и разность и сравнить полученные значения суммы и разности для
всех значений и .
a=a+5=-10+5=-5
{Идем по стрелке вверх}
a≤10 -5≤10 да, верно
S=a+b=-5+7=2
R=a-b=-5-7=-12
Вывод S, R
S>R 2>-12 да, верно
Вывод "Max S"
intuit.valrkl.ru/course-1345/index.html 21/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
S=-3 R=-17 Max S
S=2 R=-12 Max S
a=a+5=-5+5=0
{Идем по стрелке вверх}
a≤10 0≤10 да, верно
S=a+b=0+7=7
R=a-b=0-7=-7
Вывод S, R
S>R 7>-7 да, верно
Вывод "Max S"
a=a+5=0+5=5
a≤10 5≤10 да, верно
{Идем по стрелке вверх}
S=a+b=5+7=12
R=a-b=5-7=-2
Вывод S, R
S>R 12>-2 да, верно
Вывод "Max S"
a=a+5=5+5=10
{Идем по стрелке вверх}
a≤10 10≤10 да, верно
S=a+b=10+7=17
R=a-b=10-7=3
Вывод S, R
S>R 17>3 да, верно
Вывод "Max S"
a=a+5=10+5=15
{Идем по стрелке вверх}
a≤10 15≤10 нет, ложно {выходим из цикла}
Конец.
В процессе составления блок-схемы важно "ходить" по стрелкам из блока в блок, следить, чтобы не
получалось "тупиковых ситуаций". Такая ситуация возникает, если составитель блок-схемы не
intuit.valrkl.ru/course-1345/index.html 22/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
нарисовал стрелку из блока. Также частой ошибкой является замыкание стрелки не в тот блок,
например при реализации циклического алгоритма.
Краткие итоги
Любой алгоритм может быть реализован с помощью блок-схемы. Для каждого вида алгоритма
предусмотрена своя конструкция из определенных блоков. Проверка блок-схемы и получение
результата достигается при выполнении блок-схемы.
Вопросы
1. Что такое блок-схема?
2. Какие типы блоков бывают?
3. Какие блоки используются при реализации линейного, разветвляющегося, циклического
алгоритмов?
4. Можно ли составить разные варианты блок-схем для одной и той же задачи?
5. Какие виды циклического алгоритма бывают?
6. Какие пункты должны присутствовать в любом цикле?
7. Что такое выполнение блок-схемы?
8. Для чего следует выполнять блок-схему?
Упражнения
1. Составьте блок-схемы для задачи по походу в магазин за яблоками. Используйте линейный,
разветвляющийся и циклический алгоритмы.
2. Составьте блок-схему для нахождения корней квадратного уравнения через дискриминант.
Используйте разветвляющийся алгоритм. Получите ответ, выполнив блок-схему.
3. Составьте блок-схемы для вывода на экран целых чисел от 1 до 10. Используйте цикл с
предусловием, с постусловием. Выполните блок-схемы.
На языке С++ можно составлять программы для инженерных расчетов, также можно строить оконные
проекты, имеющие пользовательский графический интерфейс.
Существует несколько приложений для написания программ на языке С++. Мы будем рассматривать
Microsoft Visual Studio и Borland C++.
intuit.valrkl.ru/course-1345/index.html 23/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
intuit.valrkl.ru/course-1345/index.html 24/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Библиотека – это файл, в котором описаны функции и операторы. Для каждой смысловой группы
функций своя библиотека. Библиотек в языке C++ предусмотрено много, мы будем рассматривать
только самые необходимые. Нам понадобятся функции для работы с экраном, математические
функции.
1. <iostream> для Visual Studio, <iostream.h> для Borland C++. Библиотека для работы с консолью
(экраном).
Пример использования:
Пример использования:
Самостоятельно не используется.
Пример использования:
precision(n) – функция для отображения на экране дробных чисел с n цифрами после запятой.
Пример использования:
2. <math.h> одинаково для Visual Studio, Borland C++. Библиотека математических функций.
Основные математические функции представлены в табл. 3.3.
Таблица 3.3. Основные математические функции С++
Математическая Программная Описание
функция запись
fabs(x) Модуль числа.
sin(x) Синус числа, аргумент в
радианах.
cos(x) Косинус числа, аргумент в
радианах.
tan(x) Тангенс числа, аргумент в
радианах.
intuit.valrkl.ru/course-1345/index.html 25/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Пример использования:
cout<<setw(5)<<x<<setw(5)<<y<<endl;
На экране выведутся два числа: первое (1.5) в первых пяти ячейках, второе (-73) во вторых пяти
ячейках. _ _ 1 . 5 _ _ - 7 3 .
1. объявить переменную в начале программы, явно указав тип данных для переменной. Пример:
x=7.81;
m=4; z=x+m;
- вычитание x=8-3;
y=x-7.9;
* умножение x=4*2.5;
y=x*4;
/ деление. x=7.5/3.2;
y=x/2.6;
Результатом z=1/3; //z=0 (округление до целого, т.к. делятся целые числа)
деления целых z=1.0/3.0; //z=0.333(3)
чисел является
целое число.
Для сравнения переменных и чисел используются встроенные знаки сравнения, которые приведены в
табл. 3.5. Для их использования не нужно подключать библиотеку.
Для реализации разветвляющегося алгоритма в С++ используется условный оператор if. Приведем
общий вид блок-схем и общий вид записи оператора if:
if (условие) {
Набор_действий_1;
}
else {
Набор_действий_2;
}
if (условие) {
Набор_действий_1;
}
intuit.valrkl.ru/course-1345/index.html 27/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Примечание. Если необходимо выполнить не набор действий, а всего одно действие, то фигурные
скобки можно опустить.
Для реализации циклического алгоритма с предусловием в С++ предусмотрено два оператора цикла
while и for. По одной и той же блок-схеме с предусловием можно написать две программы, одну – с
оператором while, другую – с оператором for. Оператор while удобно использовать, если
неопределенно, сколько итераций нужно сделать, или это трудно сделать. Оператор for удобно
использовать, когда мы заранее знаем количество итераций.
Приведем общий вид блок-схем и общий вид записи операторов while и for:
Оператор while:
x=xn;
while(x<=xk){
Тело_цикла;
x=x+hx;
}
Оператор for:
for(x=xn; x<=xk; x=x+hx){
Тело_цикла;
}
Для реализации циклического алгоритма с постусловием в С++ предусмотрен оператор do while. Блок-
схема и запись оператора do while в общем виде:
Оператор do while:
x=xn;
do{
Тело_цикла;
x=x+hx;
} while(x<=xk);
Существует ряд задач, где изменяется сразу две переменные. Тогда используют вложенные циклы.
Внутри одного цикла (внешнего) организуют другой цикл (внутренний).
intuit.valrkl.ru/course-1345/index.html 28/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Оператор while:
x=xn;
while (x<=xk){
y=yn;
while (y<=yk){
Тело_цикла;
y=y+hy;
}
x=x+hx;
}
Оператор for:
for (x=xn; x<=xk; x=x+hx){
for(y=yn; y<=yk; y=y+hy){
Тело_цикла;
}
}
Оператор do while:
x=xn;
do {
y=yn;
do {
Тело_цикла;
y=y+hy;
} while (y<=yk);
x=x+hx;
} while (x<=xk);
intuit.valrkl.ru/course-1345/index.html 29/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Кроме того, среда Visual Studio оптимизирована для совместного проектирования, разработки и
развертывания корпоративных решений.
Также Visual Studio позволяет создавать проекты, имеющие пользовательский интерфейс (GUI),
работая с разными компонентами, такими как формы, кнопки, списки, меню и т.д.
В рамках данного курса мы будем рассматривать лишь программы, работающие в режиме DOS.
При загрузке приложения из меню Пуск/Программы/Microsoft Visual Studio 2010 появляется главное
окно c начальной страницей программы, которое представлено на рис. 3.1.
увеличить изображение
приложений, т.е. с такими элементами, как кнопки, диалоговые окна, выпадающие списки и т.д.
Для создания программы необходимо нажать Файл/Создать/Проект или нажать на стартовой странице
Visual Studio2010 быструю ссылку Создать проект, выделенную синим цветом. После выбора создания
нового проекта появится другое диалоговое окно Создать проект, где необходимо выбрать требуемые
опции, а именно: в левом столбце необходимо выбрать Visual C++/Win32, справа наверху –
Консольное приложение Win32, справа внизу вписать имя проекта (например, proga1), в графе
расположение выбрать вашу папку, где будут храниться все программы, оставить галочку Создать
каталог для решения. Диалоговое окно Создать проект представлено на рис. 3.2.
увеличить изображение
После этого нужно нажать ОК. Откроется мастер настройки нашего будущего консольного приложения,
который представлен на рис. 3.3.
intuit.valrkl.ru/course-1345/index.html 31/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
увеличить изображение
intuit.valrkl.ru/course-1345/index.html 32/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
увеличить изображение
Требуется нажать кнопку Готово. Тогда в главном окне Visual Studio 2010 закроется начальная
страница, и откроется файл proga1.cpp (правое верхнее поле), окно вывода ошибок и предупреждений
Вывод (правое нижнее поле), Командный обозреватель (левое вертикальное поле). Данный вид
представлен на рис. 3.4.
Файл proga1.cpp предназначен для текста программы (или кода программы), здесь мы будем вписывать
наши операторы, переменные и функции.
Окно вывода пока пусто, т.к. программа еще ни разу не была запущена. После первого запуска в этом
окне будет появляться служебная информация, какой проект запускается, что проверяется, есть ли в
коде программы ошибки и если есть, то какие. Благодаря данному списку ошибок можно легко найти
ошибку в коде программы и исправить. После исправления ошибок следует перезапустить программу
на проверку еще раз. Когда ошибок не будет обнаружено, программа запуститься на выполнение
задачи и появится консоль.
увеличить изображение
Вместо командного обозревателя можно включить Обозреватель решений, в котором видно все файлы
и папки, созданные для нашего нового проекта. Для этого необходимо под Командным обозревателем
нажать кнопку Обозреватель решений. Далее в появившемся списке раскрыть папки Файлы исходного
кода и Заголовочные файлы. Окно Visual Studio с Обозревателем решений представлено на рис. 3.5.
intuit.valrkl.ru/course-1345/index.html 33/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Когда мы составляем программу в Visual Studio, получается целый проект, который автоматически
создается средой Visual Studio. Задача начинающего программиста состоит в том, чтобы напечатать код
своей программы в файле *.cpp и запустить программу на выполнение.
Первые две строчки начинаются двумя символами "//". Данные символы означают, что далее на этой
строчке следует комментарий, он не воспринимается компилятором как код программы и не будет
выдавать ошибку. Удалять эти две строчки не рекомендуется.
Далее следует строчка #unclude "stdafx.h". Данная строка необходима для сборки нашего проекта.
Файл stdafx.h – это один из файлов, автоматически создаваемых для нашей программы, и его можно
увидеть в левом столбце Обозревателя решений. Эту строчку также нельзя удалять.
увеличить изображение
Далее начинается функция int main(). Автоматически Visual Studio называет ее _tmain и вписывает
аргументы int argc, _TCHAR* argv[]. У нас будут самые простые программы для начинающих
программистов, поэтому мы изменяем эту строчку и приводим ее к виду: int main() и оставляем return
0, или void main() и стираем return 0. После проведенной нами подготовки необходимо собрать
проект, нажав в меню Построение/Построить решение. Тогда в поле Вывод начинается проверка
нашего кода. Сейчас проверка прошла успешно и проект построился. Окно Visual Studio после сборки
проекта представлено на рис. 3.6.
Попробуем теперь запустить нашу пустую программу. Для этого на клавиатуре необходимо нажать
Ctrl+F5. Тогда появится консоль со стандартной надписью после выполнения программы "Для
продолжения нажмите любую клавишу…". Консоль представлена на рис. 3.7.
intuit.valrkl.ru/course-1345/index.html 34/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Теперь можно составить простейшую программу, которая напишет на экране фразу "PRIVET,
STUDENT!!!". В код нашей заготовки нужно добавить несколько строк:
#include <iostream> // т.к. нужно будет использовать оператор вывода на экран cout
using namespace std; // подключение пространства имен
cout<<"PRIVET, STUDENT!!!"<<endl; // вывод фразу на экран и перевод курсора на новую строку,
// чтобы стандартная фраза "Для продолжения нажмите любую клавишу…" не "налипла" на нашу фразу.
После этого опять строим решение, т.к. код программы был изменен. Если построение выполнилось
успешно, то можно запускать программу, нажав Ctrl+F5. Если же построение выдало ошибки, то нужно
еще раз все проверить, исправить код, после этого построить проект еще раз. Консоль представлена на
рис. 3.9.
intuit.valrkl.ru/course-1345/index.html 35/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Конечно, в процессе работы с приложением Visual Studio может возникнуть множество вопросов. В
меню программы предусмотрена справка и стандартные примеры, которые можно посмотреть. Чтобы
включить справку, необходимо нажать Справка/Просмотр справки или воспользоваться горячими
клавишами Ctrl+F1. Чтобы посмотреть примеры кодов, в меню нужно выбрать Справка/Примеры.
Допустим, мы установили Borland C++ в папку F:/BC. После установки в папке F:/BC создаем папку
OUTPUT.
При запуске программы Borland C++ (запускаем файл BC.exe) появляется консольное окно приложения
Borland C++, которое представлено на рис. 3.10.
При самом первом запуске Borland C++ нужно зайти в настройки, выбрав в меню Options/Directories,
как показано на рис. 3.11.
intuit.valrkl.ru/course-1345/index.html 36/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
В появившемся диалоге необходимо вписать стандартные папки, как показано на рис. 3.12. После
этого нужно нажать ОК.
Чтобы печатать код программы, необходимо в меню выбрать File/New, тогда появится поле синего
цвета с мигающим курсором, как на рис. 3.13.
intuit.valrkl.ru/course-1345/index.html 37/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Наверху в центре можно увидеть надпись "NONAME00.CPP". Эта надпись показывает название файла с
кодом программы. Ниже расположено поле с названием Message, где будут отображаться ошибки при
проверке программы.
В отличие от Visual Studio, приложению Borland C++ достаточно одного файла с кодом программы,
чтобы выполнить ее. Здесь не будет проекта, как в Visual Studio.
Итак, сохраним наш пустой файл для программы под именем proga1.cpp. Для этого нужно нажать в
меню File/Save as… Появится диалоговое окно Save File As, которое представлено на рис. 3.14.
intuit.valrkl.ru/course-1345/index.html 38/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Здесь необходимо выбрать папку, где будут сохраняться все программы. Папка выбирается в поле
Files. Какая именно папка предлагается для сохранения, можно увидеть внизу на синем поле. Чтобы
выйти из предлагаемой папки, щелкните два раза мышью по двум точкам в списке файлов и папок. В
выпавшем списке выберите нужную папку, щелкнув по ней два раза. Название папки должно
вписаться в верхнюю строку. Если название папки слишком длинное, то Borland C++ сокращает
название и в конце приписывает ˜1. В данном примере название папки было BCprogs, а в приложении
Borland C++ она отображается как BCPROG˜1. Хочется также обратить внимание на то, что в нижнем
синем поле сменилось название текущей папки для сохранения на следующее: F:\BCPROG˜1\*.CPP.
После того, как нужная папка выбрана, необходимо вписать название файла с кодом программы. Для
этого в верхней строке нужно стереть значок "*" и вписать название программы proga1. После этого
можно нажать кнопку ОК. Если вы все сделали верно, то теперь на синем поле для кода программы
будет название \BCPROG˜1\PROGA1.CPP.
Создадим простую программу, которая будет печатать на экране фразу "PRIVET, STUDENT!!!". Набираем
код программы, как показано на рис. 3.16.
intuit.valrkl.ru/course-1345/index.html 39/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Чтобы проверить, есть ли ошибки, в меню необходимо выбрать Compile/Compile или нажать Alt+F9. На
рис. 3.17 показано сообщение о том, что ошибок нет.
Чтобы запустить программу, нужно нажать в меню Run/Run или клавиши Ctrl+F9. После этого внизу в
поле Message появится надпись Linking PROGA1.EXE:. Это служебная информация. Если она появилась,
значит программа запустилась и выполнилась. Чтобы посмотреть на экран с надписью "PRIVET,
STUDENT!!!", необходимо в меню выбрать Window/Output или нажать клавиши Alt+F5. Окно вывода
данных представлено на рис. 3.18.
Краткие итоги
В языке С++ существуют определенные правила оформления программы. Запустить программу можно
в разных средах, например Microsoft Visual Studio или Borland C++.
Вопросы
1. Что такое программа?
2. Какие ключевые слова придусмотрены для типов данных?
3. Какова структура программы С++?
4. Что такое библиотека?
5. Перечислите арифметические операции С++.
intuit.valrkl.ru/course-1345/index.html 40/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Упражнения
1. В программе Microsoft Visual Studio создайте новый проект.
2. Запустите пустую программу.
3. Запустите программу, печатающую на экране фразу.
4. То же самое выполните в приложении Borland C++.
#include <iostream.h>
int main(){
double a, b, S, R;
a=2;
b=7;
S=a+b;
R=a-b;
cout<<"S="<<S<<endl;
cout<<"R="<<R<<endl;
return 0;
}
intuit.valrkl.ru/course-1345/index.html 42/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Ручной счет:
x=1.5
y=sin(1.5)=0.997495
z=ln(1.5)=0.405465
intuit.valrkl.ru/course-1345/index.html 43/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Ручной счет:
x=0.2
y=sin(0.2)=0.198669
z=ln(0.2)=-1.609438
Ручной счет:
x=-2
y=sin(-2)=-0.909297
z=ln(-2)=не существует, что соответствует результату на экране.
#include <iostream.h>
#include <math.h>
int main(){
double x, y, z;
cout<<"vvedi x=";
cin>>x;
y=sin(x);
z=log(x);
cout<<"pri x="<<x<<" y="<<y<<" z="<<z<<endl;
return 0;
}
Примечание. Чтобы не возникало ошибок при вычислении логарифма, надо поставить условие на
аргумент , поэтому данная задача будет рассмотрена ниже при реализации разветвляющегося
алгоритма.
intuit.valrkl.ru/course-1345/index.html 44/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
intuit.valrkl.ru/course-1345/index.html 45/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
#include <iostream.h>
#include <math.h>
int main(){
double x, y, U, V;
cout<<"vvedi x=";
cin>>x;
cout<<"vvedi y=";
cin>>y;
U=pow(x,2.0)+(y+3.0)/(x-1.0);
V=1.0/pow(y,exp(1.0))*pow(sin(sqrt(x)+1.5),2.0);
cout<<"pri x="<<x<<" y="<<y<<endl;
cout<<"U="<<U<<" V="<<V<<endl;
return 0;
}
Решение. Введем обозначения: – радиус, который будет считываться с клавиатуры (т.к. он не задан
конкретным числом); – длина окружности, вычисляемая по формуле – площадь круга,
вычисляемая по формуле .
intuit.valrkl.ru/course-1345/index.html 46/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
#include <iostream.h>
#include <math.h>
int main(){
double r, C, S;
cout<<"vvedi r=";
cin>>r;
C=2.0*M_PI*r;
S=M_PI*pow(r, 2.0);
cout<<"r="<<r<<" C="<<C<<" S="<<S<<endl;
return 0;
}
intuit.valrkl.ru/course-1345/index.html 47/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Будут приведены примеры вычисления функций, заданных на разных промежутках кусочно. Также
приведены принцип и примеры расчетов для кусочных функций, заданных на двух промежутках и на
трех промежутках.
#include <iostream.h>
int main(){
double a, b, S, R;
a=2;
b=7;
S=a+b;
R=a-b;
cout<<"S="<<S<<" R="<<R<<endl;
if(S>R) cout<<"Max S"<<endl;
else cout<<"Max R"<<endl;
return 0;
}
intuit.valrkl.ru/course-1345/index.html 49/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
intuit.valrkl.ru/course-1345/index.html 50/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
#include <iostream.h>
#include <math.h>
int main(){
double x, y, z;
cout<<"vvedi x=";
cin>>x;
y=sin(x);
cout<<"y="<<y;
if(x>0){
z=log(x);
cout<<" z="<<z<<endl;
}
else cout<<" z net"<<endl;
return 0;
}
Решение: Функция задана как кусочная функция, т.е. при разных значениях она считается по-
разному. Следует отметить, что при одном значении аргумента функция будет иметь лишь одно
значение, т.е. функция однозначная. График функции представлен на рис. 4.7.
intuit.valrkl.ru/course-1345/index.html 51/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Посчитаем значение функции при . Прежде всего необходимо проверить, какое условие
верно: " " или " ". Условие для первой ветки функции верно, значит считаем
.
Посчитаем значение функции при . Прежде всего необходимо проверить, какое условие
верно: " " или " ". Условие для второй ветки функции верно, значит считаем
.
При расчете кусочной функции так или иначе сначала проводится проверка условия, поэтому
вычисление таких функций реализуется через разветвляющийся алгоритм. В данном примере будет
один блок разветвления (соответственно один оператор if в программе). Условием будет служить
проверка " ". Если условие верно, то функция считается по первой ветке, если ложно, то по
второй ветке. Второе условие " " будет лишним, т.к. оно соответствует стрелке "нет" от первого
условия " ".
Примечание. Функция – это функция, которая имеет один аргумент. Не следует путать запись
кусочной функции с системой уравнений или системой неравенств, уравнения или неравенства
которых также объединены фигурной скобкой. При расчете кусочной функции не решается никакая
система уравнений, система неравенств, а просто подставляется конкретное значение аргумента и
вычисляется значение функции.
Примечание. При расчете функции не следует сразу рассчитывать обе ветки функции, т.к. в ответ
нам нужен только один результат. Корректно составленный алгоритм не должен быть избыточен. Не
следует повторять одно и то же по сути условие.
intuit.valrkl.ru/course-1345/index.html 52/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
intuit.valrkl.ru/course-1345/index.html 53/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
#include <iostream.h>
int main(){
double x, Z;
cout<<"x=";
cin>>x;
if(x<1){
Z=x+3;
}
else { Z=4*x;
}
cout<<"Z="<<Z<<endl;
return 0;
}
Решение: Функция задана как кусочная функция, определенная на трех промежутках. График
функции представлен на рис. 4.9.
В данной задаче будем использовать два условия для определения нужной ветви функции. Первое
условие " " определяет, следует ли рассчитывать по первой ветви функции. Второе условие "
" определяет, следует ли рассчитывать по второй ветви. Если и первое, и второе условия
intuit.valrkl.ru/course-1345/index.html 54/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Например, нужно вычислить при . Первое условие " " выполняется верно, т.к.
. Следовательно, считать следует по первой ветви, а именно: .
Например, нужно вычислить при . Первое условие " " выполняется неверно, т.к.
2,5>0. Проверяем второе условие " ": 2,5≤5 – верно. Следовательно, считать следует по второй
ветви, а именно: .
Например, нужно вычислить при . Первое условие " " выполняется неверно, т.к. 10>0.
Проверяем второе условие " ": 10≤5 – неверно. Следовательно, ни первое, ни второе условия не
выполнились, и считать следует по третьей ветви, а именно: .
intuit.valrkl.ru/course-1345/index.html 55/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
cout<<"x=";
cin>>x;
if(x<0){ Z=pow(x, 2.0);
}
else {if(x<=5){
Z=fabs(x);}
else {
Z=5.0;}
}
cout<<"Z="<<Z<<endl;
return 0;
}
#include <iostream.h>
#include <math.h>
int main(){
double x, Z;
cout<<"x=";
cin>>x;
if(x<0){
Z=pow(x, 2.0);
}
else {
if(x<=5){
Z=fabs(x);
}
else {
Z=5.0;
}
}
cout<<"Z="<<Z<<endl;
return 0;
}
intuit.valrkl.ru/course-1345/index.html 56/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Примечание. В качестве второго условия можно, конечно, взять " ". Но при проверке первого
условия мы уже знаем, будет ли . Поэтому можно пропустить повторную проверку на
положительность переменной . Также в качестве второго условия можно взять условие " ".
Если оно выполнится верно, то считать следует по третьей ветви, если неверно – то по второй.
Решение: Данный Пример аналогичен Примеру 7. Отличие состоит в том, что сейчас функция
зависит от двух переменных и . Для реализации алгоритма разницы нет, поэтому за основу
возьмем блок-схему и программу из Примера 7.
intuit.valrkl.ru/course-1345/index.html 57/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
#include <iostream.h>
int main(){
double x, y, Z;
cout<<"x=";
cin>>x;
cout<<"y=";
cin>>y;
if(x*y<1){
Z=x+y;
}
else {
Z=x-y;
}
cout<<"Z="<<Z<<endl;
return 0;
}
Ручной счет.
Решение. В данном примере функция определена на трех промежутках, как в Примере 8. Отличие
состоит в том, что зависит от двух переменных и . Для реализации алгоритма разницы нет,
поэтому за основу возьмем блок-схему и программу из Примера 8.
intuit.valrkl.ru/course-1345/index.html 58/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
#include <iostream.h>
int main(){
double x, y, Z;
cout<<"x=";
cin>>x;
cout<<"y=";
cin>>y;
if(x*y<0){
Z=x+y;
}
else {
if(x*y<=5){
Z=x-y;
}
else {
Z=y;
}
}
cout<<"Z="<<Z<<endl;
return 0;
}
Ручной счет:
intuit.valrkl.ru/course-1345/index.html 60/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Решение. Обозначим три числа буквами . Числа будем считывать с клавиатуры. Для
нахождения наибольшего из трех чисел введем еще одну переменную , которая будет хранить
наибольшее значение. Принцип нахождения наибольшего значения заключается в следующем.
Сначала принимаем как первое число . Потом поочередно сравниваем с оставшимися числами
и . Если окажется, что больше уже запомненного , то следует перезаписать ,
изменив его значение на значение . Если же , то изменять не нужно, поэтому ветвь
"нет" будет пустой. Аналогично сравниваем и . После двух сравнений в переменной
будет лежать наибольшее из трех чисел.
Примечание. Если чисел будет больше трех, например, пять чисел, то следует сделать четыре
сравнения.
Если нужно определить наименьшее из большего числа чисел, например, из пяти чисел, то следует
сделать четыре сравнения.
Начало
ввод данных a=23,7; b=-0,4; c=34,28
Экран
a=23,7
intuit.valrkl.ru/course-1345/index.html 61/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
b=-0,4
c=34,28
max=a=23,7
b>max -0,4>23,7 нет
c>max 34,28>23,7 да
max=c=34,28
вывод max
Экран
a=23,7
b=-0,4
c=34,28
max=34,28
Конец.
#include <iostream.h>
int main(){
double a, b, c, max;
cout<<"a=";
cin>>a;
cout<<"b=";
cin>>b;
cout<<"c=";
cin>>c;
max=a;
if(b>max){
max=b;
}
if(c>max){
intuit.valrkl.ru/course-1345/index.html 62/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
max=c;
}
cout<<"max="<<max<<endl;
return 0;
}
Решение. Функция считается как наибольшее из трех выражений. Задача схожа с Примером 11.
Введем обозначения: . Тогда наша задача максимально будет похожа на
Пример 11.
intuit.valrkl.ru/course-1345/index.html 63/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Начало
ввод x=1
Экран
x=1
a=3x=3·1=3
b=10-x=10-1=9
c=|x|=|1|=1
Z=a=3
b>Z 9>3 да
Z=b=9
c>Z 1>9 нет
вывод Z
Экран
x=1
Z=9
Конец.
#include <iostream.h>
#include <math.h>
int main(){
double x, a, b, c, Z;
cout<<"x=";
cin>>x;
a=3.0*x;
b=10.0-x;
c=fabs(x);
Z=a;
if(b>Z){
Z=b;
}
if(c>Z){
Z=c;
intuit.valrkl.ru/course-1345/index.html 64/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
}
cout<<"Z="<<Z<<endl;
return 0;
}
#include <iostream.h>
int main(){
double x, y, a, b, c, Z;
cout<<"x=";
cin>>x;
cout<<"y=";
cin>>y;
a=x+y;
b=x-y;
c=x*y;
Z=a;
if(b>Z){
Z=b;
}
if(c>Z){
Z=c;
}
cout<<"Z="<<Z<<endl;
return 0;
}
Краткие итоги
Одна и та же блок-схема может быть использована при написании разных программ С++. Результат
выполнения программы из-за этого не должен меняться.
Упражнения
1. Составьте блок-схему и программу для вычисления значений функций
при различных значениях
аргументов и .
2. Составьте блок-схему и программу по нахождению корней квадратного уравнения через
дискриминант. Коэффициенты квадратного уравнения считывайте с клавиатуры.
3. Составьте блок-схему и программу, которая спрашивает у пользователя возраст и в соответствии
с возрастной группой ("дошкольник", "школьник", "взрослый", "пожилой") выдает
соответствующую фразу на экран.
4. Составьте блок-схему и программу для вычисления значения функции
intuit.valrkl.ru/course-1345/index.html 66/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Цель данной лекции – научиться правильно реализовывать циклический алгоритм в разных задачах.
Пример 1. Вычислить таблицу " " значений функции при с шагом 2,5.
Решение. Т.к. переменная х имеет не одно, а несколько значений (а именно 0; 2,5), то следует
использовать циклический алгоритм. Решим данную задачу несколькими способами: блок-схема с
предусловием, блок-схема с постусловием, программа с оператором while (соответствует блок-схеме с
предусловием), программа с оператором for (соответствует блок-схеме с предусловием), программа с
оператором do while (соответствует блок-схеме с постусловием).
В теле цикла мы будем считать значение функции и выводить строку со значениями на экран.
intuit.valrkl.ru/course-1345/index.html 67/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Выполнение блок-схемы:
Начало
вывод заголовка таблицы "x, f"
x=0
x≤4 0≤4 да
f=2x+1=280+1=1
вывод x, f
Экран
x f
0 1
x=x+2,5=0+2,5=2,5
наверх
x≤4 2,5≤4 да
f=2x+1=2*2,5+1=6
вывод x, f
Экран
x f
0 1
2,5 6
x=x+2,5=2,5+2,5=5
наверх
x≤4 5≤4 нет
выход из цикла по х
Конец.
intuit.valrkl.ru/course-1345/index.html 68/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
// proga23while.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
double x, f;
cout<<setw(10)<<"x"<<setw(10)<<"f"<<endl;
x=0;
while(x<=4){
f=2.0*x+1.0;
cout<<setw(10)<<x<<setw(10)<<f<<endl;
x=x+2.5;
}
return 0;}
intuit.valrkl.ru/course-1345/index.html 69/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Выполнение блок-схемы:
Начало
x=0
f=2x+1=2*0+1=1
вывод x, f
Экран
x f
0 1
x=x+2,5=0+2,5=2,5
x≤4 2,5≤4 да
наверх
f=2x+1=2*2,5+1=6
вывод x, f
Экран
x f
0 1
2,5 6
x=x+2,5=2,5+2,5=5
x≤4 5≤4 нет
выход из цикла по х
Конец.
Ручной счет:
intuit.valrkl.ru/course-1345/index.html 70/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
В данной задаче:
В теле цикла следует рассчитать значение функции и вывести очередную строку значений
таблицы на экран.
intuit.valrkl.ru/course-1345/index.html 71/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
intuit.valrkl.ru/course-1345/index.html 72/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
// proga24for.cpp: определяет точку входа для консольного приложения.
//
#include "stdafx.h"
#include <iostream>
#include <iomanip>
using namespace std;
int main(){
double x, Z;
cout<<setw(10)<<"x"<<setw(10)<<"Z"<<endl;
for(x=-1; x<=2; x=x+1){
if(x<1){
Z=x+3;
}
else {
Z=4*x;
}
cout<<setw(10)<<x<<setw(10)<<Z<<endl;
}
return 0;}
intuit.valrkl.ru/course-1345/index.html 73/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
#include "stdafx.h"
#include <iostream>
#include <iomanip>
using namespace std;
int main(){
double x, Z;
cout<<setw(10)<<"x"<<setw(10)<<"Z"<<endl;
x=-1;
do{
if(x<1){
Z=x+3;
}
else {
Z=4*x;
}
cout<<setw(10)<<x<<setw(10)<<Z<<endl;
x=x+1;
}while(x<=2);
return 0;}
Ручной счет:
intuit.valrkl.ru/course-1345/index.html 74/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
intuit.valrkl.ru/course-1345/index.html 76/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
intuit.valrkl.ru/course-1345/index.html 77/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
else{
Z=x-y;
}
cout<<setw(10)<<x<<setw(10)<<y<<setw(10)<<Z<<endl;
y=y+5;
}while(y<=15);
x=x+1;
}while(x<=0.5);
return 0;}
Ручной счет:
Решение. Расчет значений функции, вывод таблицы значений на экран, а также нахождение всех
необходимых величин реализуется в цикле по . Поэтому в данной задаче будет организован один
цикл по , в теле цикла будем рассчитывать функцию, выводить на экран строку таблицы,
насчитывать сумму, произведение, минимальное значение функции.
Введем обозначения:
Т.к. нужно найти произведение значений, меньших 6, то следует добавить условие " " при
вычислении произведения.
intuit.valrkl.ru/course-1345/index.html 79/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
return 0;
}
Ручной счет:
Диапазон значений х: 0, 1, 2, 3, 4.
при x=0 f=2x+1=2*0+1=1;
при x=1 f=2x+1=2*1+1=3;
при x=2 f=2x+1=2*2+1=5;
при x=3 f=2x+1=2*3+1=7;
при x=4 f=2x+1=2*4+1=9;
сумма всех значений:S=1+3+5+7+9=25;
произведение значений, меньших 6: P=1*3*5=15;
наименьшее значение функции: min=1.
Примечание. Если функция зависит от двух переменных, то следует реализовывать двумерный цикл,
причем тело внутреннего цикла будет организовано так же, как в данном примере.
*
*
*
*
*
*
*
*
*
Т.к. "змейка" должна быть бесконечной, то необходимо организовать бесконечный цикл. В этом случае
будем использовать оператор while с всегда выполняемым условием true: while(true). Внутри этого
бесконечного цикла будем рисовать один период "змейки", т.е. один холм. За счет бесконечного цикла
на экране будет бесконечное число раз рисоваться наш холм.
Теперь стоит решить, какой ширины будет наша "змейка". Будем запрашивать ширину "змейки" у
пользователя, т.е. с клавиатуры. Обозначим ширину переменной . Холм состоит из двух частей –
расширяющейся и сужающейся. Чтобы нарисовать расширяющуюся часть, будем использовать цикл for
по переменной от 1 до и функцию setw(i). Чтобы нарисовать сужающуюся часть, будем
использовать цикл for по переменной от до 1 и функцию setw(i).
Таким образом, внутри бесконечного цикла while вложены последовательно два цикла for – первый с
увеличением переменной цикла, второй с уменьшением.
Код программы:
intuit.valrkl.ru/course-1345/index.html 80/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
for(i=1; i<=n; i=i+1){
cout<<setw(i)<<"*"<<endl;
}
for(i=n; i>=1; i=i-1){
cout<<setw(i)<<"*"<<endl;
}
}
return 0;
}
Краткие итоги
В любой задаче, где встречается повторение действий, необходимо использовать циклический
алгоритм. От выбора оператора цикла результат не должен зависеть. Принципы вычислений таких
величин, как сумма, произведение и т.д., использует циклический алгоритм в своей основе.
Упражнения
1. Составьте блок-схему и программу для вычисления суммы всех целых чисел от 1 до 100
включительно.
2. Постройте таблицу значений функции при с шагом 0,5.
Определите наименьшее значение функции и значение , при котором оно достигается.
3. Составьте блок-схему и программу для вычисления таблицы значений функций
при c шагом 1. Найдите
сумму всех значений , количество значений , меньших 10, наимешьшее значение ,
наибольшее значение .
4. Составьте блок-схему и программу для вычисления таблицы значений функции
при c
шагом 0,05; y задать с клавиатуры.
5. Составьте блок-схему и программу для вычисления таблицы значений функции
при c шагом 9,3; c
шагом 0,75. Определите наибольшее отрицательное значение функции, наименьшее
положительное значение функции, произведение ненулевых значений функции, количество
значений функции, больших 1 или меньших -1.
6. Составьте программу, которая нарисует на экране геометрическую фигуру. Попробуйте разные
варианты:
квадрат,
треугольник,
прямоугольник.
Модифицируйте программу таким образом, чтобы на экране появлялась фигура заданное число
раз.
Лекция 6. Массивы
Существует ряд задач, в которых одни и те же действия нужно совершить над набором данных,
массивом. Массивы применяются в разных задачах, начиная от математики (вектора, матрицы),
заканчивая оконными приложениями (набор строк, параметры приложения и т.д.).
intuit.valrkl.ru/course-1345/index.html 81/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Цель данной лекции – ознакомить студентов с понятием массива, его видами; показать основные
принципы работы с массивами.
Примеры массивов:
Примечание. Индексация в массиве начинается с 0, т.е. индекс у самого первого элемента в массиве
. Индексация в массиве указана на рис. 6.1.
Способы инициализации одномерного массива представлены в табл. 6.1. Обратим внимание на то, что
число известно заранее и в программе фигурировать не будет.
s=0;
7. вычисление формулы : for(i=0; i<n; i=i+1){
s=s+f(a[i],i);
}
cout<<"s="<<s<<endl;
Массив задан числами (первый способ инициализации), поэтому он будет проинициализирован при
объявлении.
Вывод таблицы на экран нельзя делать в первом цикле, т.к. в каждой итерации будет идти запрос
очередного элемента , тогда таблица со значениями массивов будет смешана с запросом элемента .
intuit.valrkl.ru/course-1345/index.html 84/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
intuit.valrkl.ru/course-1345/index.html 85/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
}
cout<<setw(2)<<"i"<<setw(5)<<"a"<<setw(5)<<"b"<<setw(5)<<"c"<<setw(5)<<"d"<<endl;
for(i=0; i<8; i=i+1){
cout<<setw(2)<<i<<setw(5)<<a[i]<<setw(5)<<b[i]<<setw(5)<<c[i]<< setw(5)<<d[i]<<endl;
}
return 0;
}
Решение.
intuit.valrkl.ru/course-1345/index.html 86/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Ручной счет:
intuit.valrkl.ru/course-1345/index.html 87/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
2. Проинициализировать массив;
3. Провести вычисления, исследования.
intuit.valrkl.ru/course-1345/index.html 88/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
for(j=0; j<m; j=j+1){
cout<<setw(6)<<a[i][j];
}
cout<<endl;
}
intuit.valrkl.ru/course-1345/index.html 89/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
cout<<"jmin="<<jmin<<endl;
tmp=a[i1][j1];
6. поменять элементы и местами: a[i1][j1]=a[i2][j2];
a[i2][j2]=tmp;
s=0;
9. вычисление формулы : for(i=0; i<n; i=i+1){
s=s+f(a[i][j],i,j);
}
cout<<"s="<<s<<endl;
Примечание. Если требуется определить, например, сумму элементов, находящихся над главной
диагональю, то задаем двумерный цикл по и в теле цикла ставим дополнительное условие " "
Каждый указанный этап решается с помощью циклов. Все циклы целесообразно использовать с
предусловием (в программе – оператор for). На первом этапе следует организовать двумерный цикл по
, по , т.к. необходимо задать значениями и вывести на экран весь массив. На втором этапе перед
циклом необходимо задать , а в теле цикла по насчитывать значение . Индекс задаем
как 1, что соответствует второй строке. Следует отметить, что нельзя считать сумму по какой-то
определенной строке (столбце, диагонали) внутри двумерного цикла, т.к. в этом случае будет
intuit.valrkl.ru/course-1345/index.html 90/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
больше в разы (зависит от количества строк/столбцов).На третьем этапе индексы строк берем –
для первой строки, – для третьей строки. Замена строк организуется в одномерном цикле по .
На четвертом этапе матрица а должна быть отображена на экране. Нам требуется показать, что замена
строк выполнена верно.На пятом этапе перед циклом следует задать , а в теле цикла
насчитывать произведение. Цикл организуем одномерный по от 0 до 2 включительно, т.к. согласно
формуле изменяется только .
intuit.valrkl.ru/course-1345/index.html 91/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
intuit.valrkl.ru/course-1345/index.html 92/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Краткие итоги
Самыми распространенными видами массивов являются одномерные и двумерные массивы.
Статические массивы легко задавать и использовать в программе. Циклы делают работу с массивами
удобной и доступной.
Вопросы
1. Что такое массив?
intuit.valrkl.ru/course-1345/index.html 93/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Упражнения
Приведем другой пример. Имеется файл, который содержит какие-то данные. Скажем, нужно их
рассчитать по какой-то формуле. Тогда программа должна считать из файла данные.
intuit.valrkl.ru/course-1345/index.html 94/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
#include <fstream>
fstream f;
3. открыть файл:
для записи в файл:
f.open("1.txt", ios::out);
f.open("1.txt", ios::in);
f<<"x="<<x;
f>>x;
Примечание. При открытии файла на запись файл создается в папке с проектом. Если файл уже
существует, то все содержимое стирается. Если требуется печатать в конец уже существующего файла,
то при открытии файла надо использовать строку:
f.open("1.txt", ios::app);
Решение. Сначала рассмотрим, как выполнить эту задачу в Visual Studio, затем – в Borland C++.
Создадим проект в Visual Studio, назовем его "8.1". При этом генерируется папка с нашим проектом.
Открываем папку 8.1\8.1 и создаем текстовый документ, называем его 1.txt, как показано на рис. 7.1.
intuit.valrkl.ru/course-1345/index.html 95/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Открываем файл 1.txt и записываем одно число, например, -3.27, как показано на рис. 7.2.
Сохраняем и закрываем файл. Теперь переходим в приложение Visual Studio и в нашем проекте
прописываем код программы.
intuit.valrkl.ru/course-1345/index.html 96/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
return 0;
}
Чтобы работать с файлами в Borland C++, создадим папку F:/BC/FILES. Эта папка предназначена для
хранения файлов, с которыми будет взаимодействовать наша программа. Создаем файл 1.txt в папке
F:/BC/FILES, записываем в него число -3.27.
При открытии файла необходимо записать имя файла как FILES/1.txt, чтобы наша программа искала
текстовый файл именно в этой папке.
Код программы:
#include <iostream.h>
#include <fstream.h>
int main()
{
double x;
fstream f;
f.open("FILES/1.txt", ios::in);
f>>x;
f.close();
cout<<"x="<<x<<endl;
return 0;
}
Пример 2. Составить программу, которая производит запись двух чисел в файлы *.txt и *.xls.
Объявим два файловых потока ftxt – для записи в текстовый файл 1.txt, fxls – для записи в
табличный файл 2.xls.
a=7.2 b=-10.89
В файле 2.xls выведем каждый кусочек сообщения в разные ячейки. Для этого следует использовать
символ табуляции "\t".
экран DOS:
Примечание. Файлы 1.txt и 2.xls создаются в папке с проектом 8.2\8.2, как показано на рис. 7.3.
Код программы:
#include <iostream.h>
#include <fstream.h>
int main()
{
double a, b;
fstream ftxt, fxls;
a=7.2;
b=-10.89;
cout<<"a="<<a<<" b="<<b<<endl;
ftxt.open("FILES/1.txt", ios::out);
fxls.open("FILES/2.xls", ios::out);
ftxt<<"a="<<a<<" b="<<b;
fxls<<"a=\t"<<a<<"\tb=\t"<<b;
ftxt.close();
fxls.close();
return 0;
}
экран DOS:
intuit.valrkl.ru/course-1345/index.html 98/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Примечание. Т.к. в примере 2 мы задали имя текстового файла 1.txt так же, как в примере 1, то после
выполнения программы примера 2 в папке FILES будет находиться два файла. Файл 1.txt запишется
заново. При этом потеряется число -3.27, которое мы печатали для примера 1.
Решение. Данный пример решается с помощью циклического алгоритма. Будем использовать цикл for.
Построим таблицу значений функции на экране, а также в файле 1.xls и построим график в MS Excel.
Блок-схема:
Код программы:
экран DOS:
intuit.valrkl.ru/course-1345/index.html 99/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Решение. Матрица а является двумерным массивом, состоящим из пяти строк и пяти столбцов.
Проинициализируем массив по формуле . Массив и все результаты вычислений
будем выводить в файл 1.xls.
Блок-схема:
Код программы:
экран DOS:
Примечание. Если данный код запустить в программе Borland C++, то русский текст следует заменить
латиницей.
Для того, чтобы создать и использовать свою пользовательскую функцию в программе, необходимо:
здесь тип_данных – это возвращаемый тип данных функции, который определяется ответом
функции (выходные данные), имя функции – любое имя (по аналогии с именем переменной),
список параметров – это то, с чем наша функция будет работать (входные данные);
2. описать пользовательскую функцию;
3. вызвать пользовательскую функцию.
Объявление пользовательской фукнции должно быть обязательно до функции main(), описание может
быть вместе с объявлением, а может быть после функции main(). Вызов пользовательской функции
может быть внутри функции main() или внутри другой пользовательской функции.
Первый вариант описания пользовательской функции – до функции main() представлен на рис. 7.4.
intuit.valrkl.ru/course-1345/index.html 101/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Второй вариант описания пользовательской функции – после функции main() представлен на рис. 7.5.
Конечно, приведенные выше варианты не заработают, т.к. они показывают общую структуру записи
программ. В наших примерах всегда будем использовать первый вариант.
Вообще говоря, любую функцию следует воспринимать как некий воображаемый аппарат для
выполнения какой-либо работы. При этом аппарату нужно работать над каким-то материалом, т.е.
входными данными, известными заранее. Этими данными являются параметры функции. Когда аппарат
получил материал, то начинает свою работу. Какую именно работу он будет выполнять с входным
материалом, зависит от шаблона, т.е. от описания функции. После того, как вся работа будет
выполнена, аппарат выдаст нам результат своей работы, некий ответ. Это то, ради чего мы и создавали
этот аппарат. Схемотично данный процесс представлен на рис. 7.6.
intuit.valrkl.ru/course-1345/index.html 102/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Например, для известной нам функции из библиотеки <math.h>, входными данными является
один параметр – вещественное число , сам аппарат представляет собой процесс вычисления синуса
от , результатом является полученное значение синуса. Результат является вещественным числом,
которое задается ключевым словом double. Поэтому можно было бы представить объявление и
описание функции следующим образом:
Здесь внутри функции объявлена локальная переменная double res, в которую будет насчитываться
ответ (res – result – результат). Данная переменная будет видна только внутри пользовательской
функции. Переменная res – это, своего рода, временная переменная для расчета синуса. Строка return
res; выдает в ответ вычисленное значение синуса.
z=sin(1.5);
Примечание. Хотелось бы обратить внимание на разницу между списком параметров при объявлении
функции и список аргументов при вызове функции. Объявление, описание и список формальных
параметров составляют весь шаблон. Здесь параметры представляют собой некие абстрактные
параметры, которые пока нельзя "пощупать". А вот когда идет вызов функции, абстрактные параметры
приобретают вполне реальные формы и становятся аргументами функции, конкретными числами. В
программе это отражается следущим образом. Объявление и описание функции делается один раз:
int main(){
double x, y, z1, z2, z3;
x=10;
y=-0.3;
z1=function(x,y); // первый вариант вызова
z2=function(1.8, y); // второй вариант вызова
z3=function(1.8, 0); // третий вариант вызова
return 0;
}
Решение. Составим схему работы нашей пользовательской функции в общем виде на рис. 7.7.
intuit.valrkl.ru/course-1345/index.html 103/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Т.к. параметр х должен быть вещественным, то ему соответствует тип double. Пользовательская
функция должна считать квадрат числа, поэтому назовем ее kv. В ответ будет выдаваться
вещественное число, поэтому возвращаемый тип у функции будет double.
Код программы:
intuit.valrkl.ru/course-1345/index.html 104/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Код программы:
Код программы:
intuit.valrkl.ru/course-1345/index.html 105/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
int i;
res=0;
for(i=1; i<=n; i=i+1){
res=res+1.0/i;
}
return res;
}
int main(){
int n;
double z;
cout<<setw(10)<<"n"<<setw(10)<<"z"<<endl;
for(n=1; n<=10; n=n+1){
z=fz(n);
cout<<setw(10)<<n<<setw(10)<<z<<endl;
}
return 0;
}
Пример 5. Создать пользовательскую функцию для вывода массива из 5 строк и 5 столбцов на экран.
Решение. Пользовательскую функцию назовем print_mass. В качестве параметра будет сам массив,
например, double х[5][5]. Результатом пользовательской функции является вывод массива на экран,
поэтому никакого числа в ответе не будет. Следовательно, возвращаемый тип на этот раз будет void,
что означает "пустой". В описании пользовательской функции организуем вывод двумерного массива
во вложенном цикле. В функции main() инициализируем два массива и вызовем
функцию print_mass два раза.
Код программы:
intuit.valrkl.ru/course-1345/index.html 106/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Код программы:
Краткие итоги
Чтобы работать с файлами, необходимо использовать переменную типа fstream. Рассмотрены случаи
вывода в файл и чтения из файла.
Вопросы
1. Что такое файловый поток?
2. Что необходимо сделать, чтобы использовать в программе файловый поток?
intuit.valrkl.ru/course-1345/index.html 107/108
3/18/2020 Алгоритмизация. Введение в язык программирования С++
Упражнения
1. Составьте программу, которая создаст следующие файлы:
Дополнения
Литература
intuit.valrkl.ru/course-1345/index.html 108/108