Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МЕТОДПРЕПИНФ_Лекции_2013.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
624 Кб
Скачать
☆

7.9. Методические приемы, используемые при решении задач

Для более эффективного обучения ОА и П необходимо стремиться разнообразить методические приемы, используемые при решении задач. Рассмотрим некоторые из них.

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

алг приготовление отварной картошки

нач если картошка не очищена

то очистить картошку

сварить картошку

все

съесть картошку

кон

Во втором варианте ключевое слово “все” записывается строкой выше. При анализе необходимо найти правильный вариант, объяснить, всегда ли будет неправильно работать плохой вариант.

Место ключевых слов “нц” – “кц” в циклических алгоритмах можно показать с помощью следующего примера:

алг завтрак1

нач пока в тарелке не меньше ложки каши

нц съесть ложку каши

выпить стакан чая

кц

кон

Аналогично можно поднять ключевое слово кц на строку выше.

Для сравнения с командой “если” можно привести следующий пример:

алг завтрак2

нач если в тарелке не меньше ложки каши

то съесть ложку каши

все

выпить стакан чая

кон

Исполнение и анализ следующих трех вариантов фрагмента прог­раммы помогает понять назначение ключевых слов Begin – End и их роль при совместном использовании операторов For и If языка Паскаль.

1 вариант

--------

For i:=l to 10 Do

If A[i]>0 then

Begin k:=k+l;

write ( ‘ k= ‘ , k)

End

2 вариант

--------

For i:=l to 10 Do

If A[i]>0 then

k:=k+l;

write ( ‘ k= ‘ , k)

3 вариант

--------

For i:=l to 10 Do

Begin If A[i]>0 then

k:=k+l;

write ( ‘ k= ‘ , k)

End

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

Для того чтобы объяснить новый элемент языка, один и тот же пример можно решить разными способами. Например, рассмотрим следую­щее упражнение из темы “Логические выражения”: переменной y присво­ить значение х- 2 , если 3 < х < 5 и 0 в остальных случаях. Можно проанализировать следующие варианты, правильно решающие данную задачу:

1) If х< = 3 then y: = 0

else If x < 5 then y: = x-2

else y:=0;

2) y:=0;

If x<5 then if x>3 then y:=x-2;

3) If (x>3) and (x < 5) then y:=x-2

else y:=0;

4) If (x <=3) or (x >=5) then y:=0

else y:=x-2;

При этом некоторые ив вариантов можно предложить школьникам записать самос­тоятельно.

При решении наиболее сложных задач эффективно ис­пользование следующего методического приема. Записываем один или два неправильных варианта решения одной и той же задачи, которые часто приводят школьники. Например, преобразовать массив А[10] следующим образом: на место первого элемента поместить 10-й, на место второго – 9-й и т. д., то есть “перевернуть массив”.

1-й вариант (неправильный).

--------

For i:=l to 10 Do

A[i]:=A[11-i]

2-й вариант (неправильный).

--------

For i:=1 to 10 Do

begin d :=a[i];

a[i]:=a[11-i];

a[11-i]:=d

end

Проанализировав их выполнение на конкретном числовом массиве, школьники должны исправить ошибку во втором варианте

For i:=1 to 5 Do

т. е. записать правильный вариант.

Полезно использовать упражнения на выбор наилучшего оператора или фрагмента программы для решения одной и той же задачи. Например, записан следующий оператор if языка С++:

if (x<0) у=х*х*х*х +х*х +1;

else у=х*х +х +1;

Записать решение этого упражнения с помощью сокращенной формы if. Некоторые из учеников могут предложить следующий вариант:

у:=х*х+х+1;

if (x<0) у=х*х*х*х +х*х +1;

Но можно записать более эффективный и “красивый” вариант:

if (x<0) x=х*х;

у=х*х+х+1;

Его могут записать лишь наиболее способные ученики.

Если с задачей большинство учеников не может справиться, по­лезным является следующий методический прием. Необходимо дописать пропущенный оператор или его элемент в указанном месте. Например, пусть программа выполняет циклический сдвиг элементов массива на одну позицию вправо. При записи оператора цикла значения начального и ко­нечного параметров должны дописать школьники.

const n=10; int a[n]={1, -2, 33, -40, 5, 6, 7, 80, 99, 100};

r=a[n-1];

for (int i=?; i<? ; i++)

a[n-1-i]=a[n-2-i];

a[0]=r;

Можно предложить дописать индексы элементов массива в операторе присваивания:

a[?]=a[?];

При этом заголовок оператора цикла должен быть записан полностью.

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

Так как программа лучше воспринимается иногда в целом, когда она вся “перед глазами”, то можно практиковать следующее. Вместо того чтобы писать программу на доске, можно школьникам раздать заранее подготовленные распечатки программ или продемонстрировать готовую программу на компьютере и объяснить ее. Но в то же время этим нельзя злоупотреблять. Дело в том, что при изучении некоторых тем (например, сложные циклы, сортировка массивов) важен сам процесс разработки алгоритма и написания программы, а не ее готовый текст. Важно бывает продемонстрировать учащимся, как учитель думает, рассуждает, как он доходит до того или другого алгоритма, чтобы и ученики вместе с ним размышляли и участвовали в разработке программы или алгоритма.

Почти все рассмотренные выше методические приёмы не зависят от изучаемого языка программирования.