
- •Содержание
- •1. Основные понятия и определения
- •1.1. Структура персональной ЭВМ
- •1.2. Размещение данных и программ в памяти ПЭВМ
- •1.3. Программные модули
- •1.4. Ошибки
- •1.5. Функциональная и модульная декомпозиции
- •1.6. Файловая система хранения информации
- •1.7. Операционная система
- •2. Понятие алгоритмов и способы их описания
- •2.1. Свойства алгоритмов
- •2.2. Способы описания алгоритмов
- •3. Базовые элементы языка Cи
- •3.1. Алфавит языка
- •3.2. Лексемы
- •3.3. Идентификаторы и ключевые слова
- •3.4. Знаки операций
- •3.5. Литералы (константы)
- •3.6. Комментарии
- •4. Базовые типы объектов
- •4.1. Простейшая программа
- •4.2. Основные типы данных
- •4.3. Декларация объектов
- •4.4. Данные целого типа (int)
- •4.5. Данные символьного типа (char)
- •4.6. Данные вещественного типа (float, double)
- •5. Константы в программах
- •5.1. Целочисленные константы
- •5.2. Константы вещественного типа
- •5.3. Символьные константы
- •5.4. Строковые константы
- •6. Обзор операций
- •6.1. Операции, выражения
- •6.2. Арифметические операции
- •6.3. Операции присваивания
- •6.4. Сокращенная запись операции присваивания
- •6.5. Преобразование типов операндов арифметических операций
- •6.6. Операция приведения типа
- •6.7. Операции сравнения
- •6.8. Логические операции
- •6.9. Побитовые логические операции, операции над битами
- •6.10. Операция «,» (запятая)
- •7. Обзор базовых инструкций языка Си
- •7.1. Стандартная библиотека языка Си
- •7.2. Стандартные математические функции
- •7.3. Функции вывода данных
- •7.4. Функции ввода информации
- •7.5. Ввод - вывод потоками
- •8. Синтаксис операторов языка Cи
- •8.1. Условные операторы
- •8.2. Условная операция «? :»
- •8.3. Оператор выбора альтернатив (переключатель)
- •9. Составление циклических алгоритмов
- •9.1. Понятие цикла
- •9.2. Оператор с предусловием while
- •9.3. Оператор цикла с постусловием do – while
- •9.4. Оператор цикла с предусловием и коррекцией for
- •10. Операторы передачи управления
- •10.1. Оператор безусловного перехода goto
- •10.2. Оператор continue
- •10.3. Оператор break
- •10.4. Оператор return
- •11.1. Операции над указателями (косвенная адресация)
- •11.2. Ссылка
- •12. Массивы
- •12.1. Одномерные массивы
- •12.2. Многомерные массивы
- •12.3. Операция sizeof
- •12.4. Применение указателей
- •12.5. Указатели на указатели
- •13. Работа с динамической памятью
- •13.1. Пример создания одномерного динамического массива
- •13.2. Пример создания двухмерного динамического массива
- •14. Строки в языке Си
- •14.1. Русификация под Visual
- •15. Функции пользователя
- •15.1. Декларация функции
- •15.2. Вызов функции
- •15.3. Операция typedef
- •15.4. Указатели на функции
- •16. Классы памяти и области действия объектов
- •16.1. Автоматические переменные
- •16.2. Внешние переменные
- •16.3. Область действия переменных
- •17. Структуры, объединения, перечисления
- •17.1. Структуры
- •17.2. Декларация структурного типа данных
- •17.3. Создание структурных переменных
- •17.4. Вложенные структуры
- •17.5. Массивы структур
- •17.6. Размещение структурных переменных в памяти
- •17.7. Объединения
- •17.8. Перечисления
- •18. Файлы в языке Си
- •18.1. Открытие файла
- •18.2. Закрытие файла
- •18.3. Запись – чтение информации
- •18.4. Текстовые файлы
- •18.5. Бинарные файлы
- •Литература
- •Приложение 1. Таблицы символов ASCII
- •Приложение 2. Операции языка Си
- •Приложение 3. Возможности препроцессора
- •1. Вид рабочего стола консольного приложения Visual C++
- •2. Создание нового проекта
- •3. Добавление к проекту файлов с исходным кодом
- •4. Компиляция, компоновка и выполнение проекта
- •5. Конфигурация проекта
- •6. Открытие существующего проекта
- •Приложение 5. Некоторые возможности отладчика Visual C++
- •1. Установка точки прерывания
- •2. Пошаговое выполнение программы
- •3. Проверка значений переменных во время выполнения программы
- •4. Окна Auto и Watch 1
- •5. Программные средства отладки
- •ЧАСТЬ 2
- •1. Системы счисления
- •1.1. Общие определения
- •1.2. Алгоритмы перевода из одной системы счисления в другую
- •2. Организация памяти и структуры данных
- •3. Линейные списки и рекурсия
- •4. Динамическая структура данных – СТЕК
- •5. Динамическая структура данных – ОЧЕРЕДЬ
- •6. Двунаправленный линейный список
- •7. Построение обратной польской записи
- •8. Нелинейные структуры данных
- •Пояснение к программе
- •9. Понятие хеширования
- •9.1. Хеш-функция и хеш-таблица
- •9.2. Схемы хеширования
- •10. Элементы теории погрешностей
- •10.1. Методы реализации математических моделей
- •10.2. Источники погрешностей
- •10.3. Приближенные числа и оценка их погрешностей
- •10.4. Прямая задача теории погрешностей
- •10.5. Обратная задача теории погрешностей
- •10.6. Понятия устойчивости, корректности и сходимости
- •11. Вычисление интегралов
- •11.1. Формулы численного интегрирования
- •11.2. Формула средних
- •11.3. Формула трапеций
- •11.4. Формула Симпсона
- •11.5. Схема с автоматическим выбором шага по заданной точности
- •12. Методы решения нелинейных уравнений
- •12.1. Итерационные методы уточнения корней
- •12.2. Метод Ньютона
- •12.3. Метод секущих
- •12.4. Метод Вегстейна
- •12.5. Метод парабол
- •12.6. Метод деления отрезка пополам
- •13. Решение систем линейных алгебраических уравнений
- •13.1. Прямые методы решения СЛАУ
- •13.2. Метод Гаусса
- •13.3. Метод прогонки
- •13.4. Метод квадратного корня
- •13.5. Итерационные методы решения СЛАУ
- •13.6. Метод простой итерации
- •14. Поиск и сортировка
- •14.1. Последовательный поиск в массиве
- •14.2. Барьерный последовательный поиск
- •14.3. Сортировка вставками (включениями)
- •14.4. Двоичный поиск
- •14.5. Сортировка выбором
- •14.6. Алгоритмы сортировки выбором
- •14.7. Сортировка обменом
- •14.8. Быстрая сортировка
- •15. Обработка статистических данных
Министерство образования Республики Беларусь
Учреждение образования «Белорусский государственный университет
информатики и радиоэлектроники»
Кафедра «Вычислительные методы и программирование»
В.Л.Бусько, А.Г.Корбит, Т.М.Кривоносова
ОСНОВЫ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ
Конспект лекций
ЧАСТЬ 1
для студентов всех специальностей и форм обучения БГУИР
Минск 2006
СОДЕРЖАНИЕ
ЧАСТЬ 1................................................................................................................. |
6 |
1. Основные понятия и определения................................................................... |
6 |
1.1. Структура персональной ЭВМ................................................................. |
6 |
1.2. Размещение данных и программ в памяти ПЭВМ................................. |
6 |
1.3. Программные модули................................................................................ |
7 |
1.4. Ошибки........................................................................................................ |
8 |
1.5. Функциональная и модульная декомпозиции......................................... |
8 |
1.6. Файловая система хранения информации............................................... |
9 |
1.7. Операционная система ............................................................................ |
10 |
2. Понятие алгоритмов и способы их описания............................................... |
10 |
2.1. Свойства алгоритмов............................................................................... |
11 |
2.2. Способы описания алгоритмов............................................................... |
11 |
2.3. Основные символы схемы алгоритма.................................................... |
12 |
3. Базовые элементы языка Cи........................................................................... |
13 |
3.1. Алфавит языка.......................................................................................... |
13 |
3.2. Лексемы..................................................................................................... |
13 |
3.3. Идентификаторы и ключевые слова...................................................... |
13 |
3.4. Знаки операций......................................................................................... |
14 |
3.5. Литералы (константы) ............................................................................. |
14 |
3.6. Комментарии............................................................................................ |
14 |
4. Базовые типы объектов .................................................................................. |
15 |
4.1. Простейшая программа........................................................................... |
15 |
4.2. Основные типы данных........................................................................... |
16 |
4.3. Декларация объектов............................................................................... |
17 |
4.4. Данные целого типа (int) ......................................................................... |
17 |
4.5. Данные символьного типа (char) ............................................................ |
18 |
4.6. Данные вещественного типа (float, double)........................................... |
18 |
5. Константы в программах................................................................................ |
18 |
5.1. Целочисленные константы...................................................................... |
18 |
5.2. Константы вещественного типа ............................................................. |
19 |
5.3. Символьные константы........................................................................... |
19 |
5.4. Строковые константы.............................................................................. |
20 |
6. Обзор операций............................................................................................... |
20 |
6.1. Операции, выражения.............................................................................. |
20 |
6.2. Арифметические операции..................................................................... |
20 |
6.3. Операции присваивания.......................................................................... |
21 |
6.4. Сокращенная запись операции присваивания...................................... |
21 |
6.5. Преобразование типов операндов арифметических операций ........... |
22 |
6.6. Операция приведения типа..................................................................... |
23 |
6.7. Операции сравнения................................................................................ |
23 |
2 |
|
6.8. Логические операции............................................................................... |
23 |
6.9. Побитовые логические операции, операции над битами .................... |
24 |
6.10. Операция «,» (запятая)........................................................................... |
26 |
7. Обзор базовых инструкций языка Си........................................................... |
26 |
7.1. Стандартная библиотека языка Си......................................................... |
26 |
7.2. Стандартные математические функции ................................................ |
26 |
7.3. Функции вывода данных......................................................................... |
27 |
7.4. Функции ввода информации................................................................... |
28 |
7.5. Ввод - вывод потоками............................................................................ |
29 |
8. Синтаксис операторов языка Cи ................................................................... |
29 |
8.1. Условные операторы ............................................................................... |
30 |
8.2. Условная операция «? :».......................................................................... |
31 |
8.3. Оператор выбора альтернатив (переключатель) .................................. |
32 |
9. Составление циклических алгоритмов......................................................... |
33 |
9.1. Понятие цикла.......................................................................................... |
33 |
9.2. Оператор с предусловием while ............................................................. |
33 |
9.3. Оператор цикла с постусловием do - while ........................................... |
34 |
9.4. Оператор цикла с предусловием и коррекцией for............................... |
34 |
10. Операторы передачи управления................................................................ |
35 |
10.1. Оператор безусловного перехода goto................................................. |
35 |
10.2. Оператор continue................................................................................... |
36 |
10.3. Оператор break ....................................................................................... |
36 |
10.4. Оператор return....................................................................................... |
36 |
11 . Указатели...................................................................................................... |
37 |
11.1. Операции над указателями (косвенная адресация) ............................ |
38 |
11.2. Ссылка..................................................................................................... |
38 |
12. Массивы......................................................................................................... |
39 |
12.1. Одномерные массивы............................................................................ |
39 |
12.2. Многомерные массивы.......................................................................... |
40 |
12.3. Операция sizeof ...................................................................................... |
40 |
12.4. Применение указателей......................................................................... |
41 |
12.5. Указатели на указатели ......................................................................... |
42 |
13. Работа с динамической памятью................................................................. |
43 |
13.1. Пример создания одномерного динамического массива................... |
45 |
13.2. Пример создания двухмерного динамического массива................... |
45 |
14. Строки в языке Си......................................................................................... |
45 |
14.1. Русификация под Visual ........................................................................ |
47 |
15. Функции пользователя ................................................................................. |
48 |
15.1. Декларация функции ............................................................................. |
48 |
15.2. Вызов функции....................................................................................... |
49 |
15.3. Операция typedef .................................................................................... |
50 |
15.4. Указатели на функции........................................................................... |
51 |
16. Классы памяти и области действия объектов............................................ |
53 |
16.1. Автоматические переменные................................................................ |
54 |
16.2. Внешние переменные............................................................................ |
54 |
3
16.3. Область действия переменных............................................................. |
56 |
|
17. Структуры, объединения, перечисления.................................................... |
58 |
|
17.1. Структуры............................................................................................... |
58 |
|
17.2. Декларация структурного типа данных............................................... |
58 |
|
17.3. Создание структурных переменных .................................................... |
59 |
|
17.4. Вложенные структуры........................................................................... |
60 |
|
17.5. Массивы структур.................................................................................. |
61 |
|
17.6. Размещение структурных переменных в памяти ............................... |
62 |
|
17.7. Объединения........................................................................................... |
63 |
|
17.8. Перечисления ......................................................................................... |
64 |
|
18. |
Файлы в языке Си ........................................................................................ |
65 |
18.1. Открытие файла ..................................................................................... |
65 |
|
18.2. Закрытие файла ...................................................................................... |
67 |
|
18.3. Запись - чтение информации ................................................................ |
68 |
|
18.4. Текстовые файлы ................................................................................... |
69 |
|
18.5. Бинарные файлы..................................................................................... |
69 |
|
Литература........................................................................................................... |
72 |
|
Приложение 1. Таблицы символов ASCII ........................................................ |
73 |
|
Приложение 2. Операции языка Си.................................................................. |
74 |
|
Приложение 3. Возможности препроцессора.................................................. |
76 |
|
Приложение 4. Интегрированная среда программирования Visual C++ ...... |
80 |
|
1. |
Вид рабочего стола консольного приложения Visual C++..................... |
80 |
2. |
Создание нового проекта ........................................................................... |
81 |
3. |
Добавление к проекту файлов с исходным кодом................................... |
83 |
4. |
Компиляция, компоновка и выполнение проекта ................................... |
84 |
5. |
Конфигурация проекта............................................................................... |
86 |
6. |
Открытие существующего проекта........................................................... |
86 |
Приложение 5. Некоторые возможности отладчика Visual C++ ................... |
87 |
|
1. |
Установка точки прерывания .................................................................... |
87 |
2. |
Пошаговое выполнение программы ......................................................... |
89 |
3. |
Проверка значений переменных во время выполнения программы..... |
89 |
4. |
Окна Auto и Watch 1 ................................................................................... |
90 |
5. |
Программные средства отладки................................................................ |
90 |
ЧАСТЬ 2............................................................................................................... |
94 |
|
1. Системы счисления......................................................................................... |
94 |
|
1.1. Общие определения................................................................................. |
94 |
|
1.2. Алгоритмы перевода из одной системы счисления в другую............. |
94 |
|
2. Организация памяти и структуры данных ................................................. |
100 |
|
3. Линейные списки и рекурсия....................................................................... |
107 |
|
4. Динамическая структура данных – СТЕК................................................. |
113 |
|
5. Динамическая структура данных – ОЧЕРЕДЬ .......................................... |
120 |
|
6. Двунаправленный линейный список .......................................................... |
125 |
|
7. Построение обратной польской записи...................................................... |
135 |
|
8. Нелинейные структуры данных .................................................................. |
143 |
|
9. Понятие хеширования .................................................................................. |
155 |
4
9.1. Хеш-функция и хеш-таблица................................................................ |
156 |
9.2. Схемы хеширования.............................................................................. |
159 |
10. Элементы теории погрешностей............................................................... |
162 |
10.1. Методы реализации математических моделей................................. |
163 |
10.2. Источники погрешностей.................................................................... |
164 |
10.3. Приближенные числа и оценка их погрешностей............................ |
164 |
10.4. Прямая задача теории погрешностей................................................. |
165 |
10.5. Обратная задача теории погрешностей............................................. |
166 |
10.6. Понятия устойчивости, корректности и сходимости....................... |
166 |
11. Вычисление интегралов ............................................................................. |
167 |
11.1. Формулы численного интегрирования.............................................. |
168 |
11.2. Формула средних ................................................................................. |
168 |
11.3. Формула трапеций ............................................................................... |
169 |
11.4. Формула Симпсона.............................................................................. |
169 |
11.5. Схема с автоматическим выбором шага по заданной точности.... |
170 |
12. Методы решения нелинейных уравнений................................................ |
171 |
12.1. Итерационные методы уточнения корней......................................... |
172 |
12.2. Метод Ньютона.................................................................................... |
172 |
12.3. Метод секущих..................................................................................... |
172 |
12.4. Метод Вегстейна.................................................................................. |
173 |
12.5. Метод парабол...................................................................................... |
173 |
12.6. Метод деления отрезка пополам........................................................ |
174 |
13. Решение систем линейных алгебраических уравнений.......................... |
177 |
13.1. Прямые методы решения СЛАУ........................................................ |
178 |
13.2. Метод Гаусса........................................................................................ |
179 |
13.3. Метод прогонки.................................................................................... |
181 |
13.4. Метод квадратного корня.................................................................... |
183 |
13.5. Итерационные методы решения СЛАУ............................................. |
188 |
13.6. Метод простой итерации..................................................................... |
190 |
14. Поиск и сортировка..................................................................................... |
191 |
14.1. Последовательный поиск в массиве .................................................. |
191 |
14.2. Барьерный последовательный поиск................................................. |
193 |
14.3. Сортировка вставками (включениями).............................................. |
195 |
14.4. Двоичный поиск................................................................................... |
197 |
14.5. Сортировка выбором........................................................................... |
200 |
14.6. Алгоритмы сортировки выбором....................................................... |
201 |
14.7. Сортировка обменом ........................................................................... |
204 |
14.8. Быстрая сортировка............................................................................. |
210 |
15. Обработка статистических данных........................................................... |
213 |
Используемая литература................................................................................. |
219 |
5