Методическое и дидактическое обеспечение преподавания раздела «Алгоритмы и программы» в 5-11 кл. Исполнитель

Вид материалаРеферат

Содержание


К содержанию
CLS : ‘Звезда SCREEN
Билет, в которой встречаются почти все операторы работы с символьными переменными: MID$, RIGHT$, LEFT$, VAL, STR$. CLS
INPUT “Повторим 1/0”; Z IF
INPUT "Введите номер дня рождения"; n FOR
WHILE S < 50 d = d + 1 ‘Счётчик дней S = 2 * S + d ‘Сумма, подаренная в d-ый день рождения WEND
Вспомогательные алгоритмы. Метод пошаговой детализации
Declare function
Screen 12 for
CLS ‘Создание массива ввод с клавиатуры №1 INPUT
Randomize timer
DATA январь, февраль, март, апрель, май, июнь, июль, август, сентябрь … DIM
END Организуем поиск максимального и минимального элементов массива. CLS
Методы сортировки
CLS ‘Ручная сортировка выбором SCREEN
INPUT "Какой элемент переставляем"; L INPUT
К содержанию
Подобный материал:
1   2   3   4   5   6   7   8   9

Затем 1-2 урока посвящаем исполнителю Robot. Решаем очень простые задачи, но сразу настраиваемся на продолжение. Этот исполнитель поможет нам при подготовке к ЕГЭ. (Задание А-18)




Если бы в 8 классе было бы хотя бы 2 урока в неделю, то на этой теме можно было бы задержаться подольше. В ней огромный потенциал.

( К содержанию)

5. 9 класс

В 9 классе тема «Алгоритмы. Программы. Язык программирования QBASIC» начинается с повторения. Технология повторения обычно такая: сначала вспоминаем определения, операторы и на основании уже готовой программы (из тетради 8 класса)

1) линейные программы типа .

2) Рисунки c применением циклических конструкций (операторы графики LINE, CIRCLE, PSET, PAINT). При повторении этой темы к ранее изученным операторам добавляем оператор DRAW, который довольно легко усваивается и применяется учащимися. И у меня сложилось мнение, что этот оператор надо изучать раньше, в классе 7-8.

Для начала я даю первичную программу:

CLS : ‘Звезда

SCREEN 12 :

DRAW "BL100 BU50 P15,4 C4"

DRAW "R200 TA-144 R200 ta-288 R200"

DRAW "TA-72 R200 TA-216 R200"

END

После построения её на машинах работаем со справочником, в котором выясняем назначение всех букв, применяемых в операторе DRAW. Затем строим таблицу основных параметров в тетради. Далее строим самостоятельно такая фигуру:

Я даю только направления, а буквы и расшифровку букв дают дети.

D(Down) – вниз, R(Right) - вправо, U(Up – вверх), L (Left) – влево. Мнемоника здесь простая,

E - вправо-вверх, F - вправо-вниз, G - влево-вниз, H - влево-вверх, а здесь в алфавитном порядке, пропуская 4 буквы A, B, C, D (они уже использованы) - E, F, G, H. В результате этот материал усваивается достаточно прочно. Программы обычно получаются интересными. Кроме рисунков, строим буквы, цифры.

3) Для более качественного повторения символьных переменных мы строим программу Билет, в которой встречаются почти все операторы работы с символьными переменными: MID$, RIGHT$, LEFT$, VAL, STR$.

CLS ‘Билет

INPUT “Введите 4-значное число”; N

A = VAL(LEFT$(STR$(N),1))

B = VAL(MID$(STR$(N),2,1))

C = VAL(MID$(STR$(N),3,1))

A = VAL(RIGHT$(STR$(N),1))

IF A + B + C + D THEN ? ”Билет счастливый“ ELSE? ”Билет несчастливый“

Следующую часть программы учащиеся пишут уже сами:

INPUT “Повторим 1/0”; Z

IF Z = 1 THEN 10

? “Спасибо за работу!”

END

Далее остаётся только менять условия для самостоятельной работы. Например, числа 6-значные, 8-значные; проверять суммы чётных и нечётных цифр и т.п.

Очень коротко повторяем логические переменные. Решаем некоторые логические задачи, тем самым знакомимся с основными видами нечисленных алгоритмов.

Одна из задач из 10 класса, которая может быть решена в 9-ом:

Дано логическое выражение (по логической схеме двоичного сумматора):

S = (А ИЛИ В) И (НЕ(А И В)).

Формализуем выражение для исполнителя QBasic:

S = (А OR В) AND (NOTAND В)).

Строим программу Сумматор:

CLS ‘Сумматор

?” A | B | S”

?”--------------“

FOR A = 0 TO 1

FOR B = 0 TO 1

S = (А OR В) AND (NOTAND В))

? A; “| “; B; “| “; S

NEXT B

NEXT A

?”--------------“

В десятом классе будем строить логические схемы и вновь вернёмся к этой программе, тем самым сократим время на построение.

Далее остаётся только менять условия. В девятом классе не все могут сознательно придумать логическое выражение, поэтому учителю нужно заранее подготовить необходимое количество выражений.

Тема «Рекуррентные отношения» начинается с повторения задачи об улитке (8 класс). Задач на рекурсию существует множество. Я всегда решаю задачу про Незнайку и про дядюшку, т.к. они достаточно сложны и полезны для построения программ решения последовательностей в 11 классе:

Ежедневно Незнайка учит половину от суммы выученных за два предыдущих дня иностранных слов и ещё два слова. Знайка считает, что силы Незнайки иссякнут, когда нужно будет выучить 50 слов в день. Написать программу, определяющую, через сколько дней иссякнут силы у Незнайки, если в первые два дня он выучил по одному слову.

Рекурсивная формула - C = (A + B)/2 + 2 обязательно обсуждается.

CLS ‘Незнайка

A = 1 : B : =1 ‘Число слов, выученных в первый (А) и второй (В) день

C = 2 ‘Число слов, выученных за первые два дня

N = 3 ‘Начинаем с 3 дня

WHILE C < 50

C = (A + B)/2 + 2 ‘Количество слов, выученных за N-ый день

B = C : A = B ‘Обмен данными для следующего цикла

N = N + 1 ‘Счётчик количества дней

WEND

? “Силы Незнайки иссякнут через “; N; “дней.”

? “Незнайка выучил ”; C; “слов за”; N; ”дней.”

Мой богатый дядюшка подарил мне один доллар в мой первый день рождения. В каждый следующий день рождения он удваивал свой подарок и прибавлял к нему несколько долларов, сколько лет мне исполнилось. Написать программу, подсчитывающую общую сумму денег, подаренных к N-му дню рождения и указывающую, к какому дню рождения сумма подарка превысит 100$.

Рекурсивная формула - S = S + 2 * S + I обязательно обсуждается.

CLS 'Дядюшка

S = 1 ‘Сумма на 1 день

INPUT "Введите номер дня рождения"; n

FOR i = 2 TO n ‘Начинаем со второго дня

S = S + 2 * S + i ‘Общая сумма подарков на i-ый день рождения

NEXT i

? "На"; n; "день рождения сумма подарка ="; S

Вторая часть задачи:

S = 1 : d = 1

WHILE S < 50

d = d + 1 ‘Счётчик дней

S = 2 * S + d ‘Сумма, подаренная в d-ый день рождения

WEND

? "На"; d; "день рождения сумма подарка превысит $50"

Следующая тема “ Вспомогательные алгоритмы. Метод пошаговой детализации” начинаем с повторения понятие подпрограммы. Структурное программирование – одну из самых перспективных тем в программировании я начинаю с задачи построения букв и цифр

При решении этих задач можно показать метод нисходящего программирования, познакомиться с формальными и фактическими параметрами.

Вводим операторы DECLARE FUNCTION, SUB, CALL.

Программа Буква П

DECLARE SUB gorizont () ‘Объявление процедуры gorizont

DECLARE SUB dvevertikal () ‘Объявление процедуры dvevertikal

SCREEN 12

FOR I = 1 TO 2

CALL gorizont ‘Вызов процедуры gorizont

NEXT I

FOR I = 1 TO 18

CALL dvevertikal ‘Вызов процедуры dvevertikal

NEXT I

END

SUB dvevertikal ‘Процедура два вертикальных столбика

? TAB(25); "***"; TAB(52); "***"

END SUB

SUB gorizont ‘Процедура горизонтальная черта

? TAB(25); STRING$(30, "*")

END SUB

На примере построения этих программ легко показать и научить применять отладку программ.

Далее переходим к теме «Массивы». Даём определение массива, выясняем правила обращения к нему. Составление простейших алгоритмов и построение программ работы с массивами невозможно себе представить без применения циклических программ. Повторяем все циклические операторы (“До”, “Пока”, “С параметром”), строим 1-2 блок-схемы, выполняем в тетради сортировку, одну из самых типичных программ. Далее переходим к созданию массивов тремя способами:

CLS ‘Создание массива ввод с клавиатуры №1

INPUT “Сколько будет элементов”; N

DIM A(N) ‘Объявление массива на N элементов

FOR I = 1 TO N

INPUT”Введите”; I; ”-ый элемент - ”; A(I) ‘Ввод массива поэлементно

NEXT I

FOR I = 1 TO N

?”A(”; I; ”)= ”; A(I) ‘Вывод массива на экран

NEXT I

END

CLS ‘Создание массива случайным образом №2

INPUT “Сколько будет элементов”; N

DIM A(N) ‘Объявление массива на N элементов

RANDOMIZE TIMER ‘Включение генератора случайных чисел

FOR I = 1 TO N

A(I) = INT(RND*100 ‘Заполнение массива случайными двузначными (*100) целыми (INT) числами

NEXT I

… ‘Вывод массива на экран

END

CLS ‘Создание массива из «внутреннего файла» №3

DATA январь, февраль, март, апрель, май, июнь, июль, август, сентябрь …

DIM A$(12) ‘Объявление массива названий месяцев на 12 элементов

FOR I = 1 TO N

READ A$(I) ‘Чтение элементов массива из «файла» DATA

NEXT I

… ‘Вывод массива на экран

END

Далее вычисляем сумму и среднее арифметическое:

CLS ‘Сумма (Для произведения нужно быть осторожно с памятью)

… ‘Создание числового массива любым способом

S = 0 ‘Для произведения P=1

FOR I = 1 TO N

S = S + A(I) ‘Суммирование элементов массива ‘P=P*1 - произведение

NEXT I

? “Сумма = ”; S ‘Вывод суммы на экран

? “Среднее арифметическое =”; S/N ‘Нахождение и вывод на экран среднего

END

Организуем поиск максимального и минимального элементов массива.

CLS ‘ Поиск MAX (MIN) К - адрес

… ‘Создание числового массива любым способом

MAX = A(1) : K = 1 ‘Для начала определяем, что 1-ый элемент - МАХ

FOR I = 2 TO N ‘Начинаем сравнение со второго

IF MAX <= A(I) THEN MAX = A(I) : K=I ‘Сравнение и смена МАХ и К

NEXT I

? “Максимальный элемент массива -”; MAX; “находится по адресу –“; K

END

Задачу нахождения MIN учащиеся решают самостоятельно. Догадаться легко: нужно изменить знак «меньше» на знак «больше» и заменить MAX на MIN.

Поиск в массиве (чисел, символов) осуществляем с помощью программ:

CLS ‘ Поиск символа

… ‘Создание строкового массива любым способом

INPUT “Что ищем”; B$ : K = 0 ‘Определяем искомый элемент и обнуляем адрес

FOR I = 1 TO N ‘Начинаем поиск с 1-го

IF B$ = A$(I) THEN ? “Нашли ”; B$; “по адресу -”; K ‘Поиск и вывод на экран

NEXT I

IF K=0 THEN ? “Вашего “; B$; “в этом массиве нет! Поищите в другом месте.»

END

Далее знакомимся с методами сортировки (см. Методы сортировки) в массиве (одномерном). Для демонстрации одного из способов сортировки я придумал программу SORTRUSH.BAS реализующую метод сортировки выбором

CLS ‘Ручная сортировка выбором

SCREEN 8 : COLOR 2

INPUT "Сколько будет элементов"; N : DIM A$(N)

?"Вводите элементы массива по одному:"

FOR I = 1 TO N : INPUT A$(I) : NEXT

GOSUB 100 : PRINT "Начинаем сортировку"

40 INPUT "Какой элемент убираем в запасную ячейку"; K : R$ = A$(K)

50 INPUT "Какой элемент переставляем"; L

INPUT "Куда"; M : A$(M) = A$(L)

GOSUB 100

INPUT "Продолжаем сортировку д/н"; D$

IF D$ = "D" OR D$ = "d" OR D$ = "Д" OR D$ = "д" THEN 50

INPUT "Куда ставим элемент из запасной ячейки"; P

A$(P) = R$ : GOSUB 100

INPUT "Будем ещё сортировать д/н"; Z$

IF Z$ = "D" OR Z$ = "d" OR Z$ = "Д" OR Z$ = "д" THEN 40 ELSE END

100 FOR I = 1 TO N : ? "A$("; I; ")="; A$(I) : NEXT : RETURN

Программу, конечно же, можно модифицировать, даже нужно, но для ручной работы и для демонстрации сортировки, а, следовательно, лучшего понимания процесса этого достаточно. При работе с этой программой, на мой взгляд, необходимо вести протокол экрана (т.е. фиксировать в тетради все изменения в массиве).

( К содержанию)

II. Методическое и дидактическое обеспечение преподавания раздела «Алгоритмы и программы» в 10-11 кл.

6. 10 класс

Программирование на языке программирования TurboPascal

В 10 классе мы переходим к изучению языка Pascal. После того, как достаточно глубоко погрузились в язык QBasic, нелегко начинать изучать новый язык. Но после некоторого количества уроков и достаточно назойливого моего давления на то, что язык Pascal – это путь в будущее, это ключ к информатике ВУЗовской, ребята начинают относиться к этому разделу информатики более серьёзно, а к концу 10 класса высказываются мнения, что зря мы не начали этот язык изучать раньше. Видимо, в будущем так и будем делать, а пока день сегодняшний. Итак – Pascal.