Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Алгоритмизация и программирование. Учебное пособие для студентов направления подготовки 09.03.02 Информационные системы и технологии

.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
1 Мб
Скачать

МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«ДОНБАССКАЯ НАЦИОНАЛЬНАЯ АКАДЕМИЯ СТРОИТЕЛЬСТВА И АРХИТЕКТУРЫ»

О. В. Котова, Ю. В. Скидан

АЛГОРИТМИЗАЦИЯ И ПРОГРАММИРОВАНИЕ

учебное пособие для студентов направления подготовки

09.03.02 Информационные системы и технологии

Макеевка 2024

УДК 004.432.2(075.8) ББК 32.973-018я73 К 73

Рекомендовано к изданию Учёным советом федерального государственного

бюджетного

образовательного

учреждения

высшего

образования

«Донбасская

национальная

академия строительства и

архитектуры»,

03 июня 2024 г., протокол № 11.

 

 

 

Рецензенты:

Жмыхова Т. В., кандидат физико-математических наук, доцент, доцент кафедры информационных систем и технологий федерального государственного бюджетного образовательного учреждения высшего образования «Донбасская национальная академия строительства и архитектуры»;

Гладкова Л. А., кандидат физико-математических наук, доцент кафедры математики и математических методов в экономике федерального государственного бюджетного образовательного учреждения высшего образования «Донецкий государственный университет»;

Мельничук Д. А., кандидат экономических наук, доцент, и.о. заведующего кафедрой высшей математики федерального государственного бюджетного образовательного учреждения высшего образования «Донбасский государственный технический университет» (г. Алчевск, ЛНР).

К 73 Котова, О. В. Алгоритмизация и программирование : учебное пособие для студентов направления подготовки 09.03.02 Информационные системы и технологии / О. В. Котова, Ю. В. Скидан. – Макеевка : ФГБОУ ВО «ДОННАСА», 2024. – 117 с.

Вучебном пособии представлен теоретический материал по основам алгоритмизации

ипрограммирования на языке высокого уровня С++, приведены примеры разработки алгоритмов решения задач и их реализация. Материалы могут быть использованы для проведения лекционных занятий, а также для самостоятельной работы студентов.

Учебное издание ориентировано на студентов, обучающихся по направлению подготовки 09.03.02 «Информационные системы и технологии».

УДК 004.432.2(075.8) ББК 32.973-018я73

© О. В. Котова, Ю. В. Скидан, 2024 © ФГБОУ ВО «ДОННАСА», 2024

2

Оглавление

 

ПРЕДИСЛОВИЕ ..............................................................................................................................................

5

Глава 1. ОСНОВЫ АЛГОРИТМИЗАЦИИ.................................................................................................

7

§ 1. Понятие алгоритма................................................................................................................................

7

§ 2. Основные свойства и принципы разработки алгоритмов................................................................

10

§ 3. Этапы решения задачи........................................................................................................................

13

Глава 2. ЯЗЫКИ ПРОГРАММИРОВАНИЯ

 

И ОСНОВНЫЕ ПОНЯТИЯ АЛГОРИТМИЧЕСКОГО ЯЗЫКА ........................................................

15

§ 1. Алгоритм, язык программирования, программа. .............................................................................

15

§ 2. Компиляторы и интерпретаторы. ......................................................................................................

16

§ 3. Уровни языков программирования....................................................................................................

18

§ 4. Состав и описание алгоритмического языка. ...................................................................................

20

Глава 3. ВВЕДЕНИЕ В СЕМЕЙСТВО

 

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

22

§ 1. Алфавит языка С/С++. ........................................................................................................................

22

§ 2. Типы данных и переменные...............................................................................................................

26

§ 3. Структура программы. Ввод и вывод данных..................................................................................

28

§ 4. Операции и выражения.......................................................................................................................

30

Глава 4. ОПЕРАТОР ПРОСТОЙ

 

ПОСЛЕДОВАТЕЛЬНОСТИ ДЕЙСТВИЙ ..............................................................................................

37

§ 1. Функции ввода/вывода данных..........................................................................................................

37

§ 2. Преобразование типов. .......................................................................................................................

40

§ 3. Стандартные математические функции. ...........................................................................................

45

Глава 5. УСЛОВНЫЕ КОНСТРУКЦИИ..................................................................................................

50

§ 1. Условный оператор if..........................................................................................................................

50

§ 2. Оператор множественного выбора (переключатель) switch............................................................

55

Глава 6. ЦИКЛИЧЕСКИЕ КОНСТРУКЦИИ

 

И ОПЕРАТОРЫ ПЕРЕХОДА....................................................................................................................

65

§ 1. Оператор цикла с параметром (счетчиком) for. ...............................................................................

65

§ 2. Итерационные циклы while. ...............................................................................................................

69

§ 3. Оператор перехода break и continue. .................................................................................................

72

§ 4. Оператор безусловного перехода goto. .............................................................................................

74

§ 5. Оператор return....................................................................................................................................

75

3

Глава 7.УКАЗАТЕЛИ И МАССИВЫ ДАННЫХ ....................................................................................

81

§ 1. Указатели. ............................................................................................................................................

81

§ 2. Массивы данных..................................................................................................................................

82

§ 3. Линейный поиск и сортировка в массивах данных..........................................................................

87

§ 3. Генерация случайных чисел...............................................................................................................

88

Глава 8. ФУНКЦИИ .....................................................................................................................................

99

§ 1. Функции: определение и структура...................................................................................................

99

§ 2. Формальные и фактические параметры функции..........................................................................

100

§ 3. Способы передачи параметров функции. .......................................................................................

100

§ 4. Объявление функции, её вызов........................................................................................................

101

Глава 9. СТРОКИ ........................................................................................................................................

106

§ 1. Строки. ...............................................................................................................................................

106

§ 2. Операции со строками. .....................................................................................................................

107

ПРИЛОЖЕНИЕ 1 .........................................................................................................................................

114

ПРИЛОЖЕНИЕ 2 .........................................................................................................................................

116

СПИСОК ЛИТЕРАТУРЫ............................................................................................................................

117

4

ПРЕДИСЛОВИЕ

Согласно образовательной программе бакалавритата ФГБОУ ВО «Донбасская национальная академия строительства и архитектуры» по направлению подготовки 09.03.02 «Информационные системы и технологии» по дисциплине «Алгоритмизация и программирование» предусмотрено 7 зачетных единиц (252 часа). Из них в первом семестре 144 часа: 18 ч лекций, 54 ч лабораторных занятий, 70 ч самостоятельной работы и 2 ч консультаций; во втором семестре 108 часов: 54 ч лабораторных занятий, 31 ч самостоятельной работы, 3 ч выполнение курсовой работы, 2 ч консультаций, 16 ч контроля и 2 ч промежуточной аттестации.

Материал данного учебного пособия включает теоретические основы алгоритмизации и современных технологий программирования, которые излагаются в первом семестре на лекционных занятиях. Во втором семестре изучение дисциплины направлено на закрепление у обучающихся практических навыков программирования на лабораторных занятиях.

Задачами дисциплины «Алгоритмизация и программирование» являются:

изучение основных положений теории алгоритмов;

реализация различных алгоритмов на языке программирования высокого уровня

С++;

− овладение основными приемами алгоритмизации и приобретение базовых навыков программирования при решении задач профессиональной сферы.

Представленное учебное издание содержит девять разделов:

основы алгоритмизации,

языки программирования и основные понятия алгоритмического языка,

введение в семейство языков программирования С\С++,

оператор простой последовательности действий,

условные конструкции,

циклические конструкции и операторы перехода,

указатели и массивы данных,

функции,

строки.

Каждый раздел включает от двух до пяти параграфов, наполненных теоретическим материалом по основам алгоритмизации и программирования на языке высокого уровня С++. Одним из способов изучения языка программирования является представление его на примерах составления простейших программ с подробным разбором их содержания. В дан-

5

ном пособии рассмотрены задачи с математической моделью решения, описанием алгоритма, написанным кодом и видом кода в компиляторе языка С++, а также результатом реализации программы в соответствие с изложенным теоретическим материалом.

Для удобства в учебном пособии основные понятия, встречающиеся впервые в тексте, выделены курсивом. Примеры и тексты программ к задачам расположены в блоках вида:

Текст программы к задаче 5.

--------------------------------------------------------------------------------------------------

…………………………………………

--------------------------------------------------------------------------------------------------

Далее приводится вид компьютерного кода в компиляторе языка С++, а затем результат реализации программы. При этом, ввиду того что язык программирования С++ плохо совместим с русскими символами, при составлении компьютерного кода авторы используют английский язык.

Вконце учебного издания в Приложении 1 приведены ключевые слова языка программирования С/С++, их описание и указаны страницы, на которых встречается упоминание о них.

ВПриложении 2 приведен список заголовочных файлов, используемых в языке C++,

истарые названия – в языке С.

Уровень изложение материала в пособии ориентирован на читателей. владеющих базовыми знаниями по алгоритмизации и умеющих работать хотя бы на одном из языков программирования высокого уровня.

Представленное учебное пособие «Алгоритмизация и программирование» рекомендуется использовать для проведения лекционных занятий и для самостоятельной работы студентов, обучающихся по направлению подготовки 09.03.02 «Информационные системы и технологии».

6

Глава 1. ОСНОВЫ АЛГОРИТМИЗАЦИИ

§ 1. Понятие алгоритма.

Одним из основных понятий современной математики является понятие алгоритма. Ещё в эпоху зарождения и развития математики в Древнем Египте, Вавилоне и Греции стали появляться всевозможные вычислительные процессы, которые требовали выполнения определенных последовательных действий согласно установленным правилам. Определение некоторой инструкции для нахождения искомых величин позволяло упорядочить и структурировать механические процессы вычислений.

Современная трактовка подобного порядка действий была дана в середине 30-х годов XX века в работах К. Гёделя, А. Чёрча, А. Тьюринга, Э. Поста, Н. Винера, А. А. Маркова и др. и получила название «алгоритм».

Сам термин «алгоритм» произошел от имени среднеазиатского математика АлХорезми, так как сочинение «Об индийском числе» начиналось словами: «Сказал алХорезми» (лат. – «Dixit Algorithmi»). В работе ученый предложил приемы выполнения арифметических вычислений с многозначными числами. Данный трактат был переведен на латинский язык Бонкомпаньи в середине XII века и сыграл большую роль в развитии европейской математики, а латинизированное имя автора Algorismus или Algorithmus дало слово «алгоритм», которое сейчас понимается шире, не ограничиваясь только арифметическими вычислениями. В русской литературе встречается и устаревшее название «алгорифм».

В настоящее время под алгоритмом понимают строгую и четкую систему правил, определяющую последовательность действий над некоторыми объектами и после конечного числа шагов приводящую к достижению поставленной цели.

Если при решении задачи алгоритм приводит к выполнению арифметических действий, то его называют численным алгоритмом, а если он приводит к логическим действиям, то логическим.

Алгоритм можно представить тремя способами:

словесное описание;

табличный (аналитический) способ;

графический.

Словесный (вербальный) способ подразумевает использование естественного языка в произвольной форме для описания этапов вычислений.

Примером словесного описания является алгоритм проверки принадлежности числа заданному интервалу.

7

Пример. Для того чтобы проверить, принадлежит ли число из некоторого непустого множества = , … , заданному интервалу [ , ]:

1)берём любой элемент (" = %%%%%1, $) множества ;

2)проверяем, принадлежит ли выбранный элемент интервалу [ , ]. Если да, то переходим к пункту 3). Если нет, к пункту 4).

3)Ответ: данный элемент принадлежит интервалу [ , ]. Переходим к пункту 1).

4)Ответ: данный элемент не принадлежит интервалу [ , ]. Переходим к пункту 1).

Табличный (аналитический) способ основан на задании инструкций с использованием математических символов, выражений или таблиц в сочетании со словесными пояснениями.

Примером аналитического описания решения задачи является алгоритм решения квадратного уравнения.

Пример. Для того чтобы решить квадратное уравнение + + = 0, ( ≠ 0):

1)вычисляем дискриминант = − 4 ;

2)если < 0, то действительных решений нет, переходим к пункту 4);

3)находим корни уравнения по формулам: , = ±√ ;

4)решение уравнения закончено.

Графический (схема алгоритма) представляет собой совокупность специальных геометрических символов (блоков), имеющих определенную конфигурацию в зависимости от выполняемой операции, соединенных между собой стрелками, которые указывают последовательность выполнения. Внутри каждого блока может быть записано краткое содержание исполняемых им функций (операций). Блоки на схемах соединяются линиями потоков информации (со стрелками или без). Требования по оформлению блок-схем регламентируются государственными стандартами:

ГОСТ 19.701-90 (ИСО 5807-85). Схемы алгоритмов, программ, данных и систем. Условные обозначения и правила выполнения. Единая система программной документации.

ГОСТ 19003-80. Схемы алгоритмов и программ. Обозначения условные графические. Единая система программной документации.

8

Основные условные обозначения, используемые при графической записи блок-схем, приведены в табл. 1.

Табл. 1 Основные условные обозначения блок-схем

Наименование

Обозначение

Функция

 

 

 

 

вход

 

Пуск/останов

начало

Отображает начало или конец схе-

 

мы, прерывание процесса обработки

(терминатор)

конец

данных или выполнения программы

 

выход

 

 

Преобразование данных в форму, Ввод-вывод пригодную для обработки (ввод) или отображения результатов обработки

(вывод)

Процесс

 

 

 

 

 

 

 

 

 

 

 

 

Выполнение

операций

или группы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

операций, в результате которых из-

(операция)

 

 

 

 

 

 

 

 

 

 

 

 

меняется значение, форма представ-

 

 

 

 

 

 

 

 

 

 

 

 

 

ления или расположение данных

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Выбор направления выполнения ал-

Решение

+

 

горитма или программы в зависимо-

 

сти от некоторых переменных усло-

 

 

 

 

 

 

 

 

 

 

 

 

 

вий; используется

как

условный

 

 

 

 

 

 

 

 

 

 

 

 

 

символ или символ выбора

 

 

 

 

 

 

 

 

 

 

 

 

 

Выполнение

операций,

меняющих

Модификация

 

 

 

 

 

 

 

 

 

 

 

команды или группу команд, изме-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

няющих

программу;

 

используется

 

 

 

 

 

 

 

 

 

 

 

 

 

как символ отображения структуры

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

цикл с параметром

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Предопределен-

 

 

 

 

 

 

 

 

 

 

 

Использование ранее

созданных и

 

 

 

 

 

 

 

 

 

 

ный процесс

 

 

 

 

 

 

 

 

 

 

 

отдельно описанных алгоритмов или

(функция)

 

 

 

 

 

 

 

 

 

 

 

программ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

Указание связи между прерванными

Соединитель

 

 

 

 

 

 

 

 

линиями

потока,

связывающими

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

символами;

символ

 

прерывания

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

блок-схемы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Комментарий

 

 

 

 

 

 

 

 

 

 

 

Связь между элементом схемы и по-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

яснением

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9

Набор операторов (команд), реализующий алгоритм решения некоторой задачи, называют программой.

Обратите внимание, существенное отличие алгоритма от программы состоит в том, что в основе первого понятия лежит логическая составляющая, а второго – формальная. Алгоритм по своей сути – это инструкция с чётко определёнными действиями. Программа представляет собой набор алгоритмов, записанный на одном из языков программирования, понятных вычислительной машине (это может быть ПК, блок управления прибора).

Таким образом, алгоритм является методом или схемой воплощения идеи, а программа – это реализация данного метода конкретными средствами.

Порядок разработки программ в совокупности с аппаратным и программным обеспечением для реализации задачи на вычислительной машине называют технологией программирования. Заметим, что программирование – это не только написание программы. В широком смысле программирование – это все технические операции, необходимые для создания программы, включая анализ требований и все стадии её разработки и реализации.

§ 2. Основные свойства и принципы разработки алгоритмов.

Построение алгоритма для решения некоторой прикладной задачи требует глубоких знаний в соответствующей области науки и зачастую сопровождается строгими и громоздкими рассуждениями. Однако, когда алгоритм уже создан, исполнителю необходимо просто следовать определённым командам, не затрачивая сил и времени на исследование задачи.

Каждое указание алгоритма обязывает исполнителя выполнить конкретное законченное действие. Переходить к следующей операции, не сделав предыдущую, нельзя. Все предписания алгоритма необходимо осуществлять последовательно согласно указанному порядку. Только в этом случае гарантировано достижение поставленной цели.

Каждый алгоритм обладает характерными свойствами.

Основные свойства алгоритмов

1.Дискретность – последовательное выполнение конечной (!) последовательности отдельных шагов алгоритма за конечный (!) отрезок времени.

2.Определенность (детерменированность) предполагает, что каждый шаг алгоритма чётко и однозначно в его толковании и исполнении определяет действие.

3.Конечность (результативность) – алгоритм должен приводить к решению задачи за конечное число шагов и обязательно за конечное время.

Обратите внимание, последовательность правил, которая приводит к бесконечному циклу, алгоритмом не является!

4.Массовость определяет возможность применения алгоритма для целого класса по-

10

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]