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

Алгоритмы_Технологии программирования_ООП (1)

.pdf
Скачиваний:
15
Добавлен:
18.03.2015
Размер:
773.3 Кб
Скачать

 

 

 

Кафедра

 

 

ВнутреннийУГАТУ

информатики

 

 

 

УГАТУ

 

блок

 

 

 

 

 

 

Этапы

 

 

 

 

проектирования и

 

 

 

 

анализа алгоритмов

 

Внешний

 

 

 

 

блок

 

 

 

 

Программирование и основы алгоритмизации курс 1, 2014 - 2015 г.

81

Программирование и основы алгоритмизации курс 1, 2014 - 2015 г.

82

Кафедра

 

Кафедра

 

информатики

 

информатики

 

 

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

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

 

 

УГАТУ

 

УГАТУ

1)

Понимание задачи.

 

 

 

2)

Выбор:

 

Необходимо доказать, что алгоритм за

 

исполнителя;

 

 

 

ограниченный промежуток времени

 

• вида решения (точное или приближенное);

 

выдает требуемый результат для любых

структур данных;

 

 

корректных значений входных данных

 

методики проектирования алгоритма

 

 

 

 

 

 

Программирование и основы алгоритмизации курс 1, 2014 - 2015 г.

83

Программирование и основы алгоритмизации курс 1, 2014 - 2015 г.

84

Кафедра

 

 

 

Кафедра

Оценка эффективности алгоритма

 

информатики

 

 

информатики

 

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

 

 

 

 

 

УГАТУ

 

 

УГАТУ

 

 

 

 

И временная, и пространственная эффективности

 

 

 

 

оцениваются в виде функции от некоторого

 

 

 

 

 

параметра n, связанного с размером входных

Оценка эффективности алгоритма:

 

данных.

 

 

временная (скорости работы) и

 

Временная эффективность измеряется путем

 

пространственная (количество

 

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

 

 

 

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

 

 

дополнительной оперативной памяти).

 

 

 

 

Пространственная эффективность оценивается

 

 

 

 

Важными характеристиками являются

 

в виде количества дополнительных единиц

 

 

также простота и универсальность

 

памяти, требуемых для работы алгоритма.

 

 

 

Программирование и основы алгоритмизации курс 1, 2014 - 2015 г.

85

 

Программирование и основы алгоритмизации курс 1, 2014 - 2015 г.

86

Кафедра

 

Оценка эффективности алгоритма

 

Кафедра

Оценка эффективности алгоритма

 

информатики

 

информатики

 

 

 

УГАТУ

 

УГАТУ

 

 

 

 

 

Эффективность отдельных алгоритмов может

 

Значения некоторых функций, играющих особую

различаться в очень широких пределах для

 

роль в процессе анализа алгоритмов

 

 

 

 

 

разных наборов входных данных одинакового

 

 

 

размера.

 

 

 

 

Поэтому эффективность таких алгоритмов

 

 

 

 

оценивают для наихудшего, наилучшего и

 

 

 

 

типичного набора входных данных.

 

 

 

 

Когда размер входных данных n стремится к

 

 

Функция

 

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

 

 

 

 

функции.

 

 

Размер входных данных

 

 

 

 

 

 

 

 

 

Программирование и основы алгоритмизации курс 1, 2014 - 2015 г.

87

 

Программирование и основы алгоритмизации курс 1, 2014 - 2015 г.

88

Кафедра

 

Оценка эффективности алгоритма

 

Кафедра

 

Оценка эффективности алгоритма

 

информатики

 

информатики

 

 

 

УГАТУ

 

 

УГАТУ

 

 

 

 

 

 

 

 

 

 

Показательная функция 2n и функция вычисления

Программы, реализующие алгоритмы с

 

факториала n! имеют настолько высокий

 

 

логарифмической функцией роста log2n,

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

 

 

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

 

астрономически большим уже при умеренных

 

 

значениях n. Говорят, что обе функции имеют

 

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

 

экспоненциальный порядок роста.

 

 

данных реального размера.

 

 

 

 

 

 

 

 

 

 

 

 

С помощью алгоритмов, в которых количество

 

 

 

 

 

выполняемых операций растет по

 

 

 

 

 

экспоненциальному закону, можно решить лишь

 

 

 

 

задачи очень малых размеров.

 

 

 

Программирование и основы алгоритмизации курс 1, 2014 - 2015 г.

89

 

 

Программирование и основы алгоритмизации курс 1, 2014 - 2015 г.

90

Кафедра

 

 

 

Кафедра

 

Запись алгоритма нахождения НОД

 

информатики

 

 

информатики

 

 

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

 

 

на FreePascal

 

 

 

 

УГАТУ

 

 

УГАТУ

 

 

 

 

 

 

 

Для того чтобы с помощью ЭВМ можно было

 

var

 

m, n, d : integer;

 

 

Begin

 

 

решить конкретную задачу, недостаточно

 

 

 

 

m := StrToInt(Edit1.Text);

 

 

составить алгоритм ее решения, необходимо

 

 

n := StrToInt(Edit2.Text);

 

 

записать данный алгоритм на одном из

 

 

 

 

if (n <> 0) And (m <> 0) then

 

 

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

 

 

 

 

 

Repeat

 

 

 

 

 

 

 

Языки программирования относятся к

 

 

 

if (m > n) then

 

 

формальным языкам, с их помощью алгоритм

 

 

m := m mod n

 

 

можно записать в форме, понятной

 

 

 

else

 

 

исполнителю.

 

 

 

n := n mod m;

 

 

 

 

Until (m = 0) Or (n = 0);

 

 

 

 

 

 

 

В нашем случае исполнителем алгоритма

 

if (m = 0) then d := n else d := m;

 

 

является компьютер.

 

Edit3.Text := IntToStr (d);

 

 

 

Программирование и основы алгоритмизации курс 1, 2014 - 2015 г.

91

End; Программирование и основы алгоритмизации курс 1, 2014 - 2015 г.

92

 

Кафедра

 

 

Кафедра

Запись алгоритма нахождения НОД на C#

 

 

Запись алгоритма нахождения НОД на VB.Net

 

 

 

 

информатики

 

 

информатики

 

 

 

 

УГАТУ

 

 

 

 

УГАТУ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Dim m, n, d As integer

 

 

int m, n, d;

 

 

m = val(textBox1.Text)

 

 

m = int.Parse(textBox1.Text);

 

 

n = val(textBox2.Text)

 

 

n = int.Parse(textBox2.Text);

 

 

if (n <> 0) And (m <> 0) Then

 

 

if (n != 0 && m != 0)

 

 

do

 

 

{

 

 

 

 

if (m > n) then

 

 

 

 

do

 

 

m = m mod n

 

 

 

 

{

 

 

else

 

 

 

 

if (m > n) m = m % n;

 

 

n = n mod m

 

 

 

 

else n = n % m;

 

 

end if

 

 

 

 

} while (m != 0 && n != 0) ;

 

 

loop until (m = 0) or n = 0)

 

 

}

 

 

 

 

end if

 

 

if (m == 0) d = n;

 

 

if (m = 0) then d = n else d = m

 

 

else

d = m;

 

 

textBox3.Text = Str(d)

93

 

textBox3.Text = d.ToString();

94

 

Программирование и основы алгоритмизации курс 1, 2014 - 2015 г.

 

 

 

Программирование и основы алгоритмизации курс 1, 2014 - 2015 г.

 

 

 

 

 

 

 

 

Кафедра

Кафедра

Инструментарий технологии программирования

Инструментарий технологии программирования

информатики

информатики

УГАТУ

УГАТУ

Трансляторы

 

 

 

 

 

 

 

Компиляторы

 

 

 

Интерпретаторы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

создается

 

 

 

 

 

 

 

 

 

 

 

 

 

исполняемый файл

 

 

 

 

 

 

 

 

исполняемый

 

 

 

 

 

 

 

 

 

 

 

не создается,

 

 

 

 

 

 

 

 

 

 

файл, текст

 

 

 

 

 

 

 

 

 

 

 

 

 

 

текст программы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

программы больше

 

 

 

 

Машинный код

 

 

 

 

 

 

 

нужен

 

 

 

 

 

 

 

 

 

не нужен

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Программирование и основы алгоритмизации курс 1, 2014 - 2015 г.

95

 

 

 

Программирование и основы алгоритмизации курс 1, 2014 - 2015 г.

96

 

 

Кафедра

 

 

Кафедра

 

 

 

информатики

 

 

информатики

 

 

Инструментарий технологии программирования

Инструментарий технологии программирования

 

 

УГАТУ

 

 

 

УГАТУ

Компиляторы

 

Интерпретаторы

 

• Исходный код просматривается полностью

 

• Очередной оператор исходного кода

 

• Проводится его синтаксический анализ

 

 

просматривается.

 

 

 

 

 

 

• Переводится в исполняемый машинный код

Проводится синтаксический анализ

 

 

 

 

 

 

 

 

• Переводится в машинный код

 

 

 

 

Исполняется

 

 

Программирование и основы алгоритмизации курс 1, 2014 - 2015 г.

97

 

 

Программирование и основы алгоритмизации курс 1, 2014 - 2015 г.

98

Кафедра

Языки программирования

 

Кафедра

 

Языки программирования

 

информатики

 

информатики

 

 

УГАТУ

 

 

УГАТУ

 

 

 

 

 

Языки программирования – искусственные языки.

Нарушение формы записи программы приводит к

От естественных они отличаются ограниченным

синтаксической ошибке.

 

числом «слов» и очень строгими правилами

 

Правильно написанное, но не отвечающее

 

 

 

 

 

записи команд (операторов).

 

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

 

 

 

Синтаксис языка образует совокупность подобных

к семантическим ошибкам (логическим, ошибкам

требований программирования,

 

времени выполнения).

 

Семантика языка – смысл каждой команды и

 

Процесс поиска ошибок в программе называется

других конструкций языка.

 

тестированием, процесс устранения ошибок –

 

 

 

отладкой.

 

 

Программирование и основы алгоритмизации курс 1, 2014 - 2015 г.

99

 

 

Программирование и основы алгоритмизации курс 1, 2014 - 2015 г.

100

Кафедра

Языки программирования

 

Кафедра

Языки программирования

 

информатики

 

информатики

 

 

УГАТУ

 

УГАТУ

 

 

 

 

 

Разные типы процессоров имеют разные

 

В данном случае «низкий уровень» не

 

 

 

 

 

наборы команд.

 

значит «плохой». Имеется в виду, что

 

 

 

 

 

Языки программирования ориентированные

операторы языка близки к машинному

 

на конкретный тип процессора, т.е.

 

коду и ориентированы на конкретные

 

являются машинно-зависимыми,

 

команды процессора.

 

 

относятся к языкам программирования

 

Языками низкого уровня являются все

 

 

 

низкого уровня.

 

языки ассемблеров.

 

 

 

 

 

 

Программирование и основы алгоритмизации курс 1, 2014 - 2015 г.

101

 

Программирование и основы алгоритмизации курс 1, 2014 - 2015 г.

102

Кафедра

Языки программирования

 

Кафедра

Языки программирования

 

информатики

 

информатики

 

 

УГАТУ

 

УГАТУ

 

 

 

 

 

Языки программирования, не учитывающие

Назначение языка

Название языка

 

 

 

 

 

особенности конкретных компьютерных

 

 

 

 

 

архитектур, относятся к языкам

 

 

 

 

 

программирования высокого уровня.

 

 

 

 

 

Программы написанные на таких языках на

 

 

 

 

уровне исходных текстов легко

 

 

 

 

 

переносятся на другие платформы, для

 

 

 

 

 

которых создан транслятор этого языка.

 

 

 

 

 

Программирование и основы алгоритмизации курс 1, 2014 - 2015 г.

103

 

Программирование и основы алгоритмизации курс 1, 2014 - 2015 г.

104

Кафедра

Контрольные вопросы

 

Кафедра

 

Контрольные вопросы

 

информатики

 

информатики

 

 

УГАТУ

 

 

УГАТУ

 

 

 

 

 

1. Что такое алгоритм?

 

10. Перечислите и приведите примеры записи базовых

2. Перечислите свойства алгоритма.

 

 

структур алгоритмов.

 

 

 

 

 

 

3. Что такое область допустимых значений входных данных

11. Как работает и как графически обозначается по ГОСТ

алгоритма?

 

 

базовая структура Ветвление (приведите примеры).

 

 

 

 

 

4. Чем следует руководствоваться при создании алгоритма?

12. Как работает и как графически обозначается по ГОСТ

 

базовая структура Цикл с параметром (приведите

 

5. Приведите примеры объектов алгоритма.

 

 

 

 

 

примеры).

 

 

6. Каким образом можно записать алгоритм.

 

 

 

 

 

13. Как работает и как графически обозначается по ГОСТ

7. Перечислите этапы проектирования и анализа

 

 

 

базовая структура Цикл с условием (приведите

 

алгоритмов.

 

 

 

 

 

примеры).

 

 

 

 

 

 

 

 

8. Назовите оценки эффективности алгоритма.

 

14. Как работают и как графически обозначаются по ГОСТ

 

 

 

9. Когда необходимо оценивать эффективность алгоритма

 

Вложенные циклические структуры (приведите

 

для наихудшего, наилучшего и типичного набора входных

 

 

 

примеры).

 

 

 

 

 

 

 

 

данных?

 

 

 

 

 

Программирование и основы алгоритмизации курс 1, 2014 - 2015 г.

105

 

Программирование и основы алгоритмизации курс 1, 2014 - 2015 г.

106

Кафедра

 

 

Кафедра

 

 

 

информатики

 

 

информатики

 

 

 

Тема

 

Этапы развития технологии программирования

 

УГАТУ

 

 

 

УГАТУ

 

 

 

Технологией программирования

 

 

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

 

называют совокупность методов и

 

 

 

 

средств, используемых в процессе

 

Основные этапы развития

 

разработки программного обеспечения.

 

 

 

 

 

 

технологии программирования;

 

Основные этапы развития технологии

 

 

 

 

 

Краткая характеристика этапов

 

программирования:

 

 

 

 

I. «Стихийное» программирование (от появления

 

 

 

 

первых вычислительных машин до середины 60-х

 

 

 

годов XX в).

 

 

 

 

 

II. Структурное программирование (60-70-е годы XX в)

 

 

 

 

Программирование и основы алгоритмизации курс 1, 2014 - 2015 г.

108

Кафедра

 

 

 

Кафедра

«Стихийное» программирование

 

информатики

 

 

информатики

 

Этапы развития технологии программирования

 

 

 

 

 

 

УГАТУ

 

 

 

УГАТУ

Основные этапы развития технологии

 

Структура первых

 

программирования:

 

 

программ это:

 

III. Объектно-ориентированное

 

 

программа на

 

 

 

машинном языке и

 

 

программирование (с середины 80-х до

 

 

 

 

обрабатываемые ею

 

 

конца 90-х годов ХХ века).

 

 

 

 

 

 

данных.

 

 

 

 

 

 

 

IV. Компонентный подход к

 

Появление Ассемблеров позволило вместо

 

 

программированию (с середины 90-х

 

 

двоичных или 16-ричных кодов использовать

 

 

годов XX до нашего времени).

 

 

символические имена данных и мнемоники

 

V. Net-технология

 

 

кодов операций. В результате программы стали

 

 

более «читаемыми».

 

 

 

Программирование и основы алгоритмизации курс 1, 2014 - 2015 г.

109

 

 

Программирование и основы алгоритмизации курс 1, 2014 - 2015 г.

110

Кафедра

 

«Стихийное» программирование

 

Кафедра

«Стихийное» программирование

 

информатики

 

информатики

 

 

 

УГАТУ

 

 

УГАТУ

 

 

 

 

 

 

Создание языков программирования высокого

 

После появления подпрограмм

 

уровня, таких, как FORTRAN и ALGOL,

 

 

структура программы

 

существенно упростило программирование, это

 

изменилась:

 

позволило увеличить сложность программ.

 

основная программа;

 

 

 

 

 

область глобальных

 

 

 

 

 

 

данных;

 

 

 

 

 

набор подпрограмм (в

 

 

 

 

 

 

основном

 

 

 

 

 

 

библиотечных),

 

 

 

 

 

 

выполняющих

 

 

 

 

 

 

обработку всех данных

 

 

 

 

 

 

или их части.

 

 

 

Программирование и основы алгоритмизации курс 1, 2014 - 2015 г.

111

 

 

Программирование и основы алгоритмизации курс 1, 2014 - 2015 г.

112

Кафедра

«Стихийное» программирование

 

Кафедра

 

«Стихийное» программирование

 

информатики

 

информатики

 

 

УГАТУ

 

 

УГАТУ

 

 

 

 

 

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

 

Чтобы сократить количество искажений части

 

 

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

 

«снизу-вверх»

 

 

 

размещать локальные данные.

 

(восходящее

 

 

 

 

 

 

 

проектирование):

 

 

 

 

 

вначале проектировали

 

 

 

 

 

и реализовывали

 

 

 

 

 

сравнительно простые

 

 

 

 

 

подпрограммы, из

 

 

 

 

 

которых затем

 

 

 

 

 

пытались построить

 

 

 

 

 

сложную программу.

 

 

 

 

 

 

Программирование и основы алгоритмизации курс 1, 2014 - 2015 г.

113

 

 

Программирование и основы алгоритмизации курс 1, 2014 - 2015 г.

114

Кафедра

«Стихийное» программирование

 

Кафедра

 

«Стихийное» программирование

 

информатики

 

информатики

 

 

УГАТУ

 

 

УГАТУ

 

 

 

 

 

 

 

 

Этап стихийного программирования

 

 

 

 

 

характеризуется:

 

 

 

 

Проектированием «снизу-вверх»

 

 

 

 

 

(восходящее);

 

 

 

 

Появлением подпрограмм;

 

 

 

 

Делением данных на глобальные и локальные;

 

 

 

Появлением языков ассемблеров;

 

Интерфейсы подпрограмм получались сложными, и

Появлением языков программирования

 

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

 

высокого уровня (FORTRAN, ALGOL).

 

большое количество ошибок согласования.

 

 

 

 

 

 

Программирование и основы алгоритмизации курс 1, 2014 - 2015 г.

115

 

 

Программирование и основы алгоритмизации курс 1, 2014 - 2015 г.

116

Кафедра

Структурное программирование

 

Кафедра

Структурное программирование

 

информатики

 

информатики

 

 

УГАТУ

 

 

УГАТУ

 

 

 

 

 

В основе лежит принцип декомпозиции

 

представление задачи в виде иерархии

 

(разбиение на части) сложных программ и

 

 

подзадач простейшей структуры;

 

реализация этих частей в виде отдельных

 

реализация подзадач в виде отдельных

 

 

 

 

 

небольших подпрограмм.

 

 

небольших подпрограмм.

 

 

 

 

 

 

Проектирование осуществляется «сверху вниз»

Эти принципы были заложена в основу

 

 

 

 

 

(нисходящее проектирование):

 

 

процедурных языков программирования

 

 

 

 

 

 

• реализация общей идеи, которая обеспечивает

 

(Фортран, Алгол, Кобол, PL/I, Basic, Pascal, Си).

проработку интерфейсов подпрограмм;

 

 

 

 

 

 

Программирование и основы алгоритмизации курс 1, 2014 - 2015 г.

117

 

 

Программирование и основы алгоритмизации курс 1, 2014 - 2015 г.

118

Кафедра

Структурное программирование

 

Кафедра

Структурное программирование

 

информатики

 

информатики

 

 

УГАТУ

 

 

УГАТУ

 

 

 

 

 

Дальнейший рост сложности и размеров

 

Стремление разграничить доступ к глобальным

 

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

 

данным программы, привело к возникновению

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

 

 

технологии модульного программирования,

данных, в языках появляется возможность

 

 

которое предполагает выделение групп

 

определения пользовательских типов

 

 

подпрограмм, использующих одни и те же

 

данных.

 

 

глобальные данные, в отдельно компилируемые

 

 

 

 

модули (библиотеки подпрограмм), например,

 

 

 

 

модуль графических ресурсов, модуль

 

 

 

 

 

подпрограмм вывода на принтер и т.п.

 

 

Программирование и основы алгоритмизации курс 1, 2014 - 2015 г.

119

 

 

Программирование и основы алгоритмизации курс 1, 2014 - 2015 г.

120