
- •Министерство образования и науки рф
- •Владимирский государственный университет
- •Оглавление
- •Глава 1. Алгоритмизация 17
- •Глава 2. Программирование 77
- •Глава 3. Отдельные вопросы методики преподавания
- •2. Проектная технология – средство реализации
- •3. Пример использования элементов технологии
- •Введение
- •Краткая структурная схема изучения темы «Алгоритмизация и программирование»
- •Требования к знаниям и умениям учащихся при изучении содержательной линии «Алгоритмизация и программирование»
- •Рекомендации по изучению языков программирования Процедурное программирование
- •Краткая история языков программирования Ершол, Turbo Pascal, qBasic Язык программирования Ершол
- •Язык программирования Turbo Pascal
- •Язык программирования qBasic
- •Визуальное объектно-ориентированное программирование
- •Языки логического и функционального программирования
- •Глава 1. Алгоритмизация
- •1. Алгоритм и его свойства
- •1.1. Понятие алгоритма
- •1.2 Исполнитель. Схема знакомства с исполнителем
- •1.3. Свойства алгоритмов
- •2. Способы записи алгоритмов
- •2.1. Словесный способ записи алгоритмов
- •2.2. Блок-схемы4 алгоритмов
- •2.2.1. Основные элементы построения блок-схем
- •Основные управляющие команды организации действий в алгоритмах
- •2.2.3. Дополнительные управляющие команды организации действий в алгоритмах
- •3. Примеры блок-схем алгоритмов
- •3.1. Блок-схемы алгоритмов, содержащих команды ветвления
- •3.2. Блок-схемы алгоритмов, содержащих команды повторения
- •3.3 Блок-схемы алгоритмов работы с массивами
- •3.4. Блок-схемы алгоритмов, содержащих команды обращения к вспомогательным алгоритмам
- •4. Алгостихи
- •5. Алгоритмы для исполнителя мнр (машины с неограниченными регистрами)
- •Глава 2. Программирование
- •1. Кодирование управляющих команд организации действий на процедурных языках Ершол, qBasic, Turbo Pascal13
- •2. Коды программ решения задач 10-36 на языках Ершол, qBasic, Turbo Pascal14
- •3. Занимательные игры-алгоритмы
- •Структурная схема возможных блоков построения игровых алгоритмов
- •3.1. Задача Баше
- •Программа на языке qBasic игры Баше
- •3.2. Ханойская башня
- •Программа на языке Turbo Pascal игры Ханойская башня (с использованием рекурсии)
- •3.3 Игра «Жизнь»
- •Программа на языке qBasic игры «Жизнь»
- •Глава 3. Отдельные вопросы методики преподавания учебного материала содержательной линии «Алгоритмизация и программирование»
- •1. Предметные технологии формирования информационной культуры учащихся
- •1.1. Проектирование алгоритмов «сверху вниз» и «снизу вверх»
- •Примеры проектирования алгоритмов с использованием технологий «сверху вниз» и «снизу вверх»
- •Задания к данному параграфу
- •1.2. Имитационное моделирование исполнения программ компьютером
- •1.2.1. Моделирование памяти компьютера
- •Задания к данному параграфу
- •1.2.2. Моделирование с использованием наглядных протоколов
- •Примеры ручного исполнения программ с использованием метода наглядных протоколов
- •Решение
- •Задания к данному параграфу
- •1.3. Имитационное моделирование при нахождении алгоритма поиска минимального элемента в массиве чисел
- •Задания к данному параграфу
- •1.4. Имитационное моделирование при нахождении алгоритма сортировки элементов массива методом выбора
- •Задания к данному параграфу
- •1.5. Имитационное моделирование при изучении механизма пирамидальной сортировки элементов массива
- •2. Проектная технология – средство реализации личностно-ориентированного обучения
- •3. Пример использования элементов технологии проблемного обучения при введении команды повторения «пока», управляющей команды организации действий в алгоритмах
- •4. Вопросы и задания к семинарским занятиям
- •5. Лабораторно-практические работы
- •Лабораторная работа 1
- •Лабораторная работа 2
- •Лабораторная работа 3
- •Лабораторная работа 4
- •Лабораторная работа 5
- •Лабораторная работа 6
- •6. Самостоятельная работа
- •Приложения Приложение 1. Программа на языке vba для Microsoft Excel, имитирующая механизм сортировки элементов массива простыми включениями
- •Приложение 2. Процедура на языке Turbo Delphi, имитирующая механизм сортировки элементов массива простым выбором
- •Библиографический список
- •Отпечатано в отделе оперативной полиграфии вггу
- •600024, Г. Владимир, ул. Университетская, 2, т. 33-87-40
- •15 Легенда о происхождении игры «Ханойская башня»
Задания к данному параграфу
Задание 1. Задайте массив вещественных чисел a[1:n]. Смоделируйте последовательность преобразований содержимого памяти при реализации метода поиска элемента массива, удовлетворяющего заданному требованию:
найдите минимальный, максимальный, равный заданному значению, элемент массива и его индекс;
найдите номер первого элемента массива, равного заданному с клавиатуры числу b, т. е. наименьшее i, при котором a[i]=b;
найдите наибольшее i, при котором a[i] >0;
Задание 2. Составьте блок-схемы алгоритмов решения задач задания 1, напишите программы на выбранных языках программирования.
1.4. Имитационное моделирование при нахождении алгоритма сортировки элементов массива методом выбора
Сортировка выбором
Рассмотрим сортировку простым выбором. Задача сортировки элементов массива достаточно сложная для учащихся задача алгоритмизации. Метод упорядочения элементов линейного массива методом выбора опирается на задачу поиска минимального (максимального) элемента массива. Задачу поиска минимального (максимального) элемента массива учащиеся должны рассмотреть при изучении темы «Поиск заданного элемента в массиве».
Прежде чем переходить к формулировке алгоритмов в терминах алгоритмического языки, нужно рассмотреть основную идею, на которой основывается алгоритм упорядочения. Суть используемого приема состоит в последовательном рассмотрении ряда массивов A[1:n], A[2:n], A[3:n], A[4:n], …, A[n-1:n], составленных из элементов исходного массива, каждый из которых содержит на один элемент меньше, чем предыдущий. В каждом из этих массивов отыскивается наименьший элемент, который тут же переставляется местами с первым элементом рассматриваемого массива (первый раз – с A[1], второй раз – с A[2], третий – с A[3], … , последний раз – с A[n-1]). Процесс заканчивается, когда остаётся один элемент исходного массива. Понятно, что совокупность, не рассматриваемых на каждом этапе элементов массива, образует в результате массив, упорядоченный по возрастанию. Используемый прием лучше всего пояснить на конкретном примере, моделируя память компьютера. Пусть имеется линейный массив A[1:5], состоящий из пяти элементов:
A[1] |
A[2] |
A[3] |
A[4] |
A[5] |
1 |
2 |
3 |
4 |
5 |
24 |
19 |
15 |
18 |
22 |
В первой строке таблицы записаны имена элементов массива. Во второй строке – индексы элементов массива. В третьей строке – значения соответствующих элементов массива. Выберем в таблице минимальный элемент, это элемент A[3] =15, и переставим его с первым элементом, A[1] = 24, A[1] A[3]. Получим таблицу:
A[1] |
A[2] |
A[3] |
A[4] |
A[5] |
1 |
2 |
3 |
4 |
5 |
15 |
19 |
24 |
18 |
22 |
Отставим теперь в сторону первый элемент массива, он стоит на своём месте, и будем рассматривать новый массив A[2:5], образованный из прежнего, отбрасыванием первого элемента:
A[1] |
|
A[2] |
A[3] |
A[4] |
A[5] |
1 |
|
2 |
3 |
4 |
5 |
15 |
|
19 |
24 |
18 |
22 |
Найдем теперь минимальный элемент в новом массиве A[2:5], это элемент A[4] = 18, переставим его со вторым элементом, A[2] = 19, A[2] A[4]. Получим таблицу:
A[1] |
|
A[2] |
A[3] |
A[4] |
A[5] |
1 |
|
2 |
3 |
4 |
5 |
15 |
|
18 |
24 |
19 |
22 |
Элемент A[2] массива стоит на своём месте в получаемом отсортированном массиве, отставим его в сторону:
A[1] |
A[2] |
|
A[3] |
A[4] |
A[5] |
1 |
2 |
|
3 |
4 |
5 |
15 |
18 |
|
24 |
19 |
22 |
Найдем теперь минимальный элемент в новом массиве A[3:5], это элемент A[4] = 19, переставим его с третьим элементом массива, A[3] = 24, A[3] A[4]. Получим таблицу:
A[1] |
A[2] |
|
A[3] |
A[4] |
A[5] |
1 |
2 |
|
3 |
4 |
5 |
15 |
18 |
|
19 |
24 |
22 |
Элемент A[3] массива стоит на своём месте в получаемом отсортированном массиве, отставим его в сторону.
A[1] |
A[2] |
A[3] |
|
A[4] |
A[5] |
1 |
2 |
3 |
|
4 |
5 |
15 |
18 |
19 |
|
24 |
22 |
Найдем теперь минимальный элемент в массиве A[4:5], это элемент A[5] = 22, переставим его с четвёртым элементом массива, A[4] = 24, A[4] A[5]. Получим таблицу:
A[1] |
A[2] |
A[3] |
|
A[4] |
A[5] |
1 |
2 |
3 |
|
4 |
5 |
15 |
18 |
19 |
|
22 |
24 |
Элемент A[4] массива стоит на своём месте в получаемом отсортированном массиве, отставим его в сторону.
A[1] |
A[2] |
A[3] |
A[4] |
|
A[5] |
1 |
2 |
3 |
4 |
|
5 |
15 |
18 |
19 |
22 |
|
24 |
Последний элемент A[5] массива при данной сортировке всегда стоит на своём месте в получаемом отсортированном массиве, его тоже можно отставить влево.
Получим окончательное решение в виде такой таблицы:
A[1] |
A[2] |
A[3] |
A[4] |
A[5] |
1 |
2 |
3 |
4 |
5 |
15 |
18 |
19 |
22 |
24 |
Третья строка таблицы – элементы отсортированного массива.
При рассмотрении примера, видно, что вполне самостоятельную часть алгоритма упорядочения элементов массива этим методом, составляет алгоритм нахождения минимального элемента в массиве A[k:n], где k изменяется от 1 до n-1. Можно сделать вывод, что алгоритм поиска минимального элемента в массиве A[k:n] можно рассматривать как вспомогательный по отношению к основному алгоритму упорядочения массива.
Пример программы сортировки элементов массива методом простого выбора
алг сортвыбор (арг цел n) нач цел i,k,b,цел таб a[1:n] │input(n,a) │print(n,a) │нц для i от 1 до n-1 ││индмин (i,n,a,k) ││|обмен значениями a[i] и a[k] ││b:=a[i]; a[i]:=a[k];a[k]:=b ││print(n,a) │кц кон алг индмин (арг цел i,n,арг цел таб a[1:n],рез цел k) нач цел min1,j │|поиск k – индекса минимального │|элемента в массиве, начиная │|с номера i до номера n │min1:=a[i]; k:=i │нц для j от i+1 до n ││если min1>a[j] │││то │││ min1:=a[j] │││ k:=j ││все │кц кон |
алг print (арг цел n,арг цел таб a[1:n]) нач цел i │|вывод элементов массива │вывод нс │нц для i от 1 до n ││вывод a[i]," " │кц кон алг input (арг цел n,рез цел таб a[1:n]) нач цел i │|ввод элементов массива │нц для i от 1 до n ││вывод "a[",i,"]= " ││ввод a[i] │кц кон |
Таблица 9. Программа сортировки элементов массива методом простого выбора на языке Ершол |
При составлении программы сортировки элементов массива методом простого выбора применим технологию проектирования алгоритма «снизу вверх». При рассмотрении примера было выяснено, что для получения результата необходимо n-1 раз последовательно находить индекс k минимального элемента массивов A[1:n],A[2:n], A[3:n], A[4:n], … , A[n-1:n], составленных из элементов исходного массива, каждый из которых содержит на один элемент меньше, чем предыдущий. Далее элемент A[k] тут же необходимо переставить местами с первым элементом рассматриваемого массива (первый раз с – A[1], второй раз – с A[2], третий – с A[3], … , последний раз – с A[n-1]). Процесс заканчивается, когда остаётся один элемент исходного массива. Алгоритм сортировки можно записать так:
алг сортвыбор
нач
1шаг. Введи элементы массива в память компьютера.
2 шаг. Для i, изменяющегося от 1 до n-1, выполни следующие шаги.
2.1 шаг. Найди номер k минимального элемента массива a[i:n].
2.2 шаг. Поменяй местами a[i] и a[k].
2.3 шаг. Организуй вывод элементов массива, полученных при прохождении текущего цикла.
кон
Для составления программы, реализующей шаги 1 и 2.3 алгоритма, воспользуемся подпрограммами, составленными на странице 174.
Замечание: Процедура на Turbo Delphi, имитирующая механизм исполнения сортировки методом простого выбора, представлена в приложении 2.