
- •Министерство образования и науки рф
- •Владимирский государственный университет
- •Оглавление
- •Глава 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 Легенда о происхождении игры «Ханойская башня»
Решение
а |
m=7, k=7, n=3 |
m=7, k=9, n=9 |
нач k: = m |
k=7 |
k=7 |
если k<n |
7<3 (?), нет |
7<9 (?), да |
то k: = n |
|
k=9 |
все |
|
|
кон |
|
|
алг БИТ (арг вещ a, b, c, рез вещ z) дано |
a=7, b=3, c=9 |
|
надо нач БИД (a, b, z) |
z
a=7, b=3, z=7 |
|
БИД (z, c, z) кон |
z=7, c=9, z=9 |
Пример 8. Напишите программу для нахождения суммы элементов таблицы вещественных чисел a(1:n). Исполните составленную программу, используя метод моделирования исполнения программы компьютером в виде наглядных протоколов, для n = 3 и a[1] = 4.2, a[2] = -3, a[3] = 5.
Решение
алг сумма (арг цел n, арг вещ таб a[1:n], рез вещ S) дано |
n = 3, a[1] = 4.2, a[2] = -3, a[3] = 5 |
|||
надо
н S: = 0 i: = 1 |
S
S=0 i=1 |
|||
нц пока i<=3 |
1<=3(?), да |
2<=3?, да |
3<=3?, да |
4<=3?, нет |
S: = S + a[i] |
S=4.2 |
S=1.2 |
S=6.2 |
|
i: = i + 1 кц |
i=2 |
i=3 |
i=4 |
|
кон |
|
|
|
|
Пример 9. Напишите программу сортировки элементов массива целых чисел методом простого обмена. Исполните процедуру (sort) сортировки элементов массива простым обменом, используя метод моделирования исполнения программы компьютером в виде наглядных протоколов, для n = 3 и a[1] = 45, a[2] = 32, a[3] = 5. Сущность метода сортировки элементов массива простым обменом изложена ниже, стр.180.
Program BubbleSort; Uses crt; Const n=3; Type tmass=array[1..n] of byte; Var a:tmass; Procedure print (a: tmass); {Процедура печати элементов массива} Var i:byte; begin for i:=1 to n do write (a[i]:4); end; Procedure input (var a:tmass); {Процедура ввода элементов массива} Var i:byte; begin for i:=1 to n do begin write('a[',i, ']= '); readln(a[i]); end; end; |
Procedure sort (var a:tmass); {Процедура сортировки обменом} Var i,j,b:byte; begin for i:=2 to n do begin for j:=n downto i do if a[j]<a[j-1] then begin b:=a[j]; a[j]:=a[j-1]; a[j-1]:=b end; print(a); end; end; Begin input (a); sort (a); print (a); end. |
Программа сортировки элементов массива простым обменом |
Procedure sort (var a:tmass); Var i,j,b:byte; b for i:=2 to n do |
n=3; a[1]=45, a[2]=32, a[3]=5 i=2, 2≤3 (да) |
|
|
i=3, 3≤3 (да) |
|
i=4, 4≤3 (нет) |
begin for j:=n downto i do |
j=3, 3≥2 (да) |
j=2, 2≥2 (да) |
j=1, 1≥2 (нет) |
j=3, 3≥3 (да) |
j=2, 2≥3 (нет) |
|
if a[j]<a[j-1] then |
5<32 (да) |
5<45 (да) |
|
32<45 (да) |
|
|
begin b:=a[j]; a[j]:=a[j-1]; a[j-1]:=b end; |
b=5 a[3]=32 a[2]=5 |
b=5 a[2]=45 a[1]=5 |
|
b=32 a[3]=45 a[2]=32 |
|
|
end; |
|
|
|
|
|
|
end; |
|
|
|
|
|
|
Пример 10. Напишите программу замены в данном тексте слова1 на слово2, той же длины. Исполните составленную программу, используя метод моделирования исполнения программы компьютером в виде наглядных протоколов.
Решение. (Задача на вырезку и частичную замену). Пусть заданы строковой операнд strText (текст) и два слова: заменяемое слово Word1 (слово1) и заменяющее слово Word2 (слово2). Просматривая текст strText, начиная с первого символа (i = 1), вырезаем из текста strText последовательность из d символов, где d – длина Word1 (Word2), сравниваем вырезку со словом Word1. Если они равны, то осуществляем частичную замену, а именно, последовательность из d символов в тексте strText заменяем на слово Word2. Увеличиваем i на d и, начиная с полученного i, вырезаем из текста strText следующие d символов. Если вырезка из d символов текста strText не совпадает со словом Word1, то i увеличиваем на 1 и вырезаем из текста strText следующие d символов. Вырезку, сравнение и, если выполнено условие, замену проводим пока i не станет больше длин(текст)-d+1.
Программа в системе Кумир, где определена операция
частичной замены в тексте
алг замена (арг рез лит текст, арг лит слово1, слово2)
дано |литерный операнд текст
надо |в литерном операнде текст заменить слово1 на слово2
нач цел i,d
│ d:=длин(слово1) |находим длину слова1
│ i:=1 |организуем просмотр текста с первого символа
│ нц пока i<=длин(текст)-d+1
│ │ если текст[i:i+d-1]=слово1 | текст[i:i+d-1] – вырезка из текста
│ │ │|последовательности символов длины d и ее сравнение со словом1
│ │ │то текст[i:i+d-1]:=слово2 |частичная замена в тексте
│ │ │ |последовательности из d символов на слово2, если вырезанный
│ │ │ i:=i+d-1 | текст равен слову1, i увеличивается на d-1
│ │ все
│ │ i:=i+1 |номер следующего символа в тексте
│ кц
кон
Программа в системе Кумир, где не определена операция частичной замены в тексте
алг замена1 (арг лит текст, арг лит слово1, слово2, рез лит текст1)
дано |литерный операнд текст
надо |в литерном операнде текст заменить слово1 на слово2
нач цел i,d
│d:=длин(слово1) |находим длину слова1
│i:=1; текст1:="" |результат формируем в текст1,
│| сначало текст1 присвоим значение""
│нц пока i<=длин(текст)-d+1
││если текст[i:i+d-1]=слово1
│││то текст1 := текст1 + слово2 |если условие верно,
│││ | то текст1 и слово1 склеиваем, и увеличиваем i на d-1
│││ i:=i+d-1
│││иначе
│││ текст1:=текст1 + текст[i:i] |иначе текст1 склеиваем
│││ | с вырезкой из текст
││все
││i:=i+1 |номер следующего символа в тексте
│кц
кон
Исполнение составленной программы «замена» методом моделирования в виде наглядных протоколов дано в таблице 4.
|
11≤8(нет)
|
Таблица 4 |
5≤8(да) “за ”=“око”(нет)
i=5+1=6 |
8≤8(да) “око”=“око”(да) текст=“зуб за зуб” i=8+3-1=10
i=10+1=11 |
|
4≤8(да) “ за”=“око”(нет)
i=4+1=5 |
7≤8(да) “ ок”=“око”(нет)
i=7+1=8 |
|
текст=“око за око” слово1=“око” слово2=“зуб”
d=3 i=1 1≤8(да) “око”=“око”(да) текст=“зуб за око” i=1+3-1=3
i=3+1=4 |
6≤8(да) “а о”=“око”(нет)
i=6+1=7 |
|
алг замена (арг рез лит текст, арг лит слово1, слово2) дано надо нач цел i,d │ d:=длин(слово1) │ i:=1 │ нц пока i<=длин(текст)-d+1 │ │ если текст[i:i+d-1]=слово1 │ │ │то текст[i:i+d-1]:=слово2 │ │ │ i:=i+d-1 │ │ все │ │ i:=i+1 │ кц кон |
алг замена (арг рез лит текст, арг лит слово1, слово2) дано надо нач цел i,d │ d:=длин(слово1) │ i:=1 │ нц пока i<=длин(текст)-d+1 │ │ если текст[i:i+d-1]=слово1 │ │ │то текст[i:i+d-1]:=слово2 │ │ │ i:=i+d-1 │ │ все │ │ i:=i+1 │ кц кон |
|
i=3,34(да) strWord1== “р”+“ап”=“рап” |
|
Таблица 5 |
i=2,24(да) strWord1== “а”+“п”=“ап” |
i=5,54(нет)
вывод “арап” |
|
strWord=“пара” strWord1=“” i=1,14(да) strWord1== “п”+ “”=“п” |
i=4,44(да) strWord1= “а”+“рап”=“арап”
|
|
INPUT"Введите обращаемое слово";strWord strWord1 = "" FOR i = 1 TO LEN(strWord) strWord1=MID$(strWord,i,1)+strWord1
NEXT i PRINT strWord1 END |
INPUT"Введите обращаемое слово";strWord strWord1 = "" FOR i = 1 TO LEN(strWord) strWord1=MID$(strWord,i,1)+strWord1
NEXT i PRINT strWord1 END |
Пример 11. Напишите программу обращения слова. В результате исполнения алгоритма из слова «нас» должно получиться слово «сан», из слова «довереп» – слово «перевод». Исполните составленную программу, используя метод моделирования исполнения программы компьютером в виде наглядных протоколов для слова «пара».
Решение. Пусть strWord – данное слово, а strWord1 – получаемое слово, первоначально strWord1 – пустая строка. Выделяем из строки strWord последовательно, по одному символу (с первого до последнего). Склеиваем вырезанный символ с получаемой строкой strWord1 (strWord1:=”выделенный символ”+strWord1). Тогда первый выделенный символ из слова strWord будет последним символом в получаемом слове strWord1, второй выделенный символ из слова strWord – предпоследним символом в слове strWord1 и т. д.
QBasic
REM обращение слова
DIM strWord AS STRING, strWord1 AS STRING, intI AS INTEGER ′описание операндов
INPUT "Введите обращаемое слово"; strWord ′ввод strWord
strWord1 = "" ′обращенное слово сначала равно пустой строке
FOR intI = 1 TO LEN(strWord) ′организуем вырезку последовательно
′ всех символов строки strWord
strWord1 = MID$(strWord, intI, 1) + strWord1 ′склеиваем строку ′strWord1 с вырезанным символом строки strWord
NEXT intI
PRINT strWord1 ′вывод обращенной строки strWord1 на экран
END
Ручное исполнение программы, написанной на языке QBasic, приведено в таблице 5, с. 168.
Пример 12. Напишите программы ввода и вывода элементов множества SetA. Исполните составленные программы, используя метод моделирования исполнения программы компьютером в виде наглядных протоколов для множества [8, 6, 9].
Решение
Программы ввода и вывода элементов множества:
Program TaskSet; Uses Crt; Type TSet=set of 5..9; Var i, n: byte; SetA: TSet; next: 5..9; Begin ClrScr; {ввод элементов множества SetA} SetA:=[]; Write(‘Задайте количество элементов множества’); Readln(n); for i:=1 to n do begin Write(i,’ – элемент?’); Readln(next); SetA:=SetA+[next]; end; |
Program TaskSet1; Uses Crt; Type TSet=set of 5..9; Var i, n: byte; SetA: TSet; next: 5..9; sim:char; Begin ClrScr; {ввод элементов множества SetA} SetA:=[]; i:=1; Repeat Write(i,’ – элемент?’); Readln(next); i:=i+1; SetA:=SetA+[next]; Write(‘Вводить элемент множества д/н?’); Readln(sim) Until sim=’н’; |
{вывод элементов множества} for i:=5 to 9 do if i in SetA then Write(i:4); End. |
Ручное исполнение программ TaskSet и TaskSet1 дано в таблицах 6-8, с. 171.