- •Содержание
- •Предисловие
- •1. Основные понятия алгоритмизации и программирования
- •1.1. Этапы решения задач на эвм
- •1. Постановка задачи:
- •2. Формализация (анализ и исследование задачи, модели, представление ее в виде уравнений, соотношений, ограничений и т.П.):
- •Понятие моделирования
- •Отладка программы
- •Тест и тестирование программы
- •1.2. Основы алгоритмизации
- •Свойства алгоритма
- •Критерии качества алгоритма
- •Порядок выполнения алгоритма
- •Способы описания алгоритмов
- •Структурограмма
- •Синтаксическая диаграмма (формулы Бэкуса-Наура)
- •Правила построения блок-схем
- •Общие правила построения схемы алгоритма задачи
- •Типы алгоритмов
- •Виды алгоритмов
- •Базовые алгоритмические конструкции
- •Примеры команды если
- •1.3. Теоретические основы программирования
- •Арифметические выражения
- •Арифметические выражения записываются по следующим правилам:
- •Лабораторная работа № 1 Запись арифметических выражений
- •Задание I
- •Задание II
- •Контрольные вопросы
- •2. Программирование алгоритмов линейной структуры
- •2.2. Основные понятия языка
- •2.3. Данные и способы их организации
- •Порядок объявления и инициализации переменных
- •2.4. Стандартные простые типы данных
- •2.5. Структура программы
- •2.6. Операторы
- •Оператор «выражение»
- •2.7. Организация ввода/вывода данных
- •Организация ввода/вывода в стиле с
- •Лабораторная работа № 2 Программирование алгоритмов линейной структуры
- •Задание I
- •Задание II
- •Задание III
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Пример выполнения лабораторной работы
- •Решение
- •Математическая модель
- •Алгоритм (блок - схема)
- •3. Программа
- •4. Результат работы программы
- •Решение
- •Математическая модель
- •4. Результат работы программы:
- •3. Операторы ветвления
- •3.1. Простые и составные условия
- •Операция &&
- •Операция ||
- •Операция !
- •3.2. Составной оператор
- •3.3. Условная операция (?:)
- •3.4. Условный оператор if
- •If (условие) оператор 1; else оператор 2;
- •If (условие) оператор;
- •3.5. Оператор switch
- •3.6. Оператор перехода goto
- •Лабораторная работа № 3 Программирование алгоритмов разветвляющейся структуры
- •Задание I
- •Задание II
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Пример выполнения лабораторной работы
- •Решение
- •1. Математическая модель
- •4. Результат работы программы
- •Решение
- •1. Математическая модель
- •4. Результат работы программы
- •4. Циклы
- •4.1. Оператор цикла с параметром (for)
- •4.2. Оператор цикла с предусловием (while)
- •4.3. Оператор цикла с постусловием (do while)
- •Отличие оператора цикла while от оператора цикла do..While
- •4.4. Вложенные циклы
- •Математическая модель
- •Лабораторная работа № 4 Программирование алгоритмов циклической структуры
- •Задание I
- •Задание II
- •Задание III
- •Контрольные вопросы
- •Пример выполнения лабораторной работы
- •Решение
- •1. Математическая модель
- •4. Результат работы программы
- •Решение
- •4. Результат работы программы
- •5. Подпрограммы
- •5.1. Понятие подпрограммы
- •5.2. Формальные и фактические параметры
- •5.3. Локальные и глобальные переменные
- •5.4. Функции
- •Лабораторная работа №5 Использование функций для решения прикладных задач
- •Задание I
- •Задание II
- •Контрольные вопросы
- •Пример выполнения лабораторной работы
- •Решение
- •1. Математическая модель
- •3. Программа 4. Результат работы программы:
- •6. Итерация и рекурсия
- •6.1. Понятие итеративного процесса
- •6.2. Понятие рекурсии
- •Лабораторная работа №6 Программирование рекурсивных алгоритмов
- •Задание
- •Контрольные вопросы
- •Пример выполнения лабораторной работы
- •Решение
- •1. Математическая модель
- •2 . Алгоритм
- •3. Программа
- •4. Результат работы программы
- •7. Одномерные массивы
- •7.1. Понятие структурированного типа данных
- •7.2. Понятие и описание типа массив
- •7.3. Одномерные массивы
- •7.4. Основные действия над элементами массивов
- •1. Инициализация массива: присвоение каждому элементу начального значения:
- •2. Вывод массива на экран:
- •3. Обработка массива
- •Лабораторная работа №7 Использование числовых одномерных массивов
- •Задание I
- •Задание II
- •Контрольные вопросы
- •Пример выполнения задания II лабораторной работы
- •Решение
- •Математическая модель
- •4. Результат работы программы:
- •8. Двумерные массивы
- •Лабораторная работа №8 Двумерные массивы
- •Задание I
- •Задание II
- •Контрольные вопросы
- •Пример выполнения лабораторной работы
- •Решение
- •Математическая модель
- •9. Алгоритмы решения задач внутренней сортировки и алгоритмы поиска информации
- •9.1. Сложность алгоритмов
- •9.2. Постановка задачи поиска
- •9.3. Последовательный (линейный) поиск
- •9.4. Бинарный поиск
- •9.5. Постановка задачи сортировки данных
- •9.6. Прямые и быстрые методы внутренней сортировки
- •9.7. Сортировка вставками
- •9.8. Сортировка с помощью прямого выбора
- •9.9. Сортировка с помощью прямого обмена
- •Лабораторная работа № 9 Задачи сортировки и поиска
- •Задание
- •Контрольные вопросы
- •10. Указатели и массивы
- •10.1. Понятие статической и динамической переменной
- •10.2. Указатели
- •10.3. Взаимосвязь между массивами и указателями
- •10.4. Порядок объявления динамических массивов
- •10.5. Передача массивов в качестве параметров функции
- •Лабораторная работа №10 Применение массивов и указателей для решения прикладных задач
- •Задание I
- •Задание II
- •Задание III
- •Контрольные вопросы
- •Пример выполнения задания III лабораторной работы
- •Решение
- •Математическая модель
- •11. Особенности работы с функциями
- •11.1. Способы передачи параметров в функцию
- •11.2. Передача имен функций в качестве параметров
- •11.3. Перегрузка функций
- •Лабораторная работа № 11 Исследование способов работы с функциями
- •Задание I
- •Задание II
- •Контрольные вопросы
- •12. Строки как массив элементов типа char
- •12.1. Способы представления строк в си; реализация некоторых типовых операций над строками
- •12.1. Основные функции Си для работы со строками
- •Лабораторная работа № 12 Обработка символьных массивов
- •Задание I
- •Изучение способов формирования строк в языке Си
- •Задание II
- •Контрольные вопросы
- •Пример выполнения задания II лабораторной работы
- •3. Результат работы программы:
- •13. Строки как объект специального класса string
- •13.2. Основные функции класса string для работы со строками
- •Задание
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Пример выполнения лабораторной работы
- •Результат работы программы:
- •14. Структуры
- •14.1. Порядок объявления и инициализации структур
- •14.2. Программирование с использованием структур
- •14.3. Использование функций для работы с производными типами данных
- •Лабораторная работа № 14 Применение структур для решения прикладных задач
- •Задание I
- •Задание II Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Вариант 11
- •Вариант 12
- •Вариант 13
- •Вариант 14
- •Вариант 15
- •Контрольные вопросы
- •Пример выполнения задания I лабораторной работы
- •2. Программа
- •15. Файлы
- •15.1. Подход с использованием возможностей языка Си
- •Ifstream идентификатор_потока(имя_файла,ключи_потока);
- •Ofstream идентификатор_потока(имя_файла,ключи_потока);
- •Лабораторная работа № 15 Исследование методов доступа к файлам данных
- •Задание I
- •1. Работа с неструктурированными данными
- •2. Работа со структурированными данными
- •Задание II
- •Контрольные вопросы
- •Лабораторная работа № 16 Исследование связанных списков данных
- •Методические рекомендации
- •Исследование формирования элементов связанного списка
- •Int age; // возраст
- •2. Исследование операций с элементами связанных списков
- •If(!start) // если список пуст
- •Void Del(List *cur) // cur - указатель удаляемый элемент
- •If(!p) // дошли до конца не найдя предшествующего
- •Задание на исследование
- •Литература
- •Приложение 1 Порядок выполнения лабораторных работ
- •Приложение 2 Базовые функции
Министерство образования и науки Российской Федерации
Федеральное государственное автономное образовательное учреждение
высшего профессионального образования
«Северо-Кавказский федеральный университет»
Непретимова Е. В., Корнеев П.К., Ионисян А.С.
алгоритмизация и программирование
Учебное пособие
Ставрополь
2014
Печатается по решению
редакционно-издательского совета
Северо-Кавказского федерального
университета
Непретимова Е. В., Корнеев П.К., Ионисян А.С. Алгоритмизация и программирование: Учебное пособие. – Ставрополь: Издательство Северо-Кавказского федерального университета, 2014.– 183 с.
Пособие соответствует государственному образовательному стандарту дисциплины «Информатика» раздел «Программирование» специальности 010400 –физика, а также может быть использовано при преподавании дисциплины «Алгоритмизация и программирование» для студентов специальности 010100 - математика и дисциплины «Информатика» специальности 010500 - прикладная математика и информатика.
В учебном пособии изложены основные положения алгоритмизации и программирования, вводятся и иллюстрируются примерами основные управляющие конструкции, типы данных, функции на примере языка программирования С/С++. Уделено внимание типам данных, определяемым программистом: одномерные, двумерные, динамические массивы, структуры, файлы. Кроме того, показаны особенности программной реализации решения задач обработки текстовой информации, алгоритмов решения задач внутренней сортировки и поиска данных, а также рекурсивных алгоритмов. Приводится большое количество задач для самостоятельного решения, причем задачи не привязаны к конкретному языку программирования, компилятору или среде.
Предназначено для студентов физико-математических специальностей СКФУ. Может быть использовано учителями информатики при обучении программированию учащихся старших классов.
Содержание
Предисловие 6
1. Основные понятия алгоритмизации и программирования 8
1.1. Этапы решения задач на ЭВМ 8
1.2. Основы алгоритмизации 10
1.3. Теоретические основы программирования 18
1.4. Правила записи в С++ арифметических выражений 19
Лабораторная работа № 1 Запись арифметических выражений 21
Контрольные вопросы 23
2. Программирование алгоритмов линейной структуры 25
2.1. Общая характеристика языка программирования С++ 25
2.2. Основные понятия языка 25
2.3. Данные и способы их организации 28
2.4. Стандартные простые типы данных 30
2.5. Структура программы 33
2.6. Операторы 36
2.7. Организация ввода/вывода данных 38
Лабораторная работа № 2 Программирование алгоритмов линейной структуры 46
Контрольные вопросы 52
Пример выполнения лабораторной работы 54
3. Операторы ветвления 57
3.1. Простые и составные условия 57
3.2. Составной оператор 58
3.3. Условная операция (?:) 59
3.4. Условный оператор if 59
3.5. Оператор switch 62
3.6. Оператор перехода goto 63
Лабораторная работа № 3 Программирование алгоритмов разветвляющейся структуры 65
Контрольные вопросы 71
Пример выполнения лабораторной работы 71
4. Циклы 75
4.1. Оператор цикла с параметром (for) 76
4.2. Оператор цикла с предусловием (while) 77
4.3. Оператор цикла с постусловием (do while) 78
4.4. Вложенные циклы 79
Лабораторная работа № 4 Программирование алгоритмов циклической структуры 81
Контрольные вопросы 86
Пример выполнения лабораторной работы 86
5. Подпрограммы 92
5.1. Понятие подпрограммы 92
5.2. Формальные и фактические параметры 92
5.3. Локальные и глобальные переменные 93
5.4. Функции 95
Лабораторная работа №5 Использование функций для решения прикладных задач 98
Контрольные вопросы 100
Пример выполнения лабораторной работы 100
6. Итерация и рекурсия 103
6.1. Понятие итеративного процесса 103
6.2. Понятие рекурсии 103
Лабораторная работа №6 Программирование рекурсивных алгоритмов 105
Контрольные вопросы 109
Пример выполнения лабораторной работы 109
7. Одномерные массивы 112
7.1. Понятие структурированного типа данных 112
7.2. Понятие и описание типа массив 112
7.3. Одномерные массивы 113
7.4. Основные действия над элементами массивов 115
Лабораторная работа №7 Использование числовых одномерных массивов 119
Контрольные вопросы 122
Пример выполнения задания II лабораторной работы 122
8. Двумерные массивы 124
Лабораторная работа №8 Двумерные массивы 128
Контрольные вопросы 131
Пример выполнения лабораторной работы 131
9. Алгоритмы решения задач внутренней сортировки и алгоритмы поиска информации 133
9.1. Сложность алгоритмов 133
9.2. Постановка задачи поиска 134
9.3. Последовательный (линейный) поиск 134
9.4. Бинарный поиск 135
9.5. Постановка задачи сортировки данных 135
9.6. Прямые и быстрые методы внутренней сортировки 136
9.7. Сортировка вставками 137
9.8. Сортировка с помощью прямого выбора 138
9.9. Сортировка с помощью прямого обмена 139
Лабораторная работа № 9 Задачи сортировки и поиска 141
Контрольные вопросы 141
10. Указатели и массивы 142
10.1. Понятие статической и динамической переменной 142
10.2. Указатели 142
10.3. Взаимосвязь между массивами и указателями 143
10.4. Порядок объявления динамических массивов 146
10.5. Передача массивов в качестве параметров функции 146
Лабораторная работа №10 Применение массивов и указателей для решения прикладных задач 149
Контрольные вопросы 154
Пример выполнения задания III лабораторной работы 154
11. Особенности работы с функциями 159
11.1. Способы передачи параметров в функцию 159
11.2. Передача имен функций в качестве параметров 160
11.3. Перегрузка функций 161
Лабораторная работа № 11 Исследование способов работы с функциями 164
Контрольные вопросы 168
12. Строки как массив элементов типа char 169
12.1. Способы представления строк в СИ; реализация некоторых типовых операций над строками 169
12.1. Основные функции Си для работы со строками 171
Лабораторная работа № 12 Обработка символьных массивов 173
Контрольные вопросы 175
Пример выполнения задания II лабораторной работы 176
13. Строки как объект специального класса string 179
13.1. Описание строк в С++ и типовые операции над ними 179
13.2. Основные функции класса string для работы со строками 180
182
Контрольные вопросы 186
Пример выполнения лабораторной работы 186
14. Структуры 187
14.1. Порядок объявления и инициализации структур 187
14.2. Программирование с использованием структур 188
14.3. Использование функций для работы с производными типами данных 189
Лабораторная работа № 14 Применение структур для решения прикладных задач 191
Контрольные вопросы 195
Пример выполнения задания I лабораторной работы 195
15. Файлы 199
15.1. Подход с использованием возможностей языка Си 199
15.2. Подход с использованием возможностей языка С++ 202
Лабораторная работа № 15 Исследование методов доступа к файлам данных 204
Контрольные вопросы 207
Лабораторная работа № 16 Исследование связанных списков данных 208
Литература 212
Приложение 1 Порядок выполнения лабораторных работ 213
Приложение 2 Базовые функции 214
