Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по курсу.docx
Скачиваний:
107
Добавлен:
24.02.2016
Размер:
2.8 Mб
Скачать

Министерство образования Республики Беларусь

Учреждение образования «Белорусский государственный университет информатики и радиоэлек­троники»

Кафедра «Вычислительные методы и программирование»

Шестакович В. П.

Электронный учебно-методический комплекс по дисциплине

«ОСНОВЫ АЛГОРИТМИЗАЦИИ И ПРОГРАММИРОВАНИЯ»

Для студентов специальностей

36 04 01 «Электронно-оптические системы и технологии» , 39 02 02 «Проектирование и производство радиоэлектронных средств»., 39 02 03 «Медицинская электроника» , 39 02 01 «Моделирование и компьютерное проектирование радиоэлек­тронных средств».

Курс лекций

Минск 2007

СОДЕРЖАНИЕ

ЛЕКЦИЯ 1. КАК УСТРОЕНА ЭВМ И КАК ОНА РАБОТАЕТ7

  1. История создания ЭВМ7

  2. Структура ПЭВМ8

  3. Размещение данных и программ в памяти ПЭВМ9

1.4.Файловая система хранения информации10

1.5. Операционная система11

ЛЕКЦИЯ 2. КАК СОСТАВЛЯЮТСЯ И ВЫПОЛНЯЮТСЯ ПРОГРАММЫ В СИСТЕМЕ DELPHI 12

  1. Понятие алгоритма и способы его записи12

  2. Общая характеристика языка Паскаль14

  3. Как составляется программа в системе Delphi 15

  4. Наша первая программа реализует линейный алгоритм18

ЛЕКЦИЯ 3. БАЗОВЫЕ ЭЛЕМЕНТЫ ЯЗЫКА ПАСКАЛЬ21

  1. Данные и их типы21

  2. Операции над переменными основных скалярных типов26

ЛЕКЦИЯ 4. ПРОГРАММИРОВАНИЕ РАЗВЕТВЛЯЮЩИХСЯ

АЛГОРИТМОВ29

  1. Понятие разветвляющегося алгоритма29

  2. Оператор условия if. 30

  3. Оператор выбора Case 33

4.4. Некоторые возможности, предоставляемые Delphi для организации разветвлений 33

ЛЕКЦИЯ 5. СОСТАВЛЕНИЕ И ПРОГРАМИРОВАНИЕ

ЦИКЛИЧЕСКИХ АЛГОРИТМОВ34

  1. Понятие цикла34

  2. Оператор Repeat...Until 35

  3. Оператор While...do 36

  4. Оператор For...do 37

  5. Вложенные циклы38

5.6. Примеры некоторых часто встречающихся циклических алгоритмов 39

ЛЕКЦИЯ 6. ОТЛАДКА ПРОГРАММ И ОБРАБОТКА

ИСКЛЮЧИТЕЛЬНЫХ СИТУАЦИЙ40

  1. Ошибки на этапе компиляции40

  2. Ошибки на этапе выполнения41

  3. Понятие исключительной ситуации42

  4. Защищенные блоки42

  5. Некоторые стандартные типы исключительных ситуаций44

  6. Инициирование собственных исключительных ситуаций44

  7. Примеры фрагментов программ45

ЛЕКЦИЯ 7. СОСТАВЛЕНИЕ ПРОГРАММ С ИСПОЛЬЗОВАНИЕМ МАССИВОВ 50

  1. Понятие массива50

  2. Некоторые возможности ввода-вывода в Delphi 51

  3. Примеры часто встречающихся алгоритмов работы с массивами

53

ЛЕКЦИЯ 8. ИСПОЛЬЗОВАНИЕ УКАЗАТЕЛЕЙ56

8.1. Статическое и динамическое распределение оперативной памяти 56

  1. Понятие указателя56

  2. Наложение переменных57

  3. Динамическое распределение памяти58

  4. Организация динамических массивов59

ЛЕКЦИЯ 9. ПОДПРОГРАММЫ И БИБЛИОТЕКИ 60

  1. Понятие подпрограммы60

  2. Описание подпрограмм 61

9.3. Передача данных между подпрограммой и вызывающей ее программой 63

9.4. Оформление подпрограмм в библиотечный модуль 66

9.5. Примеры подпрограмм, оформленных в отдельные библиотечные модули 67

ЛЕКЦИЯ 10. ИСПОЛЬЗОВАНИЕ ПЕРЕМЕННЫХ ТИПА МНОЖЕСТВА71

  1. Понятие множества71

  2. Операции над множествами71

  3. Примеры работы с множествами72

ЛЕКЦИЯ 11. ИСПОЛЬЗОВАНИЕ СТРОКОВЫХ ДАННЫХ75

  1. Зачем нужны строки75

  2. Описание переменных строкового типа 76

  3. Основные операции над переменными строкового типа77

  4. Некоторые процедуры и функции обработки строк77

  5. Примеры алгоритмов обработки строк78

ЛЕКЦИЯ 12. ПРОГРАММИРОВАНИЕ С ИСПОЛЬЗОВАНИЕМ ЗАПИСЕЙ80

  1. Понятие записи80

  2. Операции над записями 80

  3. Использование записей для работы с комплексными числами82 ЛЕКЦИЯ 13. ИСПОЛЬЗОВАНИЕ ФАЙЛОВ 84

  1. Понятие файла 84

  2. Операции над файлами 85

  1. Типизированные файлы 85

  2. Текстовые файлы 86

  3. Нетипизированные файлы 87

  1. Подпрограммы работы с файлами 87

  2. Компоненты TOpenDialog и TSaveDialog 88

ЛЕКЦИЯ 14. ПРОГРАММИРОВАНИЕ С ОТОБРАЖЕНИЕМ ГРАФИЧЕСКОЙ ИНФОРМАЦИИ 96

  1. Как рисуются изображения 97

  2. Построение графиков с помощью компонента TChart 98

ЛЕКЦИЯ 15. ПРОГРАММИРОВАНИЕ С ИСПОЛЬЗОВАНИЕМ РЕКУРСИИ 102

  1. Понятие рекурсии 102

  2. Примеры рекурсивных вычислений 103

ЛЕКЦИЯ 16. ПОИСК И СОРТИРОВКА МАССИВОВ 104

  1. Организация работы с базами данных 104

  2. Поиск в массиве записей 105

  3. Сортировка массивов 106

  1. Метод пузырька 107

  2. Метод прямого выбора 108

  3. Метод Шелла 108

  4. Метод Хоара (Hoare) 110

ЛЕКЦИЯ 17. РАБОТА СО СПИСКАМИ НА ОСНОВЕ ДИНАМИЧЕСКИХ МАССИВОВ 111

  1. Работа со списками 111

  2. Добавление нового элемента в список на заданную позицию

111

  1. Удаления элемента с заданным номером 112

  2. Пример программы 112

ЛЕКЦИЯ 18. СВЯЗАННЫЕ СПИСКИ НА ОСНОВЕ РЕКУРСИВНЫХ ДАННЫХ 116

  1. Что такое стек и очередь 116

  2. Понятие рекурсивных данных и однонаправленные списки. 117

  3. Процедуры для работы со стеками 119

  4. Процедуры для работы с односвязными очередями 122

  5. Работа с двухсвязными очередями 129

  6. Процедуры для работы с двусвязными очередями 131

ЛЕКЦИЯ 19. АЛГОРИТМЫ РЕШЕНИЯ СИСТЕМ ЛИНЕЙНЫХ

АЛГЕБРАИЧЕСКИХ УРАВНЕНИЙ 139

  1. Основные понятия и определения 139

  2. Прямые методы решения СЛАУ 141

19.2.1 Метод Гаусса 141

19.2.2. Метод прогонки 142

19.2.3.Метод квадратного корня 143

19.3. Итерационные методы решения СЛАУ 144

  1. Метод простой итерации 144

  2. Метод Зейделя 145

  3. Понятие релаксации 145

ЛЕКЦИЯ 20. АППРОКСИМАЦИЯ ФУНКЦИЙ 146

20.1. Зачем нужна аппроксимация функций? 146

  1. Что такое интерполяция? 148

  2. Какие бывают многочлены и способы интерполяции? 149

  1. Интерполяционный многочлен Ньютона 149

  2. Линейная и квадратичная интерполяция 149

  3. Интерполяционный многочлен Лагранжа 150

  4. Интерполяция общего вида, использующая прямое решение системы (20.2) методом Гаусса 150

20.3.5. Интерполяция общего вида, использующая расчет коэффициентов многочлена (20.3) через многочлен Лагранжа 150

  1. Что такое среднеквадратичная аппроксимация? 151

  2. Метод наименьших квадратов (МНК) 152

ЛЕКЦИЯ 21. ВЫЧИСЛЕНИЕ ПРОИЗВОДНЫХ И ИНТЕГРАЛОВ 153

  1. Формулы численного дифференцирования 153

  2. Формулы численного интегрирования 154

  1. Формула средних 154

  2. Формула трапеций 155

  3. Формула Симпсона 155

  4. Схема с автоматическим выбором шага по заданной точности 155

  5. Формулы Гаусса 156

ЛЕКЦИЯ 22. МЕТОДЫ РЕШЕНИЯ НЕЛИНЕЙНЫХ УРАВНЕНИЙ.. 157

  1. Как решаются нелинейные уравнения 157

  2. Итерационные методы уточнения корней 158

  1. Метод простой итерации 158

  2. Метод Ньютона 159

  3. Метод секущих 160

  4. Метод Вегстейна 160

  5. Метод парабол 161

  6. Метод деления отрезка пополам 162

ЛЕКЦИЯ 23. МЕТОДЫ ОПТИМИЗАЦИИ 163

  1. Постановка задач оптимизации, их классификация 163

  2. Методы нахождения минимума функции одной переменной 164

  1. Метод деления отрезка пополам 165

  2. Метод золотого сечения 165

  3. Метод Фибоначи 166

  4. Метод последовательного перебора 167

  5. Метод квадратичной параболы 168

  6. Метод кубической параболы 169

ЛЕКЦИЯ 24. РЕШЕНИЕ ЗАДАЧИ КОШИ ДЛЯ ОБЫКНОВЕННЫХ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ 170

  1. Задачи для обыкновенных дифференциальных уравнений... 170

  2. Основные положения метода сеток для решения задачи Коши

171

24.2.1. Явная схема 1-го порядка (Эйлера) 173

  1. Неявная схема 1-го порядка 173

  2. Неявная схема 2-го порядка 174

  3. Схема предиктор-корректор (Рунге-Кутта) 2-го порядка

174

24.2.5. Схема Рунге-Кутта 4-го порядка 174

24.3. Многошаговые схемы Адамса 175

  1. Явная экстраполяционная схема Адамса 2-го порядка .. 176

  2. Явная экстраполяционная схема Адамса 3-го порядка ..176

  3. Неявная схема Адамса 3-го порядка 176

ПРИЛОЖЕНИЕ 1. Процедуры и функции для преобразования

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

ПРИЛОЖЕНИЕ 2. Математические формулы 178

ПРИЛОЖЕНИЕ 3. Таблицы символов ASCII 179

ЛИТЕРАТУРА 180

ЛЕКЦИЯ 1. КАК УСТРОЕНА ЭВМ И КАК ОНА

Работает

1.1. История создания эвм.

Проблема вычислений сопровождает человечество на всем историче­ском отрезке его существования. Первый счетный инструмент абак был из­вестен еще в Y веке до нашей эры в Египте, Финикии, Греции и представлял дощечку, покрытую слоем песка, на которой острой палочкой проводили ли­нии и в получавшихся колонках по позиционному принципу размещали ка­мешки. В древнем Риме абак назывался Calculi. От этого слова произошло в дальнейшем латинское calculatore (вычислять).

С конца XY столетия в Западной Европе получил распространение тип абака, известный как «счет на линиях». На разлинованную таблицу наклады­вались специальные жетоны, горизонтальные линии таблицы соответствовали единицам, десяткам и т. д., вертикальные линии образовывали столбцы для отдельных слагаемых или множителей.

Первую счетную машину для выполнения сложений и вычитаний изо­брел и сконструировал в 1623 году профессор математики и астрономии Тю-бингенского университета В.Шинкард. Изготовленная в одном экземпляре машина Шинкарда сгорела во время пожара в 1624 году и не оказала влияния на развитие идей счетной техники.

Биография механических счетных машин ведется от арифметической машины французского математика, физика и философа Б.Паскаля, созданной в 1642 году. Над счетной машиной Б.Паскаль работал 12 лет и сделал около 50 действующих моделей. Первый арифмометр, выполняющий все четыре арифметических действия, был предложен в 1670 году немецким ученым Г. В.Лейбницем. В Беларуси первая суммирующая машина была изобретена и изготовлена в 1770 году Евной Якобсоном, часовым матером и механиком в г. Несвиже.

Идею универсальной вычислительной машины с программным управ­лением впервые предложил в своем неосуществленном проекте в 1834 году анг­лийский ученый Ч.Бэббедж. Ее структура совпадала по существу со структурой современных ЭВМ. Однако, большинство из современников ученого не поняли его идей и имя истинного «отца компьютеров» было на долгие годы забыто.

Отличительной особенностью электронных вычислительных машин (ЭВМ) от счетных машин является наличие устройства управления вычисле­ниями и принцип хранения программы. Еще одной особенностью современ­ных ЭВМ является применение двоичной системы счисления.

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

лов (0,1) так и Булева алгебра оперирует с двумя понятиями (истина, ложь) и тремя операциями (и, или, не).

С помощью этих понятий можно смоделировать любые логические це­почки и построить 16 логических функций. На этой основе строятся все со­временные логические схемы различной сложности, реализуемые в ЭВМ.

Первая ЭВМ была создана в 1945 году (США), представляла огромное сооружение, содержащее 18000 электронных ламп, 1500 реле и выполняла около 3000 умножений в секунду. Она использовалась для баллистических расчетов, предсказаний погоды и некоторых научно-технических расчетов для военных целей. Мировой парк ЭВМ к 1965 году насчитывал порядка 50 тыс. компьютеров, к началу 1975 - более 200 тысяч.

Первые персональные ЭВМ (ПЭВМ) появились в начале 70 годов. ПЭВМ содержат клавиатуру, близкую к клавиатуре печатной машинки, сис­темный блок, реализованный на одной плате и графический дисплей. Все это при желании можно разместить в «дипломате». Скорость вычислений дости­гает 10 операций в секунду. За счет выпуска больших партий достигнута от­носительная дешевизна ПЭВМ и уже близко то время, когда электронный помощник будет в каждой квартире.

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