Страница 3 из 4«1234»
Модератор форума: Екатерина_Пашкова 
Форум учителей об образовании в России и мире » Форум педагогов по предметам, разделам » Форум учителей информатики » Стоит ли давать ученикам не совсем обычные методы? (Но после того, как уже объяснил традиционный подход)
Стоит ли давать ученикам не совсем обычные методы?
Маня58Дата: Четверг, 05.01.2012, 17:24 | Сообщение # 31

Марина Кондратьева
Ранг: Студент (?)
Группа: Я - учитель
Российская Федерация
Москва

Должность: информатика
Сообщений:
165
Награды: 2
Статус: Offline
C Новым годом!

Честно говоря, автором не интересовалась. Я давала этот метод в разделе "Приближенные вычисления" в курсе программирования в в профильных физматах в 10 классе. Там же были формулы вычисления корня квадратного, экспоненты, синуса методами Ньютона, Тейлора.

Что же касается Вашего желания поговорить о том, что стоит "давать в руки детям" - по-моему все очень индивидуально. Если развивать эту тему, наверное, придем к вопросу соотношения традиций и новаторства.
И все равно каждый будет решать в каждом отдельном случае - стоит или не стоит "заморачивать" детей, готовы ли они воспринять Ваше новаторство и куда это может завести.
Спасибо
Александр_ИгрицкийДата: Четверг, 05.01.2012, 19:41 | Сообщение # 32

Александр Игрицкий
Ранг: Академик (?)
Группа: Заблокированные
Российская Федерация
Москва

Должность: Freelancer
Сообщений:
11104
Награды: 128
Статус: Offline
Маня58, и Вас с Новым!!!
Что ни говорите - диалектика!


Сообщение отредактировал Александр_Игрицкий - Четверг, 05.01.2012, 19:42
Спасибо
Александр_ИгрицкийДата: Четверг, 05.01.2012, 21:54 | Сообщение # 33

Александр Игрицкий
Ранг: Академик (?)
Группа: Заблокированные
Российская Федерация
Москва

Должность: Freelancer
Сообщений:
11104
Награды: 128
Статус: Offline
pavel7, если хорошо подумать, то тему нужно было закрывать с самого начала!
Ответ очевидный: каждый как хочет, так и поступает.
Я иссяк.
Спасибо
alex_eduДата: Воскресенье, 08.01.2012, 12:43 | Сообщение # 34

Александр Обычный
Ранг: Магистр (?)
Группа: Пользователи
Российская Федерация
Иваново

Сообщений:
606
Награды: 7
Статус: Offline
Не согласен с тем, что "каждый как хочет". Программирование в школе, похоже, используют как средство развития логики. А ведь программирование само по себе "наука" и не терпит кульбитов. Ладно если программу веет один разработчиу - это его проблемы. Но вот вдруг молодой программист в команде решит написать нечто нетривиальное после таких примеров от учителя на уроках.... И все..... Функция складывающая 2 + 2 уносит весь проект к черту на кулички smile

Код должен быть максимально читаемым: язык программирования для того и создан. Для извращений - машинные коды smile
Спасибо
Александр_ИгрицкийДата: Воскресенье, 08.01.2012, 14:26 | Сообщение # 35

Александр Игрицкий
Ранг: Академик (?)
Группа: Заблокированные
Российская Федерация
Москва

Должность: Freelancer
Сообщений:
11104
Награды: 128
Статус: Offline
Quote (alex_edu)
Для извращений - машинные коды

Об остальном не говорю, а вот эту мысль можно подробнее?
Спасибо
alex_eduДата: Понедельник, 09.01.2012, 13:28 | Сообщение # 36

Александр Обычный
Ранг: Магистр (?)
Группа: Пользователи
Российская Федерация
Иваново

Сообщений:
606
Награды: 7
Статус: Offline
Quote (Александр_Игрицкий)
Об остальном не говорю, а вот эту мысль можно подробнее?

Я вот о чем. По сути любой язык программирования это язык связующий человека и компьютер. С одной стороны понятный человеку (и это основная задача), с другой стороны компьютеру (посредством компилятора/интерпретатора). Потенциально любую программу надо писать так, что б ее использовали на несколько поколений вперед. Поэтому задача кода программы не просто быть понятным компилятору, но и понятным любому другому программисту читающему данный код.

С другой стороны теоретически писать программы можно и "в машинных кодах"... Вот уж где зарядка для ума. Но это целесообразно лишь в одном случае (за исключением каких либо специфический ситуаций) : тренировка ума, изучение и т.п. Т.е. ни кто (в том числе автор кода) в здравом уме этот код в дальнейшем изучать/править не будет....

Т.е. если гипотетически представить что на уроке ученикам адли несколько вариантов в машинных кодах. Там не суть важна понятность алгоритма. А главное у учеников не отложится мысль что "чем навороченней алгоритм - тем круче выглядит программа". Я пару раз встречал код молодых программистов, у которых обучение было построено на академических интересах.... Ну "чесслово" не удивился бы сложению 2+2 через логарифм. И сидишь въезжаешь что автор имел тут ввиду. Порой действительно код получается более быстрый (разница заметна при нескольких триллионах итерациях) возможно чуть экономящий память..... Но одно маленькое но: такие незначительные оптимизации нужны лишь в очень специфических задачах. Где попросту уже прижало. А в большинстве случаев надо приучать (как правило перехода на зеленый свет) код должен быть понятный соседу. У меня у сына на английском в этом году было задание: один составляет рассказ, сосед переводит и сверяют.... Возможно на программировании тоже полезная практика: с одной стороны учатся писать понятный код, с другой стороны читать чужой код.

Уж если давать сверх программы какие то интересные знания. Например, использование ассемблера. С одной стороны можно показать, что это на самом не такой уж и сложный язык как его малюют, с другой стороны показать если вдруг приперло с быстродействием есть вариант. Хотя тут маленькое но. Нынешние компиляторы достаточно умные и дают хороший код. Наглядную задачку придется поискать. Я в свое время другу часть расчета на ассемблер перевел. Задача была расчет температуры головки молнии. Без ассемблера трое суток, с ассемблером несколько часов....
Спасибо
Александр_ИгрицкийДата: Понедельник, 09.01.2012, 13:50 | Сообщение # 37

Александр Игрицкий
Ранг: Академик (?)
Группа: Заблокированные
Российская Федерация
Москва

Должность: Freelancer
Сообщений:
11104
Награды: 128
Статус: Offline
alex_edu, я начинал с обычных машинных кодов для наших первых машин БЭСМ-6, ЕС-1010, М-20. Потом пришел Ассемблер, Алгол, Fortran ...
Мне вся эта кухня известна от и до. Ляшенко В.Ф. Программирование для ЦВМ с системой команд типа М-20 - долгое время была настольной книгой, наизусть выучил.
Я не об этом. Я и сейчас залезу в любой винчестер на низшем уровне. Мне всегда казалось, что умение работать с РС на уровне его внутренних команд - это не просто квалификация, а высокая квалификация. Понимание, как язык трансформируется в команды, это глубокое понимание. Но почему это извращение?
Спасибо
alex_eduДата: Понедельник, 09.01.2012, 15:59 | Сообщение # 38

Александр Обычный
Ранг: Магистр (?)
Группа: Пользователи
Российская Федерация
Иваново

Сообщений:
606
Награды: 7
Статус: Offline
Quote (Александр_Игрицкий)
Но почему это извращение?

Я ж извращением назвал не "программирование в машинных кодах". А решение типичных задач нетривиальными способами без серьёзных на то причин wink


Сообщение отредактировал alex_edu - Понедельник, 09.01.2012, 16:00
Спасибо
Александр_ИгрицкийДата: Понедельник, 09.01.2012, 17:50 | Сообщение # 39

Александр Игрицкий
Ранг: Академик (?)
Группа: Заблокированные
Российская Федерация
Москва

Должность: Freelancer
Сообщений:
11104
Награды: 128
Статус: Offline
alex_edu, спасибо! Вопрос снят!
Спасибо
YuiSeДата: Четверг, 12.01.2012, 18:31 | Сообщение # 40

Bvz Afvbkbz
Ранг: Школьник (?)
Группа: Пользователи
Гондурас
Nueva Armenia

Сообщений:
80
Награды: 2
Статус: Offline
Поставлю себе задачу ответить на вопрос: можно ли показывать ученикам (и если да, то в каком ракурсе, пограмму, представленную в первом посте.
сначала разберем алгоритм ее действия:
1. задаются границы поиска решения для заданной функции. При этом t[-1] левая граница поиска, в данном случае с априори отрицательным значением функции, t[1] - правая граница с априори положительным значением функции. t[0] - аргумент-индикатор 0, должен быть по дальнейшей логике программы задан меньше левой границы поиска, его значение нам неинтересно, лишь бы было левее левого.
2. Определяем середину текущего интервала поиска решения.
3. Определяем знак произведения значения функции посередине интервала поиска на правую границу (!).
4. В соответствии со полученным значением "знака" передвигаем соответственно левую (если отрицательный) или правую (если положительный), либо присваиваем значение t[0] середине интервала, если знак "нулевой":).
5. Проверяем сходимость: если интервал поиска сузился до допустимой ошибки или t[0] стало правее левой границы (т.е. сработал индикатор появления нулевого значения функции и мы нашли совсем точное решение), то стало быть результат найден и дальнейшие изыскания проводить не следует, в противном случае перейти к п. 2.
6. Выводим последнюю вычисленную середину интервала и соответствующее ему значение функции (!)
7. Закончили.

Вроде бы почти все правильно, кроме грубейшей ошибки в п. 3. Надо определять знак функции, а не знак произведения функции на аргумент. Знак аргумента никак не должен влиять на решение. Представим, что исправили и написали
Code
t[ sign( f(x)) ]:=x;
. Идем дальше.
П. 4 предполагает простую проверку на знак и в соответствие с этим изменение значения в области памяти. Но код заставляет процессор записать операнд из памяти в регистр, перейти в функцию, выполнить там ТРИ раза оператор условного перехода (крайне дорогая операция), записать результат, вернуться обратно, и уже по полученному сдвигу в памяти записать значение. Вывод в данном случае быстрее будет работать код:
Code
if (fx > 0) then t[1] := x else if (fx<0) then t[-1] := x else t[0] := x;
, где fx - есть сохраненное вычисленное значение функции f(x).
По п.6 в строке
Code
writeln('x=',x:8:5, ' y=',f(x):8:5);
автор еще раз вычисляет уже один раз вычисленное значение функции, что немного противоречит концепции метода половинного деления, предполагающего в жизни, что операция вычисления функции может быть крайне дорогой. Также никак не учитывается возможное срабатывание "индикатора точного решения", что, наверно, тоже не есть комильфо.

Итог 1. Представленная реализация метода дихотомии содержит грубую ошибку в п.3., а главное опасную.
Итог 2. На этом примере, аналогично разобрав программу на операции процессора с памятью, можно показать студентам/ученикам смысл оптимизации программ, что изыски в текстовом отображении кода не есть изыски его функциональности и скорости работы.

Итог 3. Жаль ArthurL не догадался, что быстродействие реализаций метода половинного деления при прочих равных исчисляется отнюдь не количеством итераций, а затраченным машинным временем, и зачем нужна t[0], но зато потренировался в трассировке и отладке.

P.S.: и надо заменить все реалы на double. Со времен четвертого пентиума все процессоры 64-битные, а мы не то, что 32-битными системами пользуемся, так еще и ориентируемся на отсутствие поддержки процессором операций с плавающей точкой.
Спасибо
Александр_ИгрицкийДата: Четверг, 12.01.2012, 20:05 | Сообщение # 41

Александр Игрицкий
Ранг: Академик (?)
Группа: Заблокированные
Российская Федерация
Москва

Должность: Freelancer
Сообщений:
11104
Награды: 128
Статус: Offline
Quote (YuiSe)
Поставлю себе задачу ответить на вопрос: можно ли показывать ученикам (и если да, то в каком ракурсе, пограмму, представленную в первом посте.

Уважаемые коллеги!
Я не буду обсуждать тонкости используемого подхода с профессиональной точки зрения. Они не выдерживают критики. Я о другом.
Обратите внимание но то, сколько усилий и времени люди потратили на то, чтобы ДОБРОСОВЕСТНО разобраться в том, что просто ОБЯЗАН был сделать автор в самом начале.
Вот и хочу сказать, что нельзя так легкомысленно относиться к своим сообщениям, предлагая серьезным людям разбираться в несозревших и непродуманных до конца решениях. Понимаю, что никто никого силой не заставляет, но все-таки есть границы легкомысия, переходить которые учителю стыдно. Конечно, чтобы оставаться учителем.


Сообщение отредактировал Александр_Игрицкий - Четверг, 12.01.2012, 20:16
Спасибо
ArthurLДата: Понедельник, 16.01.2012, 01:35 | Сообщение # 42

Артур Лаздин
Ранг: Первоклашка (?)
Группа: Пользователи
Российская Федерация
Санкт-Петербург

Сообщений:
27
Награды: 3
Статус: Offline
YuiSe, поверьте, я догадался зачем нужна t[0]. Этот костыль отрабатывает, если границы диапазона симметричны(!) относительно корня. Говорить о том, что идеальный случай не укладывается в общкую схему "гениального решения" мне было просто скучно и не интересно.
А отладкой я не занимался )) Разве тестирование методом ЧЯ.
Спасибо
YuiSeДата: Понедельник, 16.01.2012, 12:59 | Сообщение # 43

Bvz Afvbkbz
Ранг: Школьник (?)
Группа: Пользователи
Гондурас
Nueva Armenia

Сообщений:
80
Награды: 2
Статус: Offline
Quote (ArthurL)
YuiSe, поверьте, я догадался зачем нужна t[0].

Как это соотносится с написанным ранее?
Quote (ArthurL)
Ввиду того, что выбор значения для инициализации t[0] непонятен, попробуем поиграть с этим значением.
Был использован диапазон от -10 000 до 10 000.
Спасибо
ArthurLДата: Понедельник, 16.01.2012, 16:22 | Сообщение # 44

Артур Лаздин
Ранг: Первоклашка (?)
Группа: Пользователи
Российская Федерация
Санкт-Петербург

Сообщений:
27
Награды: 3
Статус: Offline
YuiSe, и что вас смущает?
Спасибо
YuiSeДата: Вторник, 17.01.2012, 09:49 | Сообщение # 45

Bvz Afvbkbz
Ранг: Школьник (?)
Группа: Пользователи
Гондурас
Nueva Armenia

Сообщений:
80
Награды: 2
Статус: Offline
Quote (ArthurL)
YuiSe, и что вас смущает?

Да, да, я знаю, что отвечать вопросом на неудобный вопрос является одним из правил демагога, и что это принято в Одессе.
Спасибо
Форум учителей об образовании в России и мире » Форум педагогов по предметам, разделам » Форум учителей информатики » Стоит ли давать ученикам не совсем обычные методы? (Но после того, как уже объяснил традиционный подход)
Страница 3 из 4«1234»
Поиск:



Спорная ситуация с родителями или администрацией? Ищете выход из проблемы на уроке или с учеником?
Не знаете, как что-то сделать на компьютере?


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