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

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

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

Кафедра

Лекции по программированию

 

Кафедра

 

Преподаватель

 

информатики

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

 

информатики

 

 

УГАТУ

 

 

УГАТУ

 

 

 

 

 

 

 

 

 

 

 

Для студентов факультета ИРТ

 

 

 

 

 

 

Направление СТС, ЭАС, БПС

 

Рамбургер Ольга Леонардовна

 

 

 

 

 

 

Составитель:

 

Телефон: 8 908 357 68 21

 

 

доценты кафедры Информатика

 

 

 

 

 

 

 

 

 

Карчевская Маргарита Петровна

 

E-mail: ramburger_2013@mail.ru

 

 

 

 

 

 

Рамбургер Ольга Леонардовна

 

 

 

 

 

 

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

1

 

 

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

2

Кафедра

 

 

Кафедра

 

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

 

информатики

Тема

 

информатики

 

 

УГАТУ

 

 

УГАТУ

 

 

 

 

 

Алгоритмы

 

Понятие алгоритма является одним из основных

 

 

 

понятий современной информатики.

 

 

 

 

 

 

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

 

Алгоритм* – конечный набор точных и понятных

 

 

 

Свойства алгоритма

 

исполнителю предписаний, позволяющих

 

Объекты алгоритма

 

решать конкретную задачу из определенного

 

 

класса однотипных задач.

 

 

 

 

 

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

 

 

 

 

 

Базовые структуры алгоритмов

 

* Algorithmi – латинская форма написания имени математика IX

 

 

века Аль Хорезми, который сформулировал правила

 

 

 

 

 

 

 

 

 

 

выполнения четырех арифметических действий в

 

 

 

 

 

десятичной системе счисления.

 

 

 

 

 

 

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

4

Кафедра

 

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

 

Кафедра

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

 

информатики

 

информатики

 

 

 

УГАТУ

 

УГАТУ

 

 

 

 

 

 

Алгоритм – это преобразование входных

 

Исполнитель – это человек, группа людей,

 

(исходных) данных в выходные (результат

 

 

 

робот, станок, компьютер, язык

 

решения задачи). Преобразование выполняет

 

 

 

 

 

Исполнитель.

 

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

 

 

 

 

 

СКИ (система команд исполнителя) – некоторая

 

 

 

 

совокупность команд, которую может

 

 

 

 

 

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

 

 

 

 

 

алгоритма для получения необходимого

 

 

 

 

 

результата.

 

 

 

 

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

5

 

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

6

Кафедра

 

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

 

Кафедра

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

 

информатики

 

информатики

 

 

 

УГАТУ

 

УГАТУ

 

 

 

 

 

 

Действия исполнителя – строгое выполнение

 

 

 

ОДЗ – область

 

 

 

 

допустимых значений

 

заданных инструкций (формальное, не вникая в

 

 

 

 

 

 

 

смысл того, что он делает).

 

Исходные данные

 

 

 

 

 

 

 

 

Алгоритм – это

 

 

 

 

 

 

 

преобразование

 

Наличие алгоритма формализует процесс

 

 

 

 

 

 

решения задачи, исключает рассуждение

 

Знания о предметной

 

 

 

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

 

 

области

Искомый результат

 

 

 

 

Конкретный набор исходных данных из ОДЗ –

 

 

 

 

 

экземпляр задачи, решаемой с помощью

 

 

 

 

 

данного алгоритма.

 

 

 

 

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

7

 

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

8

Кафедра

Свойства алгоритма

 

Кафедра

Свойства алгоритма

 

информатики

 

информатики

 

 

УГАТУ

 

УГАТУ

 

 

 

 

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

Результативность. На каждом шаге известно,

 

виде последовательности шагов. Только

 

что считать результатом этого шага, а сам

 

выполнив одно предписание, можно приступить

процесс должен закончиться за конечное число

 

 

 

к выполнению следующего.

 

шагов.

 

 

 

 

 

Понятность. Необходимо, чтобы исполнитель

 

Массовость. Алгоритм применим к целому

 

мог понять и выполнить каждый шаг

 

 

 

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

 

предписания.

 

 

 

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

Детерминированность. Процесс применения

 

 

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

 

правил к исходным данным (путь решения

 

 

 

 

 

 

задачи) определен однозначно.

 

 

 

 

 

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

9

 

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

10

Кафедра

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

 

Кафедра

Объекты алгоритма

 

информатики

 

информатики

 

 

УГАТУ

 

УГАТУ

 

 

 

 

Алгоритм это последовательность

 

Решение любой задачи предполагает наличие

 

 

реальных объектов – объектов задачи.

 

однозначных понятных исполнителю

 

 

 

Каждый объект задачи имеет свои характеристики

 

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

 

(атрибуты).

 

 

 

 

 

за конечное число шагов получить искомый

Задача о начислении зарплаты сотрудникам

 

 

 

 

 

результат, определяемый исходными

 

Объекты задачи : табельный номер сотрудника,

 

данными для однотипных задач некоторого

ФИО, оклад, отработанное время, зарплата и т.д.

класса.

 

Характеристики объектов: ФИО – это строки

 

 

 

 

символов, а табельный номер, оклад, отработанное

Примечание. Это понятие алгоритма применимо для

 

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

 

 

 

 

 

практических задач, имеющих решение.

 

представленные числами или арифметическими

 

 

 

 

выражениями.

 

 

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

11

 

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

12

Кафедра

 

Объекты алгоритма

 

Кафедра

Объекты алгоритма

 

информатики

 

информатики

 

 

 

УГАТУ

 

УГАТУ

 

 

 

 

 

Задача о решении системы уравнений

 

Если выполнение алгоритма возложено на

 

Объекты задачи – число уравнений,

 

компьютер, необходима строгая формализация

 

 

 

 

 

коэффициенты уравнений, правые части.

 

задачи.

 

 

 

 

 

 

 

 

 

 

Она предполагает замену объектов задачи –

 

Характеристики объектов: число уравнений,

 

объектами алгоритма, которые должны

 

 

 

 

 

 

коэффициенты уравнений, правые части – это

наследовать их атрибуты.

 

 

 

 

 

 

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

 

При разработке алгоритма могут появиться и

 

 

арифметическими выражениями или числами.

вспомогательные объекты не соответствующие

 

 

 

 

никаким объектам задачи.

 

 

 

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

13

 

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

14

Кафедра

 

Объекты алгоритма

 

Кафедра

Объекты алгоритма. Константы

 

информатики

 

информатики

 

 

 

УГАТУ

 

УГАТУ

 

 

 

 

 

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

Объект алгоритма Константа. Каждая константа

 

 

 

Имя это неизменно, фиксировано и уникально.

имеет фиксированный тип (арифметический,

 

символьный или другой) и имеет фиксированное,

Имена для объектов устанавливает автор

 

 

неизменяемое в данном алгоритме значение,

алгоритма.

 

 

соответствующее ее типу.

 

 

 

 

 

 

Рекомендуется выбирать мнемонические имена,

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

 

 

 

 

которые отражают суть объекта.

 

задачи и известно до начала разработки

 

 

 

 

 

алгоритма.

 

 

 

 

 

Например, в некотором списке фамилий определяется

 

 

 

 

 

наличие фамилии Иванов. В алгоритме Фамилия – это

 

 

 

 

объект, а Иванов – символьная константа.

 

 

 

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

15

 

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

16

Кафедра

Объекты алгоритма. Переменные

Кафедра

Объекты алгоритма

 

информатики

информатики

 

 

 

 

 

 

 

 

 

 

 

УГАТУ

 

 

 

УГАТУ

Переменная – это объект алгоритма, который

Задача: вычислить длину окружности: L = π* D,

 

имеет определенный фиксированный тип

L (длина), D (диаметр), π (величина постоянная в

(арифметический, символьный или другой) и

 

любой задаче) – объекты задачи.

 

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

 

 

Объекты алгоритма

 

алгоритма имеет единственное значение

входные: pi (константа);

 

 

 

 

 

 

 

 

 

соответствующего типа.

 

 

 

 

D (переменная)

 

 

 

 

 

 

 

 

 

 

 

К моменту использования переменной в

 

 

 

 

соответствуют объектам задачи

 

алгоритме ее значение должно быть

 

 

выходные: L (переменная)

 

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

 

 

 

 

 

значение переменной может изменяться.

 

 

соответствуют объектам задачи

 

 

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

 

17

 

 

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

18

Кафедра

Объекты алгоритма. Переменные

Кафедра

Объекты алгоритма. Переменные

 

информатики

информатики

 

 

 

 

 

 

 

 

 

 

 

УГАТУ

 

 

 

УГАТУ

Задача. Вычислить значение функции

 

 

Задача. Протабулировать функцию y = sin(x) на

 

y = arctg(

 

3

+ b + ln(ac

3

+ b))

 

заданном промежутке [х0 , хk]

 

ac

 

с шагом h.

 

 

 

 

 

 

 

Объекты алгоритма (переменные):

 

 

Объекты алгоритма (переменные):

 

входные a, b, c (соответствуют объектам

входные x0, xk, h (соответствуют

 

задачи)

 

 

 

 

 

 

объектам задачи)

 

• вспомогательные z (используются во время

вспомогательные x

 

вычислений)

z = ac3 + b

 

 

выходные y (соответствуют

 

 

 

 

 

 

объектам задачи)

 

 

 

 

 

 

 

 

 

 

выходные y (соответствуют объектам задачи)

 

 

 

 

 

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

 

19

 

 

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

20

Кафедра

Объекты алгоритма. Массивы

 

Кафедра

Объекты алгоритма. Массивы

 

информатики

 

информатики

 

 

УГАТУ

 

УГАТУ

 

 

 

 

 

 

Многие задачи связаны с обработкой больших

 

В линейной таблице (список) каждому ее

 

объемов информации, представляющей

 

элементу соответствует порядковый номер.

 

совокупность данных, объединенных единым

Для элемента прямоугольной таблицы должны

 

математическим содержанием или связанных

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

между собой по смыслу.

 

(номер строки) и номер по горизонтали (номер

 

 

 

 

 

 

 

 

столбца).

 

 

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

 

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

 

линейных или прямоугольных таблиц.

 

данных используются массивы.

 

 

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

21

 

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

22

Кафедра

 

Массивы

 

Кафедра

 

Массивы

 

информатики

 

 

информатики

 

 

 

 

УГАТУ

 

 

УГАТУ

 

 

 

 

 

 

Массив это конечная упорядоченная по индексу

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

совокупность однотипных данных, имеющая

 

Количество элементов в массиве определяет его

одно имя.

 

 

 

 

размер.

 

 

 

 

 

 

 

 

Работа с массивом сводится к действиям над его

 

 

 

 

элементами.

 

 

Размерность массива – одномерный. Размер

 

 

 

 

 

 

Индексы определяют положение элемента в

 

массива равен 5

 

 

массиве.

 

 

Элемент одномерного массива обозначается

 

 

 

 

 

 

Массив характеризуется – именем, размерностью

переменной с одним индексом

 

и размером.

 

 

ai

 

 

 

 

 

 

 

 

 

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

23

 

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

24

Кафедра

 

 

Массивы

 

Кафедра

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

 

информатики

 

 

 

информатики

 

 

 

 

УГАТУ

 

УГАТУ

 

 

 

 

 

 

 

 

 

 

Размерность массива –

Задача. Найти произведение C n натуральных

 

 

 

 

чисел, т.е. факториал числа n.

 

 

 

 

 

двумерный

 

 

 

 

 

 

 

 

n! = 1 × 2 × 3 × … × n

 

 

 

 

 

Размер массива равен 12

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1. Полагаем C равным единице и переходим к

 

Элемент двумерного массива обозначается

следующему пункту.

 

 

переменной с двумя индексами. Первый индекс

2. Полагаем i равным единице и переходим к

 

обозначает номер строки, а второй – номер

следующему пункту.

 

 

столбца

 

 

 

3. Полагаем C = C × i и переходим к следующему пункту.

 

bi , j

 

 

 

4. Проверяем, равно ли i числу n. Если i < n, то

 

 

 

 

 

увеличиваем i на единицу и переходим к пункту 3.

 

 

 

 

 

Если i = n, то вычисления прекращаем.

 

 

 

 

 

 

Входные данные?

Выходные данные?

 

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

25

 

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

26

Кафедра

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

Кафедра

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

 

информатики

информатики

 

 

 

 

 

 

 

 

УГАТУ

 

 

 

УГАТУ

Задача. Найти наименьшее число М в

 

1. Полагаем i = 1, переходим к следующему пункту.

последовательности из n чисел a1, a2, …, an.

2. Полагаем М = аi, переходим к следующему

 

Первоначально предположим М = a1.

 

 

 

пункту.

 

 

Затем М сравним с последующими числами

3. Сравниваем i с n, если i < n, переходим к пункту 4,

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

если i = n, процесс поиска останавливаем.

 

найдется число аi < М.

 

 

 

4. Увеличиваем i на 1 и переходим к следующему

Меняем М = аi, и продолжаем сравнение нового М с

пункту.

 

 

последующими числами из последовательности,

 

 

 

 

 

 

начиная с а

i+1

и так до тех пор, пока не будут

5. Сравниваем аi, с М. Если аi >= M, то переходим

 

 

 

 

 

 

 

 

просмотрены все n чисел.

 

к пункту 3, иначе (ai < M) переходим к пункту 2.

 

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

27

 

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

28

Входные данные?

 

 

Выходные данные?

 

 

 

 

Кафедра

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

 

Кафедра

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

 

информатики

 

информатики

 

 

УГАТУ

 

УГАТУ

 

 

 

 

 

Задача. Найти наибольший общий делитель

 

«Школьный» метод:

 

 

 

 

 

(НОД) двух натуральных чисел m и n.

 

Шаг 1 Разложить на простые множители число m.

 

 

 

 

Входные данные:

m = 60 n = 24

 

 

60 = 2 × 2 × 3 × 5

 

Выходные данные (результат):

 

Шаг 2 Разложить на простые множители число n.

 

 

НОД для чисел m и n.

 

24 = 2 × 2 × 2 × 3

 

 

 

 

 

Шаг 3 Выделить их общие делители. Это 2, 2, 3.

 

 

 

 

 

Шаг 4 Перемножить общие делители

 

 

 

 

 

 

НОД = 2 × 2 × 3 = 12

 

 

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

29

 

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

30

Кафедра

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

 

Кафедра

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

 

информатики

 

информатики

 

 

УГАТУ

 

УГАТУ

 

 

 

 

 

Метод последовательного перебора:

 

Метод последовательного перебора:

 

Подобрать наибольшее целое число t – такое,

 

Шаг 1 Присвоить значение функции min {m, n}

 

 

 

переменной t.

 

чтобы оба числа делились на него без остатка.

 

 

Шаг 2 Разделить m на t. Если остаток равен нулю,

Первоначально

t = min {m, n}.

 

 

 

перейти к шагу 3; иначе перейти к шагу 4.

 

 

 

 

 

 

 

Выполнение алгоритма можно начать с проверки

Шаг 3 Разделить n на t. Если остаток равен нулю,

 

 

 

 

делятся ли оба числа, m и n, на t без остатка.

 

 

вернуть t в качестве ответа и закончить

 

Если это так, то число t является ответом; если

 

 

работу; иначе перейти к шагу 4.

 

нет, нужно уменьшить значение t на единицу и

 

Шаг 4 Вычесть 1 из t. Перейти к шагу 2.

 

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

 

Алгоритм не будет корректно работать, если хотя бы один

 

 

 

 

 

 

 

 

из его входных параметров равен нулю.

 

 

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

31

 

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

32

Кафедра

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

 

Кафедра

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

 

информатики

 

информатики

 

 

УГАТУ

 

УГАТУ

 

 

 

 

Алгоритм Евклида:

 

 

 

 

1. Проверяем n = 0, если да, то ответ m, если нет,

 

 

 

то п.2

 

 

 

 

2. Находим r = m mod n

 

 

 

 

3. Меняем m = n и n = r

 

 

 

 

4. Переходим к п.1

 

 

 

 

 

 

 

 

нет

 

 

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

33

 

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

34

Кафедра

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

 

Кафедра

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

 

информатики

 

информатики

 

 

УГАТУ

 

УГАТУ

 

 

 

 

Алгоритм Евклида:

 

 

 

 

1. Проверяем, если m и n ≠ 0, то п. 2, иначе п. 4

 

 

 

 

2. Проверяем, если m > n, то m = m mod n, иначе

 

 

 

n = n mod m

 

 

 

 

3. Проверяем, если m и n ≠ 0, то повторяем п. 2

 

 

 

 

иначе п. 4

 

 

 

 

4. Проверяем, если m = 0, то НОД = n, иначе

 

 

 

 

НОД = m

 

 

 

 

 

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

35

 

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

36

Кафедра

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

 

Кафедра

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

 

информатики

 

информатики

 

 

 

УГАТУ

 

 

УГАТУ

 

 

 

 

 

 

 

При составлении алгоритма важно понимать:

 

При составлении алгоритма важно понимать:

 

Каждый шаг алгоритма должен быть четко и

 

Для решения одной и той же задачи может

 

 

однозначно определен.

 

 

существовать несколько разных алгоритмов.

 

Должны быть точно указаны диапазоны

 

В основу алгоритмов для решения одной и той же

 

допустимых значений входных данных, которые

 

задачи могут быть положены совершенно разные

 

обрабатываются с помощью алгоритма.

 

 

принципы, что может существенно повлиять на

Один и тот же алгоритм можно представить

 

 

скорость решения этой задачи.

 

 

 

 

 

 

 

несколькими разными способами.

 

 

 

 

 

 

 

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

37

 

 

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

38

Кафедра

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

 

Кафедра

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

 

информатики

 

информатики

 

 

 

УГАТУ

 

 

УГАТУ

 

 

 

 

 

 

 

Задача. Найти количества цифр в заданном

 

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

 

десятичном натуральном числе m.

 

Шаг 1: Задать число m.

 

Входные данные:

m = 476892

 

 

 

Шаг 2: Cделать k равным 0.

 

Выходные данные:

количество цифр в числе m.

 

Шаг 3: Cделать m равным целой части от деления

Алгоритм:

 

 

 

 

m на 10.

 

 

476892 div 10 = 47689

 

 

 

 

Шаг 4: Увеличить значение k на 1

 

 

47689 div 10 = 4768

 

 

 

 

Шаг 5: Если m не равен нулю, то перейти к шагу 3,

 

4768 div 10 = 476

 

 

 

 

 

если равен 0, то перейти к шагу 6.

 

 

476 div 10 = 47

 

 

 

 

 

 

 

 

 

 

 

47 div 10 = 4

 

 

Шаг 6: Вывести значение k.

 

 

 

 

 

 

 

 

 

4 div 10 = 0

Ответ: 6 цифр

 

 

 

 

 

 

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

39

 

 

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

40