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

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

Содержание


Qbasic, Visual Basic
I. Методическое и дидактическое обеспечение
Простейшие алгоритмы и программы
Color 15 : print
К содержанию
Алгоритмы и исполнители
Второй раз
Then print
C Вариант 2 позволяет переходить к циклам CLS
Циклы с предусловием
Screen 12 : rem
WHILE a$ = “” LINE
ПОКА попробовать вложить развилку, в которой условием будет значение какой-нибудь строковой переменной, присваиваемое функцией I
К содержанию
Программы обработки строковых переменных
Mid$(a$, 3, 5) 'форма  print
Месяц: cls
IF P$ = “abcd” THEN PRINT
SCREEN 12 ‘Звёзды 10 INPUT
INPUT ”Введите строку»; Stroka$ L = LEN
...
3   4   5   6   7   8   9

Язык Паскаль для начального обучения программированию в V-VII, на мой взгляд, не годится, так как в нем сложно работать с графикой (кроме, разумеется, встроенного в PascalABC исполнителя «Чертежник»), а начинать знакомить с таким понятием, как «цикл», стоит именно с графики. Это ярко, это наглядно, это более близко и понятно детям. В VIII-IX классах мы знакомимся со всеми видами алгоритмов (теми, которые можно реализовать в «Чертёжнике»). В X-XI классах (и особенно в профильных) язык Pascal мы изучаем практически в полном объёме (конечно же, в разумных пределах).


Вернемся к критериям выбора языка. По простоте написания несложных программ на начальной стадии стоит выделить язык Basic и как вариант Visual Basic c выводом информации только на форму. Этот язык позволяет учащимся без труда ввести программу, сразу её выполнить и при необходимости исправить.

Все изучаемые нами языки (Qbasic, Pascal) обучают структурному программированию. Для структурированной программы характерны более высокая вероятность правильной работы и большая простота изменения и расширения, чем для программы, не имеющей модульной структуры. Структурированную программу легко прочесть и понять. Если считать, что в этой части рассматриваемые языки равны, то для перехода к изучению других языков программирования, на мой взгляд, больше готовит язык Бейсик. Он близок к такому классическому структурированному языку, как Паскаль. В Бейсике и Паскале практически совпадают конструкции ветвления, цикла; при работе с графикой в обоих языках используется система прямоугольных координат, но в Паскале работа с графикой гораздо сложнее (из-за огромного количества команд и операторов). В этих языках используются одни те же англоязычные ключевые слова.

Дети, изучившие язык Бейсик, легко осваивают другие языки программирования. Так, из своего многолетнего опыта могу сказать, что на факультативных занятиях в VII-VIII классах дети, изучавшие Бейсик в V-VII классах, без каких-либо проблем осваивают и Паскаль.

Мне было интересно узнать на конференции в Красноярской академии цветных металлов и золота, что большинство студентов четвертого курса, разрабатывая программы к своим курсовым работам, использовали язык Бейсик, хотя в академии на первых курсах им преподавали Паскаль. Это говорит о том, что возможностей языка Бейсик достаточно для решения учебных задач в школе и многих задач, рассматриваемых в институтах, а также, что он легко не только осваивается, но и вспоминается. Ведь всем известно, что любой язык, в том числе и язык программирования, быстро забывается, если им не пользуешься. При подготовке к ЕГЭ мои ученики очень часто обращались к решению задач на языке Basic. Хотя последний год показал, что после достаточно плотного изучения языка Pascal в профильном классе, учащиеся используют его гораздо чаще.

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

!!! Сегодня в связи с массовым переходом на ОС Linux возникает вопрос адаптирования систем программирования к новой операционной системе.

Выводы

  1. Для начального обучения программированию в 5-9 классах я выбрал язык Qbasic, Visual Basic (упрощённый вывод на форму). Такой подход закладывает лучшую базу для изучения в дальнейшем других языков программирования.
  2. Язык Pascal мы изучаем в школе в 8, 9 классах (только исполнитель «Чертёжник») и в 10-11 на уроках.
  3. Язык HTML в обязательном порядке (4 часа) в 9 и 11 классе и факультативно.
  4. Язык " onclick="return false"> только выборочно при построении личных страничек к школьному сайту.
  5. Язык высокого уровня Delphi в 11 классе в профильном классе и на программировании в старших классах1.

I. Методическое и дидактическое обеспечение

преподавания раздела «Алгоритмы и программы» в 5-9 кл.

В 5-6 классах информатика изучается пропедевтически, и, поэтому, здесь есть своя специфика преподавания этого раздела.

1. 5 класс

В 5 классе знакомство с этим разделом начинается темой « Простейшие алгоритмы и программы» (5 часов). Мы начинаем создавать линейные алгоритмы, выбирая сначала текстовый способ записи, и первые алгоритмы сразу же записываем с помощью блок-схем. Алгоритмы типа «Как приготовить чай», «Как почистить зубы», «Заварка кофе». Дети (это творческое домашнее задание) приносят на урок очень интересные алгоритмы. Мы обсуждаем инструкции, обращая внимание на то, что все глаголы должны быть в повелительном наклонении.

Далее у некоторых детей проверяем правильность записи в текстовой и графической формах. Знакомимся с исполнителем «Кукарача», у которого есть свой набор команд (СКИ вводим неявно). Сначала работаем по готовому рисунку, а потом ученики придумывают свою картинку.

Затем на базе готовых блок-схем переходим к созданию первых линейных программам. Изучаем, записываем в конец тетради, где находится справочник, первые операторы языка Qbasic – это CLS, REM, PRINT, END. Затем на всех следующих уроках мы вспоминаем эти операторы, готовимся к диктанту по операторам. На следующем уроке вводим оператор COLOR и проводим практическую работу «Какой это цвет»:

CLS : REM Цвет

COLOR 1 : PRINT “Это – синий цвет”

COLOR 2 : PRINT “Это – зелёный цвет”



(дети обычно с интересом самостоятельно пишут дальше, выяснив у меня только диапазон)



COLOR 15 : PRINT “Это – белый цвет”

END

Потом вставляем (заодно изучаем методы копирования и вставки в оболочке) строчку для чёрного цвета: я пишу COLOR 0 на доске, а дети почти сразу догадываются, что 0 - это чёрный цвет.

После ввода оператора цвета переходим к следующему этапу - знакомству с оператором LOCATE для создания более красивых текстов. Здесь я предлагаю детям создать свою собственную заставку к будущим программам (пока только текстовую её часть). Далее проводим самостоятельную работу «Поздравление», обычно эта тема изучается в начале или в середине апреля, и ребята придумывают интересные поздравления с днём Космонавтики, 1 Мая, днём Победы, с наступающими каникулами и т.п.

После анализа С/Р добавляем к изученным операторы графики SCREEN , LINE, CIRCLE. Сначала рисуем маленький дом, потом добавляем графику к заставке. Получается очень интересная творческая работа.

Далее, если остаётся время, то мы знакомимся с функцией CHR$. Кодируем текстовую информацию, сразу создавая программы. Единственное ограничение в том, что используем мы только русские буквы, т.к. времени на эту тему уже не остаётся. Но чаще всего приходится её переносить на 6 класс.

CLS : REM Письмо

COLOR 15 : PRINT CHR$(…) CHR$(…) CHR$(…) CHR$(…)



END

Заканчиваем тему самостоятельной работой «Кодированное письмо». Дети пишут очень интересные письма. Такую работу я провожу и в 6-х и в 7-х классах. Интересно читать о том, какой предмет любимый, кто мой лучший друг и т.п.

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

2. 6 класс

В 6 классе тема «Алгоритмы и программы» в общем курсе встречается 3 раза (всего 15! часов). Первый раз – это тема « Алгоритмы и исполнители» 6 часов. Она начинается с повторения линейных алгоритмов и программ (все 9 операторов и одна функция). Прямо во время повторения вводим оператор DRAW и функцию CHR$ распространяем на цифры и латинские буквы. Ребята снова возвращаются к своей заставке (программа «Заставка» 5 класс) и вносят туда графику при помощи DRAW. Этот оператор удобен для рисования простых больших букв и замысловатых орнаментов. Далее каждый работает со своей программой «Кодированное письмо» и вносит в неё дополнения: а) решаем арифметический пример типа 5*8=40 и б) фразу из 3-5 слов на изучаемом иностранном языке.

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

После этого легко вводится понятие программы, как набора инструкций, т.е. перечня команд, входящих в СКИ. Приводим примеры программ 5-го класса и повторения. Здесь очень легко просматривается соотношение между алгоритмом и программой. Объясняем семантические, синтаксические и логические ошибки в программах. Понятие отладки вводим на конкретных ошибках, сделанных учащимися в конкретных программах.

Второй раз возвращаемся к разделу в теме «Ветвление в алгоритмах, разветвляющиеся программы» 4 часа. После введения понятия ветвления, выясняем, что проверка условия есть допустимое действие исполнителя. На уроке и дома дети придумывают алгоритм, содержащий условия для простейшего исполнителя. Затем уже по накатанной схеме знакомимся с графическим способом записи алгоритма – блок-схемой. Используя придуманные учащимися примеры алгоритмов, пытаемся уложить словесную запись в рамки блок-схемы. Обговариваем различные формы ветвления. Далее знакомимся с командами ветвления, входящими в СКИ «Кукарачи» и составляем для этого исполнителя алгоритмы, требующих использования конструкции ветвления.

Следующий этап - построение программ в Qbasic. Начинаем с программы «Пароль», в которой требуется ввести значение переменной, заодно обговариваем, что же это такое – переменная. Дети легко уясняют, что значение переменной, допустим, А будет меняться при каждом запуске программы и на каждом компьютере. Называем эту тип этой переменных (числовая, целая). Для ввода информации в компьютер используем новый оператор INPUT, записывая, и сам оператор, и его правила его записи (синтаксис) в конец тетради. По ходу записи переводим слова ЕСЛИ, ТО, ИНАЧЕ на язык исполнителя IF, THEN, ELSE.

CLS : REM ВЕТВЬ1

INPUT “Введите число”; А

IF A = 4 THEN PRINT “Здравствуй, Ваня!” ELSE PRINT “В доступе отказано!”

END

На следующем уроке модифицируем эту программу, вводя в неё строковую переменную.

CLS : REM ВЕТВЬ2

INPUT “Введите своё имя”; А$

IF A$ = “МИША” THEN PRINT “Здравствуй, ”; А$ ELSE PRINT “В доступе отказано!”:END

В этой программе можно использовать такое продолжение с неполной формой ветвления:

INPUT “ЗДРАВСТВУЙ или ПРИВЕТ”; B$

IF B$ = “ЗДРАВСТВУЙ” THEN PRINT “Молодец, воспитанный мальчик, ”; А$

END

После этой программы многие учащиеся начинают придумывать продолжения диалога. А это хороший залог дальнейших успехов в программировании.

Далее вспоминаем графические операторы SCREEN, LINE, CIRCLE и добавляем новый PAINT. Для закрепления строим программу «Выбор», в которой ребёнок должен выбрать то, что он хочет увидеть квадрат или круг (используем безусловный переход – GOTO).

SCREEN 12

CLS : REM ВЫБОР

INPUT “Напиши что ты хочешь увидеть КВАДРАТ или КРУГ”; A$

IF A$ = “ КВАДРАТ” THEN 10 ELSE 20

10 LINE(100,100)-(200,200),15,BF

GOTO END ‘для того, чтобы не нарисовалась окружность

20 CIRCLE (320,240),100,2 : PAINT (320,240),4,2

END

Следующие уроки посвящаем программам обработки числовых переменных. Сравнение вводим как действие над данными наряду с умножением сложением и т.п. Таким образом, понимаем, что отношение выступает в качестве условия.

Строим программы поиска большего из двух, трёх и т.д. (Би2, Би3, Би4, …).

CLS : REM Би2

INPUT “Введите числа A, B”; A, B

IF A>B THEN PRINT“Большее из двух-”; А ELSE PRINT“Большее из двух-”; В

END

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

Протокол №1

A

B

A > B

Да или Нет

Экран

5

6

5 > 6

-

Большее из двух – 6

7

5

6 > 5

+

Большее из двух – 7

0

0

0 > 0

-

Большее из двух – 0











Присваивание значения 0 обеим переменных помогает легко объяснить необходимость защиты от «дурака» и понимания сложных условий, например, «не больше» - “<=” и т.д.

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

C
Вариант 2 позволяет переходить к циклам

CLS : REM Би3

INPUT“Введите числа a,b,с”; a,b,с : max=a

IF max THEN max = b

IF max THEN
max = c

PRINT “Большее из трёх - ”; max

END

LS
: REM Би3

INPUT “Введите числа A, B, С”; A, B, С

IF A>B THEN MAX = А ELSE MAX = В

IF MAX THEN MAX = C

PRINT “Большее из трёх - ”; MAX

END


Протокол №2

A

B

С

MAX

A > B

+/-

MAX < C

+/-

Экран

5

0

6

5

5 > 0

+

5 < 6

+

Большее из трёх – 6

7

4

15

7

7 > 4

+

7 < 15

+

Большее из трёх – 15

5

9

0

9

5 > 9

-

9 < 0

-

Большее из трёх – 9

0

0

0

0

0 > 0

-

0 < 0

-

Большее из трёх – 0























При таком подходе вся проблема построения программ поиска Би4, Би5 и т.д. становится чисто технической.

В третий раз, продолжая изучать раздел, связанный с алгоритмами и программами, знакомимся с циклами в теме « Циклы с предусловием» 5 часов.

Вводная беседа начинается со знакомства с игрой Баше. Детей поначалу шокирует умение преподавателя выигрывать, но потом, после построения алгоритма выигрыша, всё становится на свои места. Дети, заинтригованные таким началом, начинают активно конструировать свои алгоритмы выигрыша для любого количество предметов. Так мы знакомимся с конструкциями цикла «Пока …», формой записи этой конструкции. Далее идёт плотная работа по составлению алгоритмов, требующих использования цикла с предусловием.

Когда приходит время строить программы, то остаётся только перевести на язык Qbasic все инструкции, используемые для составления алгоритмов. Знакомимся с операторами While ... Wend и функцией INKEY$, которую мы применим для прерывания циклов. Самая первая программа, которую мы строим – это программа «Движение». Первым делом я выясняю то, каким будет наш объект (квадрат, прямоугольник, окружность, круг и т.п.). Далее откуда и куда он будет двигаться. Начинаем строить программу схеме, например см. рисунок.

SCREEN 12 : REM Движение квадрата

CLS : x = 10 : y = 10 : a$ = “”

LINE (x, y) – (x +10, y + 10), 4, BF

PRINT “Для остановки нажмите что-нибудь”

WHILE a$ = “”

LINE (x, y) – (x +10, y + 10), 4, BF ‘Так выделяем тело цикла

A$ = INKEY$

x = x + 5 : y = y + 5

SLEEP 1

LINE (x, y) – (x +10, y + 10), 0, BF

WEND

LINE (x, y) – (x +10, y + 10), 4, BF

END

Сначала все строим одну и ту же программу. Потом, после того, как программа заработала, учащиеся строят свою программу по образцу, но только уже по моим указаниям (меняем форму объекта, направление).

Далее возникает естественный вопрос, а чего это объект наш движется медленно? И тут я ввожу понятие задержки и сразу в двух вариантах (выбор зависит от ситуации) и вставляем одну из этих строчек перед оператором WEND:
    1. неявный ввод новых операторов цикла с параметром:

FOR i = 1 TO 10000 : NEXT i
    1. С помощью уже знакомых операторов цикла ПОКА:

i = 1 : WHILE i <> 10000 : i = i + 1 : WEND

И естественным образом получаем вложенный цикл.

Если остаётся время, то можно в этот цикл ПОКА попробовать вложить развилку, в которой условием будет значение какой-нибудь строковой переменной, присваиваемое функцией INKEY$. Можно останавливать движение объекта нажатием определённой клавиши, например,

B$ = INKEY$ : IF B$ = “S” THEN SLEEP

На этом заканчивается первый, пропедевтический этап формирования умений и навыков программирования в 5-6 классах.

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

3. 7 класс

Основная школа начинается в 7 классе в разделе «Алгоритмы. Программы» 9 часов. Сначала повторяем понятие алгоритма, свойства алгоритма, способы записи алгоритма (словесный, блок-схема, программа), виды алгоритмов, работу с блок-схемой. Снова возвращаемся к исполнителям: человеку, автомату, роботу, компьютеру. Уточняем систему команд исполнителей. Далее повторяется язык программирования Qbasic: основные операторы (5-6 кл.), ввод и вывод данных.

Во введении ещё раз обращаемся к значению языков программирования для управления исполнителями и, в частности, языка Qbasic. Отмечаем, что этот язык более свободный по сравнению с языком Pascal. Отсюда – более свободная структура. Но, отмечаем, в старших классах перейдём к более серьёзной версии и там уже структура будет определена строго.

Вводим понятие алфавита (упорядоченный фиксированный набор знаков для образования имён), имени, оператора. Знакомимся со встроенными функциями sin(x), cos(x) (основная часть – самостоятельная работа со встроенным же справочником). Понятие операции выводим на новый уровень, показывая многоступенчатость самой элементарной арифметической операции на основании необходимости применения двоичной арифметики (триггер, сумматор, сдвиг и т.п.). Знакомимся с управляющими элементами. Вводим понятие константы, идентификаторы (сюда входит представление о переменной как: 1) имени ячейки - неявное задание адреса и 2) содержимого ячейки. Уясняем понятие программы. Учимся объявлять объекты программы. Далее разбираемся в том, как работает оператор присваивания.

На уроках (и, если есть, на практических занятиях) строим простейшие линейные программы с применением графики Qbasic:
  1. «Заставка», в которой учащиеся строят собственную заставку к программам, применяя операторы CIRCLE, PAINT, LINE, PSET, проявляя всю свою фантазию. Иногда получается довольно интересно.
  2. «Дом» - в этом задании мы стараемся построить как можно большее количество разнообразных домов, домов в перспективе, целых улиц, применяя оператор повторения (FOR TO STEP … NEXT), предварительно познакомившись с его синтаксисом и применением.
  3. «Музыка». С помощью оператора PLAY строим простейшие линейные музыкальные программы. В основном работаем по нотам, предлагаемым мною, но всегда есть часть «продвинутых» в музыкальном отношении детей, которые всегда пишут программы по своим нотам и, как правило, их мелодии более сложные и интересные. У остальных это вызывает хорошую зависть, и они просят скопировать наиболее удавшиеся мелодии в свои каталоги. Лучшие мы помещаем в общий для всех каталог MUSIC и копируем его на все машины по сети. Некоторые учащиеся после этих уроков пытаются овладеть нотной грамотой (хотя бы на начальном уровне).
  4. Программы обработки строковых переменных требуют ввода новых операторов и функций: LEN, MID$, RIGHT$, LEFT$. После изучения строим программу «Склейка», в которой дети, используя вырезанные фрагменты выбранного ими слова, получают новые слова.

CLS : 'Склейка

A$ = "ИНФОРМАТИКА"

PRINT A$

B$ = MID$(A$, 3, 5) 'ФОРМА 

PRINT B$

C$ = MID$(A$, 6, 3) 'МАТ

PRINT C$

D$ = RIGHT$(A$, 3) 'ИКА 

PRINT D$

E$ = C$ + "Е" + C$ + D$ 'МАТЕМАТИКА

PRINT E$

Эта работа всегда вызывает интерес у ребят. А для учителя это хороший способ проверить грамотность, кругозор, начитанность, интеллект, в конце концов!

Затем, после выполнения зачётной работы, переходим к разветвляющимся программам. Изучаем оператор развилки IF … THEN … ELSE. Знакомимся с его синтаксисом и применением в полной и неполной форме. В программе «Выбор» показываем как можно: 1) осуществлять поиск и 2) подсчёт нужной информации, 3) заменять одни слова другими, числа - числительными и т.п.

1. Программа «Год», в ней неполную форму ветвления применяем трижды:
    1. для организации поиска названия месяца по его номеру;
    2. для организации повторения работы с программой без выхода из неё;
    3. для защиты от «дурака», т.е. от некорректных номеров.

Программа МЕСЯЦ:

CLS : ‘названия месяцев в году

10 INPUT ”Введите номер месяца”; m

IF m > 12 THEN PRINT “Вы ошиблись!” : GOTO 10

IF m < 1 THEN PRINT “Вы ошиблись!” : GOTO 10

IF m = 1 THEN PRINT “январь” ‘Неполная форма ветвления

IF m = 2 THEN PRINT “февраль”

… … … …

IF m = 12 THEN PRINT “декабрь”

INPUT ”Для повторения введите 1, иначе 0»”; a

IF a = 1 THEN 10

PRINT “Спасибо за работу! До свидания!”

END

2. Программа «Пароль», в ней применяем полную форму ветвления:

CLS : ‘Пароль

10 INPUT ”Введите пароль”; P$

IF P$ = “abcd” THEN PRINT “Привет, хозяин” ELSE BEEP : ? “Тревога! Несанкционированный доступ!” : END

COLOR 2 : PRINT ”Начинаем работу”

PLAY “O1 L4 CDEFGAB O2 L2 C P2 C O1 BAGFEDC P2 C”

INPUT ”Для повторения введите 1, иначе 0»”; a

IF a = 1 THEN 10

PRINT “Спасибо за работу! До свидания!”

END

Каждый ребёнок пишет свою программу. Задача учителя – проследить, чтобы вариантов было как можно больше. В ходе работы выясняем, какие ошибки могут встретиться в программе: семантические, синтаксические и логические. Вводим понятие отладки.

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

1. «Звёзды» - строим программу, в которой применяем операторы RANDOMIZE и RND для изображения «звёздного неба»

SCREEN 12 ‘Звёзды

10 INPUT ”Сколько будет звёзд»; N

RANDOMIZE

FOR I = 1 to N

X = RND*640 : Y = RND*480 ‘640 х 480 - размеры 12 экрана по X и Y

C = RND * 16 ‘Атрибуты экрана, 16 цветов

PSET (X, Y), С

NEXT I

INPUT ”Для повторения введите 1, иначе 0»”; a

IF a = 1 THEN 10

PRINT “Спасибо за работу! До свидания!”

END

2. «Буквы». Строим буквы с применением символов (30 позиций * 20 строк):

SCREEN 12 ‘Буква П

10 INPUT ”Введите символ»; S$

FOR I = 1 to 2 : PRINT TAB(25) STRING$(30,S$) : NEXT I

FOR I = 1 to 18 : PRINT TAB(25) S$; S$; S$ TAB(52) S$; S$; S$; : NEXT I

INPUT ”Для повторения введите 1, иначе 0»”; a

IF a = 1 THEN 10

PRINT “Спасибо за работу! До свидания!”

END

2. «Надписи». В этой программе снова обращаемся к заставке и выводим надписи по буквам:

10 INPUT ”Введите строку»; Stroka$

L = LEN (Stroka$):

FOR i = 1 to L :

PRINT MID$( Stroka$, i, 1)

NEXT I



END

Далее модифицируем эту программу, пока есть время, а его никогда не хватает.

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

4. 8 класс

В 8 классе в первый раз с программированием встречаемся при углублении понятия «переменная». Здесь самое главное помочь детям разобраться с типами переменных и работой оператора присваивания. Дело в том, что для ячейки памяти всё равно какой тип переменной будет в неё записан, но для процессора это играет решающую роль. Выбор операций, производимых над переменной, полностью зависит от её типа. (Строковые, к примеру, нельзя умножать и т.п.).

Затем мы строим линейную вычислительную программу для решения уравнения типа . Задачу решаем в два этапа. На первом работаем с листочком бумаги, где расписываем очень подробно операции, необходимые для решения уравнения:
  1. А = w*w*w; 2) B = r*r*r*r*r; 3) A = A+B; 4) A = SQR(A) – числитель.
  1. B = s*s*s; 6) C = f*f*f*f*f*f*f; 7) B = B + C; -знаменатель.

8) y = A / B.

На втором этапе строим программу для машины, которая уже использует стандартные функции языка.

CLS ‘Уравнение

INPUT “Введите W, R, S, F”; W, R, S, F

Y = SQR(W3 + R5)/(S4 + F7)

PRINT “Y=”; Y

END

Уравнения такого типа могут быть очень сложными. Можно посоветовать использовать эту тему учителям физики для расчётов при решении задач, например, по фотоэффекту, электростатических задач, где необходимо использовать представление чисел с фиксированной и плавающей запятой. Например, заряд электрона 9,1 * 10-19 Кл в программе мы представляем в виде 9.1Е-19 (экспоненциальная форма).

Второй раз в 8 классе после быстрого повторения тем «Алгоритмы и Программы», оператора DRAW, разветвляющиеся программ (операторы IF THEN ELSE), приступаем к введению понятия «Итерация». Делать это удобнее всего с помощью циклов с предусловием ПОКА (операторы WHILE, WEND).

Количество повторений цикла иногда предсказать довольно сложно, нужно с карандашом и бумажкой просчитывать все параметры цикла. Делаем это с помощью итерационных циклов, заодно вводим понятие «Операции отношения».

Например, знаменитая задача про улитку, вползающую на столб днём на Х см, а ночью сползающую на Y см. Необходимо вычислить количество дней, необходимых улитке для покорения вершины, при высоте столба L.

Решаем сначала качественно, т.е. строим словесную модель и выясняем, что задача может быть решена только при условии X > Y. Для оживления задачи вводим ещё один параметр – длина жизни улитки. Ну, и к общему удовольствию считаем его несущественным.

Один из вариантов решения:

CLS ‘Улитка

INPUT”Введите значения X, Y, L”; X, Y, L

DAY = 0 : H = 0

WHILE H < L

DAY = DAY +1

H = H + X – Y

WEND

PRINT “Улитка достигнет вершины за”; DAY; “дней”

END

Далее решаем несколько подобных задач.

Следующей темой мы изучаем « Логические (булевы) операции» и, соответственно, - «Знаки булевых операций (AND, OR, NOT)». Знакомимся с основными видами нечисленных алгоритмов. Эта тема всегда идёт хорошо, если с первого урока начинаем строить таблицы истинности. Вот, например, задача:

Царевна Несмеяна к своим женихам предъявляла такие требования: жених должен быть умный и красивый. Каков процент женихов будет удовлетворять условию, если применить конъюнктивную функцию (И) и дизъюнктивную (ИЛИ).

Строим конъюнктивную функцию. А – умный, В – красивый, следовательно, функция примет вид: А и В. Строим таблицу истинности, полагая, что нулевой результат означает, что жених не подходит:

А

В

А и В




А

В

А или В

0

0

0




0

0

0

0

1

0




0

1

1

1

0

0




1

0

1

1

1

1




1

1

1

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

Далее строим дизъюнктивную функцию: А или В (см. таблицу).

Применяя эту функцию, получаем результат: из четырёх женихов трое удовлетворяют условию, т.е. 75%.

Дальше условия усложняем, добавляя условие, например, С - добрый, и т.д. Можно ввести условие НЕ. Тогда логическая конструкция получится достаточно сложная (её можно предложить детям, справившимся с предыдущими заданиями).

Затем переходим к программированию этих конструкций, чтобы можно было использовать ПК для решения этих (логических) задач. Вспоминаем, как записываются выражения в языке Qbasic. Функция ИAND, ИЛИOR, НЕNOT

Для конъюнктивной функции программа будет выглядеть так:

CLS ‘Задача 1

PRINT “Царевна Несмеяна поставила условие:”

PRINT “жених должен быть красивым и умным”

10 INPUT “Введите значения А (красивый – 1/0), B (умный – 1/0)”; A,B

IF A AND B THEN PRINT “Будет свадьба” ELSE PRINT “Свадьбы не будет!”

INPUT ”Для повторения введите 1, иначе 0»”; w

IF w = 1 THEN 10

PRINT “Спасибо за работу! До свидания!”

END

Далее предлагаем учащимся построить аналогичную программу для дизъюнктивной функции, постепенно усложняя условия.

Знакомим учащихся со встроенными функциями: SQR, ABS и другими, сообщив, что более полное представление об этих функциях они получат в старших классах.

Затем переходим к разветвляющимся алгоритмам. Поскольку основные правила построения разветвляющихся программ с применением оператора IF … THEN … ELSE …, то сразу начинаем построение программ с применением операторов множественного выбора SELECT CASE…END SELECT

Повторяем программу МЕСЯЦ, которую строили в 7 классе:

CLS : ‘названия месяцев в году

10 INPUT ”Введите номер месяца”; m

SELECT CASE m

CASE 1 : PRINT “январь”

CASE 2 : PRINT “февраль”

… … … …

CASE 12 : PRINT “декабрь”

CASE > 12 PRINT “Вы ошиблись!” : GOTO 10

CASE < 1 PRINT “Вы ошиблись!” : GOTO 10

END SELECT

INPUT ”Для повторения введите 1, иначе 0»”; a

IF a = 1 THEN 10

PRINT “Спасибо за работу! До свидания!”

END

После выполнения этой работы, спрашиваю мнение учащихся об этой конструкции ветвления. Чаще всего, дети склоняются именно к этому способу построения ветвления при многовариантном выборе. Решаем, что программы типа ВЫБОР, будем строить с помощью конструкции SELECT CASE … END SELECT.

Если остаётся время, то знакомимся учащихся с оператором множественного выбора ON GOTO и ON GOSUB. Пример программы:

CLS ‘Демонстрация работы оператора ON … GOSUB

11 INPUT “Введите число”; i%

ON i% GOSUB 1, 2, 3, 4, 5, 6, 7, 8, 9, 10

INPUT "Продолжим 1/0"; q

IF q = 1 THEN 11 ELSE PRINT "‘Спасибо! До свидания!"

END

1: PRINT "Один"

RETURN

2 : PRINT "Два"

RETURN



10 : PRINT "Десять"

RETURN

Программы, связанные с выбором чисел и строковых строим, модифицируя эту программу. Возможные варианты: «Переводчик», «Имена числительные» и т.п.

Для изучения темы «Циклы с постусловием» я беру циклы с оператором DO LOOP (WHILE, UNTILE), который повторяет блок операторов пока условие верно или до тех пор, пока условие не станет верным. Возможные конструкции:

1

2

3

4

Пока не равно

Пока не станет равно

A$ = “”

DO WHILE a$<>”“

?”Press any key!”

SLEEP 1

A$=INKEY$

LOOP

A$ = “”

DO

?”Press any key!”

SLEEP 1

A$=INKEY$

LOOP WHILE a$<>”“

A$ = “”

DO UNTIL a$=”7“

?”Press any key!”

SLEEP 1

A$=INKEY$

LOOP

A$ = “”

DO

?”Press any key!”

SLEEP 1

A$=INKEY$

LOOP UNTIL a$=”7“

Из всех четырёх конструкций обычно учащиеся легко понимают 1 и 2. Хотя конструкция с применением UNTILE, мне кажется, работает тоже хорошо. Их можно применять в играх для анализа нажатия клавиши. Довольно перспективно!

Завершается тема «Циклические программы» изучением циклов с параметром (с оператором FOR …TO … STEP … NEXT). Этот оператор достаточно хорошо известен по предыдущим программам «БУКВЫ», «ЗВЁЗДЫ» и легко усваивается ребятами. Буквально после с первой программы они могут строить свои. Для примера я выбрал программу построения графиков функций. Здесь впервые мы используем оператор WINDOW, который переопределяет систему координат экрана в нормальную «пифагорову»:

SCREEN 12 ‘График функции y=x2

WINDOW(-200,-200)-(200,200)

LINE(-200,0)-(200,0),7 ‘Ось ОХ

LINE(0,-200)-(0,200),7 ‘Ось OY

PSET(-10, 100),4 ‘Точка для последующего рисования графика сплошной линией

FOR X = -10 TO 10 STEP 0.1

Y = X2 : LINE -(X,Y),4

NEXT X

END

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

Для изучения темы «Сложные алгоритмы» я взял программу движения рисунка, в ней возможно использование вложенных циклов и развилок.

SCREEN 12 ‘Движение фигуры

X = 320 : Y = 240 : A$ = “”

LINE(X,Y)-(X+10,Y+10), 7, BF

FOR I = 1 TO 100

LINE(X,Y)-(X+10,Y+10), 7, BF ‘Рисуем фигуру на новом месте

10 A$ = INKEY$ : If A$ = “” THEN 10 ‘Задержка до нажатия «any key»

IF A$ = “7” THEN X = X – 1 : Y = Y – 1 ‘Влево вверх при нажатии «7»

IF A$ = “9” THEN X = X + 1 : Y = Y – 1 ‘Вправо вверх при нажатии «9»

IF A$ = “1” THEN X = X – 1 : Y = Y + 1 ‘Влево вниз при нажатии «1»

IF A$ = “3” THEN X = X + 1 : Y = Y + 1 ‘Вправо вниз при нажатии «3»

IF A$ = “5” THEN END ‘END при нажатии «5»

A$ = “” ‘ ”Обничевочиваем” A$

LINE(X,Y)-(X+10,Y+10), 0, BF ‘Стираем старый рисунок

NEXT I

Эту программу в старших классах будем использовать для построения графического редактора.

Изучение подпрограмм с применением операторов GOSUB RETURN начинаем с повторения программы «БУКВЫ». Теперь эту же программу будем строить с применением подпрограмм.

SCREEN 12 ‘Буква П с подпрограммами

10 INPUT ”Введите символ»; S$

FOR I = 1 to 2 : GOSUB 100 : NEXT I

FOR I = 1 to 18 : GOSUB 200 :NEXT I

INPUT ”Для повторения введите 1, иначе 0»”; a

IF a = 1 THEN 10

PRINT “Спасибо за работу! До свидания!”

END

100 PRINT TAB(25) STRING$(30,S$) ‘Горизонтальная перекладина

RETURN

200 PRINT TAB(25) S$; S$; S$ TAB(52) S$; S$; S$; : ‘Две вертикальные

RETURN

Для зачёта каждый выбирает букву или цифру, причём буквы, имеющие наклонные составляющие, оцениваются на балл выше. Для наклонных частей буквы нужно вместо явного необходимо неявное задание номера строки и позиции. Для этого используем текущее значение индекса I, например, строка для буквы «А» - PRINT TAB(39 – I * 2); S$; S$; S$ TAB(41 + 2 * I) S$; S$; S$;

Самое сложный раздел – это «Структурные программы». Во-первых, времени почти никогда не остаётся, во-вторых, структурный Бейсик требует очень точного синтаксиса. Малейшая ошибка в записи параметра-переменной или параметра-значения приводит к отказу интерпретатора.

Сначала учимся объявлять функции и подпрограммы (Declare FUNCTION, SUB), вызывать функции и подпрограммы (CALL). Затем строим программу:

DECLARE SUB gorizont () ‘Ппрг рисования горизонтальной перекладины

DECLARE SUB dvevertikal ()‘Ппрг рисования двух вертикальных частей

SCREEN 12 ‘Буква П структурно

10 FOR I = 1 to 2 : CALL gorizont : NEXT I

FOR I = 1 to 18 : CALL dvevertikal : NEXT I

INPUT ”Для повторения введите 1, иначе 0»”; a

IF a = 1 THEN 10

PRINT “Спасибо за работу! До свидания!”

END

SUB gorizont ()

PRINT TAB(25) STRING$(30, “*”) ‘Горизонтальная перекладина

END SUB

SUB dvevertikal ()

PRINT TAB(25) S$; S$; S$ TAB(52) “***” : ‘Две вертикальные

END SUB

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

Язык Pascal мы начинаем с изучения модуля Drawman PascalABC, который предназначен для построения рисунков и чертежей на плоскости с координатами.