- •В.Н.Агеев
- •А23 Программирование и основы алгоритмизации. Конспект лекций – м.: мгуп, 2012.– *** с.
- •Содержание
- •Предисловие
- •1. Понятие алгоритма в информатике. Блок-схемы алгоритмов
- •2. Типовые алгоритмы и их блок-схемы.
- •3. Алгоритмические языки и их классификация
- •Языки программи- рования
- •4. Методы объектно-ориентированного программирования
- •5. Интегрированная среда разработки Visual Basic
- •6. Программирование на языке Visual Basic
- •7. Программирование разветвляющихся процессов
- •If условие Then Оператор1 [ Else Оператор2]
- •8. Программирование циклических процессов
- •9. Графические возможности языка Visual Basic
- •10. Функции даты и времени. Объект Timer
- •11. Работа с внешними файлами и устройствами
- •Input # номер, имя_переменной
- •12. Работа с дисками и папками
- •CommonDialog1.ShowOpen
- •Open CommonDialog.FileName For Input As # 1
- •13. Работа с базой данных
- •14. Типы ошибок и методы отладки программ.
- •1. Синтаксические ошибки.
- •2. Ошибки в структуре программы.
- •3. Ошибки, возникающие во время выполнения программы.
- •4. Логические ошибки или ошибки алгоритма.
- •15. Примеры проектов
2. Типовые алгоритмы и их блок-схемы.
Нахождение суммы и произведения значений элементов числового массива.
При решении многих задач возникает необходимость вычисления суммы или произведения числового ряда a1, a2, …, an:
Обычно для этого используется циклический процесс, перед началом которого переменной, используемой для обозначения результата, присваивается начальное значение (S=0 при вычислении суммы иP=1 при вычислении произведения). Блок-схемы алгоритмов показаны на рис.2.
а)
Сумма
Ввод N, A
S : = 0
i : = 2, …, N
S := S + A(i)
Вывод S
б)
Произведение
Ввод N, A
P : = 1
i := 2, …, N
P := P * A(i)
Вывод P
Конец Конец
Рис.2. Блок-схема алгоритма вычисление суммы (а) и
произведения (б) числового ряда
На этих схемах A – имя массива,N– число элементов,i – параметр цикла.
Нахождение наибольшего и наименьшего значений в числовом массиве.
Дан числовой массив М (i),i= 1, 2, …,N. Необходимо определить номер элемента с наибольшим значением.
Начало
Ввод N, M
Nmax : = 1
Mmax : = M(1)
i := 2, …, N
да
M(i) > Mmax Mmax : = M(i)
Nmax : = i
нет
Вывод Nmax,
Mmax
Конец
Рис.3. Блок-схема алгоритма нахождения
наибольшего элемента массива М
Здесь используются две вспомогательные переменные MmaxиNmax.Первая предназначена для запоминания значения элемента, вторая – для его порядкового номера. Перед началом цикла этим переменным присваиваются начальные значения – параметры первого элемента массива. На каждом шаге цикла текущий элемент сравнивается сMmax и если он оказывается больше,Mmax получает новое значение, одновременно запоминается номер этого элемента.
По окончании цикла переменные MmaxиNmaxбудут равны соответственно максимальному значению в массивеMи порядковому номеру максимального элемента.
Примечание. Для того, чтобы отыскать наименьший элемент в заданном массиве достаточно в приведенном алгоритме заменить имена переменныхMmaxиNmax на MminиNmin и в цикле проверять выполнение условия вместо условияM(i) < Mmin.
Кроме того, за один проход можно получить обе величины: и MmaxиMmin. Для этого на каждом шаге цикла нужно проверять два условия –M(i) < Mmin иM(i) > Mmax.Bи при необходимости изменять значения либоMmin, либоMmax.
Сортировка числового массива.
Пусть задан числовой массив М, содержащийN элементов, и необходимо его упорядочить его по возрастанию, то есть перенумеровать элементы этого массива так, чтобы выполнялось условиеМ 1М 2…М N.
Существует несколько вариантов алгоритма сортировки. Один из них получил название «метод пузырька» и заключается в следующем.
Вводится понятие инверсии, которое означает ситуацию, когда имеет место нарушение порядка расположения элементов в заданном массиве. Например, если массив должен быть упорядочен по возрастанию, а два каких-либо соседних элемента этому свойству не удовлетворяют, то есть имеет место отношение Мi >М i+1. Тогда говорят, что имеет место инверсия элементов с номерамиiиi+1.
Суть метода пузырька состоит в том, что в заданном массиве по очереди сравниваются соседние элементы между собой и в случае появления инверсии ее устраняют – у таких элементов изменяют значения, М i +1получает значениеМ i, аМi +1. – значениеМ i. Это процедуру (проверку массива) повторяют несколько раз, до тех пор, пока все инверсии не будут устранены. Отсутствие инверсий означает упорядоченность массива.
На рис. 4 показана блок схема одного из вариантов алгоритма сортировки методом пузырька.
Сортировка
1
Ввод N, M
да F : = 1
F : = 0 нет
i := 1,2, …, N-1 Вывод M
нет
M i +1 < M i
да Конец
C := M i +1
M i +1:= M i
M i := C
F:=1
1
Рис.4. Блок-схема алгоритма сортировки
В приведенной схеме используются две вспомогательные переменные – Fи C. Перед началом цикла переменнойFприсваивается значение 0. Это признак упорядоченности массива. Если изначально массивMуже упорядочен, то в процессе цикла перебора его элементов условиеМi >М i+1 ни разу не будет выполнено и значениеFостанется равным 0. Это признак того, что массив уже упорядочен. Если же в процессе перебора хотя бы одна инверсия встретится, значениеFизменится на 1 и в этом случае процесс нужно повторить.
Переменная Cнужна для осуществления обмена значениями между элементамиМi иМ i+1 в случае, если имеет место инверсия.