
- •Основы алгоритмизации
- •Специфика решения задачи с использованием компьютера
- •Роль моделирования при решении сложных задач
- •Устройство компьютера как инструмента решения задач
- •Пример решения задачи с использованием компьютера
- •Вопросы для самоконтроля
- •Понятие алгоритма
- •Свойства алгоритмов и способы их задания
- •Понятие структурной алгоритмизации
- •Базовый набор алгоритмических структур
- •Примеры классических алгоритмов
- •Переменные-счетчики и аккумуляторы
- •Алгоритм перестановки значений двух переменных
- •Простейший алгоритм сортировки
- •Последовательный и двоичный поиск в массиве данных
- •Вопросы для самоконтроля
- •Основы программирования
- •Изучить три темы:
- •Ответить на вопросы для самоконтроля по каждой теме.
- •Эволюция программирования как деятельности
- •Развитие вычислительной техники
- •Парадигмы современного программирования
- •Уровни языков программирования
- •Современные языки программирования высокого уровня
- •Программирование как вид деятельности
- •Вопросы для самоконтроля
- •Инструменты программирования
- •Основные понятия программирования
- •Этапы разработки программы
- •Функции транслятора в процессе создания программы
- •Средства создания программ
- •Современные системы программирования
- •Вопросы для самоконтроля
- •Проектирование и внедрение программ
- •Этапы разработки программного обеспечения
- •Методы маркетинга программного обеспечения
- •Вопросы для самоконтроля
- •Технология алгоритмического программирования
- •Ответить на вопросы для самоконтроля по каждой теме.
- •Понятия алгоритмического программирования
- •Классификация данных
- •Базовые типы данных
- •Структурированные данные
- •Программа как совокупность операторов. Виды операторов
- •Вопросы для самоконтроля
- •Принципы структурного программирования
- •Понятие подпрограммы
- •Процедуры и функции как разновидность подпрограмм
- •Ответить на вопросы для самоконтроля по каждой теме.
- •Программный код экранной формы
- •Вопросы для самоконтроля
- •Объектно-ориентированное программирование
- •Понятие объекта и класса
- •Концепции объектно-ориентированного программирования
- •Вопросы для самоконтроля
- •Заключение
- •3.3. Глоссарий (краткий словарь терминов)
- •3.4 Технические и программные средства обеспечения дисциплины
-
Примеры классических алгоритмов
-
Переменные-счетчики и аккумуляторы
-
Типичное применение счетчиков и аккумуляторов – обновление значения в итоговой переменной.
Рассмотрим оператор присваивания number := number +1. Символ равенства действует, как стрелка, указывающая влево: «Возьми то, что стоит справа от знака равенства, вычисли, а затем положи в переменную, стоящую слева». После выполнения сложения значение суммы будет помещено в переменную number, заменив первоначальное значение. Конечный результат оказывается на 1 больше начального значения (рис. 1.22).
Рис. 1.22 схема работы переменной-счетчика
Подобные присваивания выполняются внутри циклов для подсчета числа повторов. После завершения выполнения цикла в переменной, осуществлявшей подсчет, окажется суммарное значение. Переменная number является счетчиком.
Аккумулятор подобен счетчику в том, что имя переменной находится с двух сторон оператора присваивания. В отличие от переменных-счетчиков аккумуляторы обычно добавляют значение, отличающееся от 1 (рис. 1.23). Аккумуляторы используются для подсчета денежных сумм, данных о продажах и т. д. Для суммирования ряда значений продаж, введенных пользователем, должно использоваться выражение, подобное следующему:
Общая_Сумма_Продаж := Общая_Сумма_Продаж + Сумма_Данной_Сделки.
Рис. 1.23 схема работы переменной-аккумулятора
-
Алгоритм перестановки значений двух переменных
Основой любого алгоритма сортировки является перестановка данных (обмен данными). При сортировке необходимо переупорядочить данные, осуществляя замену меньших значений большими или наоборот. На рис. 1.24 показано, что перестановка значений означает замену содержания одних переменных содержанием других переменных и наоборот.
Для перестановки значений обязательно требуется третья переменная, которую называют временной переменной (temporary variable), поскольку после перестановки значений она больше не нужна.
temp = var1;
var1 = var2 ;
var2 = temp.
Рис. 1.24 Перестановка значений двух переменных с использованием временной переменной
-
Простейший алгоритм сортировки
Сортировку значений можно осуществлять различными способами.
Пример. Требуется отсортировать следующий ряд чисел: 10, 54, 34, 46, 23
Список, отсортированный в порядке возрастания (ascending order), от наименьшего к наибольшему: 10, 23, 34, 46, 54.
Список, отсортированный в порядке убывания (descending order), от наибольшего к наименьшему: 54, 46, 34, 23, 10.
Наиболее популярной является «пузырьковая» сортировка (сортировка «пузырьковым» методом). Она не очень эффективна, но в отличие от прочих алгоритмов сортировки понятна и легко переносится в программный код.
Типичный алгоритм «пузырьковой» сортировки осуществляет перемещение больших значений в конец списка, т.е. список сортируется от меньшего значения к большему. Как правило, сортируемые данные хранятся в массиве. Используя индексы массива, можно переупорядочить элементы массива, переставляя значения, пока массив не будет упорядочен в требуемом порядке.
При сортировке «пузырьковым» методом элементы массива сравниваются и переставляются по два за один раз за несколько проходов. В каждом проходе осуществляется сравнение всех пар в списке. Если первое значение пары больше, чем второе, осуществляется их перестановка, чтобы большее значение «опустилось» на одну запись ниже.
Процесс сортировки представлен на рис. 1.25.
Рис. 1.25 Упорядочивание элементов массива по возрастанию
«Пузырьковая» сортировка требует использования вложенных циклов. Вложенные циклы управляют процедурой сортировки, осуществляя многократное последовательное обращение к значениям массивов данных.
На рис. 1.26 представлен алгоритм двух вложенных циклов. Внешний цикл отмечен серым цветом фона. Внутренний цикл выполняется «быстрее» внешнего, т.к. его параметр-счетчик принимает все свои значения во время выполнения одного прохода внешнего цикла. Когда внешний цикл перейдёт ко второму выполнению, внутренний цикл будет выполняться с самого начала. Внешний цикл определяет, сколько раз будет повторяться выполнение внутреннего цикла.
Рис. 1.26 Алгоритм двух вложенных циклов