13 июня в 00:59

Один урок программирования

На днях мне довелось провести практическое занятие по программированию для учеников десятого класса одного из харьковских лицеев. Шесть лет назад я читал курс программирования в политехе, но тогда на посвящение студентов в эту, не побоюсь сказать, науку у меня было целых два семестра времени на лекционные и лабораторные занятия. А здесь было всего от силы полтора часа, да и с таким юным контингентом я ещё не работал. «Ладно», сказал я себе. И приступил к подготовке. Мне дали несколько задач, которые можно было бы порешать со школьниками. Первая из них занимала аж 70 строк индусского кода. Подготовил своё решение из 10 строк. Думал, «Сначала дам одно решение, потом покажу другое». Ещё одну задачу переписал для того, чтобы сместить акценты с программистских особенностей в предметную область (задача была геометрическая). Третья задача была наиболее простой – один человек вводит с клавиатуры число, другой отгадывает. Неинтересно. Пусть лучше компьютер загадывает и даёт подсказки. Для каждой задачи придумал последовательность подачи материала. Когда пришло время, а школьники расселись за компьютеры, я их спросил: «Кто-нибудь из вас имеет опыт программирования? Какие-то языки программирования уже изучали?». Получив отрицательный ответ, мысленно сказал себе «Печально», отложил в сторону два листа с распечаткой кода из трёх и сделал заявление: «Ну, что ж… Тогда начнём программировать!».

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

Вводное слово о программировании началось примерно так. «Компьютеры сейчас применяются практически в любой сфере человеческой жизни. Поэтому неважно, какой путь вы выберете, на кого станете учиться, уметь программировать достаточно важно. С помощью этой науки можно получить существенную выгоду». Далее я привёл пример «задаче о коммивояжёре», сформулировав её следующим образом: «Представьте, что вы работаете в Новой Почте. Вам нужно доставить множество посылок в разные города. Хорошо бы выбрать путь, чтобы был бы как можно короче. Это сэкономит деньги – курьер работать будет меньше часов, бензина потратите меньше литров». И небольшой переход: «Но, к сожалению, компьютер сам не умеет решать такие задачи. Он умеет выполнять лишь арифметические и логические операции» (ну, и другие, но не будем сейчас об этом). «Причём делает он это над числами в виде нулей и единиц» (не будем тратить время, рассказывая о двоичной системе счисления – надеюсь, в школьной программе она есть). «Команды компьютеру (машинные инструкции) тоже даются в виде чисел. Но обычно программисты пишут программы на языках, понятных человеку – например, C, Java, C++». Услышав «си-плюс-плюс», дети оживились. «Чтобы преобразовать код программы в команды компьютеру есть несколько видов программ, например, компиляторы. Чтобы более удобно с ним работать будем использовать другую программу – среду разработки, которая также включает текстовый редактор и много других полезных инструментов. Найдите на рабочем столе ярлык программы Code::Blocks и запустите его».

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

image

«Итак, можно увидеть, что в коде программы встречаются английские слова. Это и include, и using, и main, и return. В первой строке мы включаем, т.е. используем, некую библиотеку. Обычно программисты используют код, написанный другими программистами. Он включается во всевозможные библиотеки. В данном случае мы используем библиотеку iostream. Здесь i – это input (ввод), o – output (вывод), stream – поток. Т.е. библиотека содержит код для ввода с клавиатуры и вывода на экран» (перегружать школьников информацией о перенаправлении потоков ввода-вывода не стоит). «Если библиотек много, между ними могут возникнуть конфликты, поэтому код обычно размещают в разных пространствах. using namespace std нужно для того, чтобы выбрать пространство имён (namespace) std – сокращение от standard (стандартный). int говорит, что идёт речь о целых числах, об их хранении и передаче» (т.е. я имел в виду объявление переменных и возвращаемое функцией значение; о явном приведении типов рассказывать не стал) «main – имя функции. Функция – это какой-то логически завершённый участок кода, который возвращает какое-то значение. cout… c – console (консоль – клавиатура и экран), out – вывод, endl – end of line, конец строки. В седьмой строке происходит вывод текста, заключённого в двойные кавычки, на экран. return 0 в данном случае говорит операционной системе об успешном завершении программы».

После этого предложил нажать F9, чтобы скомпилировать программу («преобразовать текст программы в машинные инструкции»). «Поздравляю! Вы написали свою первую программу!», сказал я, когда увидел, что на мониторах появились консоли с текстом. Потом уточнил: «Ну, не совсем написали – за вас это уже сделали другие. Поэтому давайте внесём изменения в код. Измените в двойных кавычках текст Hello world! на какой-нибудь другой на английском языке и ещё раз нажмите F9. Вот теперь другое дело!». Кто-то не закрыл окно запущенной программы, поэтому компиляция не прошла. Пришлось помогать. «Теперь замените текст на какой-нибудь другой, на русском языке. И удивитесь.» Те, кто написал «Привет», увидели следующее:

image

«Всё дело в том, что текст тоже преобразуется в нули и единицы. И как именно будет происходить это преобразование, зависит от кодировки. Кто-нибудь сталкивался с этим понятием?» В ответ – неуверенное мычание… «Давайте зададим кодировку для кириллицы. Установим (set) соответствующую локаль (locale). Для этого седьмую строку опустим вниз (поставим курсор в начале строки и нажмём Enter). И в пустой седьмой строке введём setlocale(LC_ALL, "rus"); А во второй строке введём #include <locale>». Кто-то LC_ALL написал строчными буквами (пришлось объяснить, что строчные и заглавные буквы отличаются), кто-то списал с доски L.C.A.L.L. (да, доска в ужасном состоянии), кто-то написал «russ» и не получил должного результата. Но в большинстве случаев я увидел положительный исход. Немного опечалил текст, который написала одна девочка, «хочу кушать». В таком состоянии восприятие информации довольно сильно страдает.

Пришло время сформулировать школьникам условия задачи. «Теперь давайте напишем программу. Пусть компьютер загадает число от 0 до 99, а мы с его подсказками будем это число отгадывать». Да, это третья задача.

«Для генерации случайного числа используется функция rand, сокращение от слова random – случайный. Чтобы её использовать, нужно подключить библиотеку cstdlib. Для генерации числа от 0 до 99 нужно взять остаток от деления результата, который возвращает функция, на 100. Операция получения остатка от деления записывается символом процента». Тут пришлось напомнить школьникам, что такое остаток от деления. Привёл пример «5%2», и им стало ясно, что я имел в виду. «Результат выполнения операции взятия остатка от деления (т.е. случайное число от 0 до 99) нужно куда-то записать. Это число целое. Странно было бы, если бы мы пытались угадать какое-нибудь вещественное число, например, 2.584 или 35.763. Для хранения результата будем использовать переменную. Переменная – это область памяти компьютера (нам пока неважно, где эта память находится), к которой можно обращаться по имени». Да, с переменными различных типов можно выполнять определённый набор операций, но это сейчас не имеет значения. «Назовём переменную u (от слова unknown). Для объявления переменной целого типа используется слово int. Такая область памяти на этих компьютерах занимает 4 байта и может вместить число примерно от минус двух до плюс двух миллиардов. Этого достаточно?» Получив утвердительный ответ, написал на доске недостающий код. Получилось следующее (вместе с исправлением вывода – теперь на экране будет не текст, а значение переменной):

image

Запустив программу, школьники, все до одного, увидели число 41. Не 42, но тоже сойдёт. Причём результат не изменялся от запуска к запуску. «Итак, мы получили случайное число. Действительно, кто бы мог подумать, что компьютер выдаст 41? Число 41 удовлетворяет условиям, которые мы поставили. Оно находится в интервале от 0 до 99. Но как его сделать действительно случайным? Для этого нужно задать так называемое зерно генератора случайных чисел, например, текущим временем. Добавьте перед десятой строкой строку srand(time(0)); Если программа не компилируется – добавьте библиотеку ctime»

Теперь программа выдавала действительно случайные (ну, на самом деле не случайные, но это для этой задачи значения не имеет) числа. Исходник программы на данный момент был таким:

image

Осталось написать код, отвечающий за его угадывание.

«Не думаю, что вы сможете угадать число от 0 до 99 с первого раза» Школьники улыбнулись. «Если мы будем делать какие-то одни и те же действия несколько раз, то это можно оформить в виде цикла» Так как рассказать на словах, как реализовать цикл, сложно, сначала я записал соответствующие строки на доске.

image

«В тринадцатой строке мы объявили переменную i (от input), аналогичную переменной u. В ней мы будем хранить введённое число. Собственно ввод осуществляется в 16-й строке. Цикл объявляется ключевым словом do. Всё, что заключено в фигурные скобки, будет повторяться пока (while) значение переменной i не равно u». Что касается этого участка кода, то типичные ошибки учеников были такие. Во-первых, они ставили вместо фигурных скобок круглые. Во-вторых, операцию сравнения «!=» писали раздельно. После компиляции программы дети настойчиво пытались отгадать число u. Меня поразило, что девочка, которая ранее написала «хочу кушать» делала это весьма успешно. Из ошибок времени исполнения я был рад увидеть следующую:

image

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

Мы подошли к финишной прямой. Осталось добавить подсказки. Я написал на доске два «if-а» и пояснил. «Если введённое число больше загаданного, выводим соответствующее сообщение (строка 17). Если введённое число меньше загаданного – делаем так же (строка 18).» Плюс ко всему я расширил вывод сообщения о завершении «игры».

image

Это был окончательный текст программы, которую набрал на первом уроке программирования 10-в класс. Программа далеко не идеальна. В частности, мне не нравятся сообщения «Ваше число больше!» и «Ваше число меньше!». Они реально запутывают. Если бы у меня был второй шанс провести подобный урок, сформулировал бы по-другому.

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

image

Итоги подведём.

1. Урок прошёл успешно. Все ученики справились с заданием. Задача решена. Всего одна, но решена. Не без трудностей, конечно.

2. Я получил новый опыт преподавания. Последние два года читаю лекции и провожу лабораторные работы только студентам пятого курса, а работать с ними – совершенно иное дело. У них уже есть какая-то база, отношение к учёбе (да и к жизни в целом) другое, а мои предметы узко специализированные – материал, который я даю, в будущем пригодится от силы 2–3 нашим выпускникам из каждой группы. Здесь же есть надежда, что именно этот урок вызовет интерес к программированию у одного-двух учеников.

3. Школьная учебная программа совершенно иная, нежели та, по которой учился я. Да, я ходил не в простую школу. В седьмом классе мы изучали Logo, в восьмом – BASIC, а в девятом – Pascal. Но, тем не менее, даже тем моим одноклассникам, которые не блистали знаниями по другим предметам (а ведь и я тоже не блистал!), информатика нравилась. Я уверен, что давать программирование в школе нужно обязательно. Оно отлично развивает мозг и позволяет понять компьютеры (без которых мы уже не представляем свою жизнь) совершенно с другой стороны.

4. Язык C++ имеет высокий порог вхождения. Одного урока, чтобы раскрыть основы этого языка программирования, явно недостаточно. Да, я не знаю C++. Я обожаю C, а когда мне нужно ООП, я пишу на Java. Но изучать C++ в вузе скорее всего нужно (C по моему скромному мнению – обязательно). Опять же многое зависит от вуза и специальности.

Спасибо за внимание всем, кто прочёл до конца! Буду рад ответить на ваши вопросы.

P.S. Есть идея написать ещё одну статью об информатике в школе. Если поддержите в комментариях, статья, скорее всего (не буду обещать), увидит свет.
Александр @Albom
карма
50,5
рейтинг 17,1
Пользователь
Самое читаемое Разное

Комментарии (173)

  • +12
    Я бы учил детей Питону.

    И, насколько я себя помню, самое сложное в детстве, это было понять, что такое потоки. А Вы не только потоки сразу даёте, но ещё и локаль.
    • +3
      Поддерживаю предыдущего оратора: по опыту Питон действительно помогает меньше заморачивать учеников типизацией и больше делать упор на алгоритмы. Правда о типах всё равно обязательно следует рассказать.
      • –4
        Может лучше C#? Он ещё проще. К томуже Visual Studio очень облегчает жизнь.
        • +11
          C# проще питона?
          • 0
            Ну лично мне питон было сложнее осваивать… А на C# написал рабочий проект за ~12 часов (4 дня). До этого писал только простенькие скрипты на PHP.
          • +1
            Строже. Переход от статической типизации к динамической куда проще, чем обратно. По своему опыту преподавания языков скажу, что в самом начале язык нужен очень строгий.
        • +2
          Чем меньше слов тем лучше для детей. C# для этого избыточен, особенно учитывая тотальное ООП: слишком много абстракций.

          И если к десятому классу они ещё не занимались программированием, то 90% из них точно не пойдёт в программисты, и им точно не надо знать чем int отличается от char, что такое void, cin и cout. Имхо, проще подошло бы вообще не столько программирование, сколько написание простейшей игры из трёх функций на pygame (с дополнительной упрощающе оболочкой) или love2d (и так сойдёт), учитывая что там python/lua, минимум слов/особенностей фреймворков, и максимум предметной области.

          За полтора часа, стоит объяснить, что такое переменная/функция/массив, и написать простейшую «игру» с кликаньем на кружочки, которые перемещаются по экрану. Это же значительно сильнее заинтересует десятиклассников, чем унылое «введите число, вот вам работа по формуле». Преподавание не должно быть унылым, это основное правило для преподавателя, любящего свой предмет.
          В ВУЗе можно выпендриваться со скучными ханойскими башнями и всякими алгоритмами Монте-Карло, а в школе извольте подавать игрушки.
          • 0
            И если к десятому классу они ещё не занимались программированием, то 90% из них точно не пойдёт в программисты,

            В корне не согласен!
            На примере своих учеников могу сказать что некоторые определяются даже не 10, а в 11 классе. НО если есть желание и голова все будет. У меня много примеров которые начинали в 10 и сейчас кто учится, а кто уже профессионально кодит :)


            За полтора часа, стоит объяснить, что такое переменная/функция/массив,

            Да именно так, плюс еще объяснить виды и назначение циклов и научить структурировать задачу


            и написать простейшую «игру» с кликаньем на кружочки, которые перемещаются по экрану.

            а вот это лишнее, или может в качестве саморазвития на лето ;)

            • 0
              некоторые определяются даже не 10, а в 11 классе
              Если бы даже так. Я вот в первой половине выпускного класса думал, что буду архитектором. Во второй — экономистом. Поступил на криптографа…
            • 0
              Закончил языковую школу в Москве. Из 60 человек — полтора программиста.
              В соседней, математической школе того же выпуска — целых три. В соседней спортивной — ноль. В ещё одной английской — два. Я смотрю на то, куда поступали выпускники, и кем они стали.
              Программистов мало. И собираются они в специализированных учебных учреждениях. И я совершенно не понимаю, зачем давать что-то сложнее игрушки из трёх команд тем, кто будет экономистом, юристом, актёром или менеджером среднего звена. Им это не нужно, напротив, испугаются и будут вспоминать как страшный сон. За полтора часа, нужно успеть сделать минимум, чтобы вытащить действительно заинтересовавшихся, проведя отсев всех остальных, которым это не нужно. Но чтобы и им тоже было интересно, потому что мало ли что.

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

                Да, согласен полностью, даже больше скажу надо убрать Информатику как предмет из 11 класса.
                Нормально подготовится к егэ на уроке не получается, да и как было выше сказанно не всем это нужно.

          • 0
            Т.е. вы предлагаете за 1.5 часа дать не только основы языка, но и еще дать основы движка? Боюсь, что мозг у 90% начнет отключаться на первой трети.
            • 0
              Так три команды: update, mouse position и draw circle, допустим. С кружочками уже интересно баловаться, особенно если они реагируют на мышку. Заодно, сразу можно пощупать результат, и увидеть, что «всё не так бессмысленно, как подсчёт процентов и вывод суммы a и b». Ребёнок, который никогда не занимался — поймёт. А вот void/int/float — будут доходить ещё долго.
              • 0
                Можно ещё упростить, используя визуальное программирование (Выстраиваем логику из блоков, сразу видим код).
                • 0
                  нужен ли в этом случае код?
                  достаточно логики.
                  правда, я противник «визуального программирования», но для детей и гуманитариев, наверное, подойдет…
                  • 0
                    его придумали не для детей и не для гуманитариев, а для 50+-летних инженеров советской закалки, которые из алгоритмики понимают только блок-схемы
                    • 0
                      систем «визуального программирования» достаточно много. Вы, видимо, имеете ввиду паронджановский «Дракон»? :-) тогда согласен
                      ну а МИТвский Скратч (равно как и леговский язык ) — он как раз для детишек.
                      • 0
                        я про саму концепцию «визуального программирования».
                        • 0
                          концепция «визуального программирования» появилась впервые не у нас. поэтому считать ее «для пенсионеров советской закалки» — не стоит.
                          у нас для «инженер-пенсионеров» и инвалидов умственного труда был придуман «дракон». «у них» — гораздо большее количество систем…
    • +4
      Согласен. printf простой и понятный. А как работают cin и cout лично я понял только во втором семестре, когда мы стали изучать объекты и перегрузку операторов. До этого воспринималось как магия, было непонятно почему именно так а не иначе.
    • –2

      Прогали же в детстве и на Си, и на асме, и ничего. Кому интересно — во всем разберется.


      Я бы разделил — кому "решать разные задачи" — Питон, а кому "стать программистом" — С (не ++).

    • –3
      дети, обученные питону, маловероятно потом осилят порог вхождения в яп низкого уровня. И будут всю жизнь (если доведется) писать отвратный код даже не понимая, почему он отвратный
      • +1
        Школа дает общие понятия, специализация уже приходит позже.

        Большинство из детей не станет программистами, но зато они смогут написать, пусть даже отвратный, код на питоне, чтобы автоматизировать какие-то свои прикладные задачи.
        • 0
          Согласен и со вторым и, к сожалению, с первым.
      • +6
        дети, обученные питону, маловероятно потом осилят порог вхождения в яп низкого уровня

        Что характерно, необученные питону — тоже.
      • 0
        Все следует изучать начиная с простого. В случае с программированием можно либо идти от низкоуровневой простоты: понять как устроен компьютер на уровне логических схем и оттуда понимать как это все программируется на машинном уровне и как затем упрощается с помощью языков программирования, — либо с алгоритмической простоты: блок-схем и затем высокоуровневых языков, позволяющих абстрагироваться от особенностей их реализации. В идеале можно сводить оба маршрута воедино, где, как мне кажется, и лежит язык C. А Python может быть хорошей основой для изучения с алгоритмического конца, хотля лучше Lisp =)
        • 0
          то, о чем вы говорите — это скорее электроника, больше полезная конкретно плисоводам и микроэлектронщикам. На мой взгляд, начинать лучше с работы с памятью (массивы, куча/стек, адресация). Как только просыпается понимание как устроена память, всё остальное в программировании становится интуитивно понятным и усваиваемым. А главное — нет промежуточной «магии». Дальше — хоть вниз до асма, хоть вверх в ооп.
          • +1
            Многие абстракции низкоуровневой работы с памятью вроде массивов, кучи, стека, могут выглядеть «магией» (в плане, почему именно так, а не иначе работают с памятью), если не понимать как физически и на уровне логических схем устроена память и как с нею работает процессор. Да, это электроника, но уровень необходимый для понимания основ не такой уж и высокий. В книге КОД Чарльза Петцольда, например, все это объяснено буквально на пальцах.
      • +1
        Я начинал вообще с qbasic. Интересно, что бы вы сказали обо мне.
        • 0
          конкретно о вас, как о программисте? — только читая код
    • +1
      Абсолютно полностью согласен — Python хорошо подошёл бы для обучения детей. Хотя, уверен, были бы свои подводные камни.
      • 0
        Еще для Python есть online консоли которые позволяют сделать все гораздо более дружелюбно, отдать группе полу-готовый скрипт, чтобы не тратить время на начальный этап.

        Поправить ошибки удаленно, подсветка синтаксиса, ошибок и т.п.

        Очень удобно для начинающих
    • –2
      Чтобы потом они никогда не стали хорошими программистами?
      • +1
        Это ортогональные вещи. Что язык кого-то портит — это байки. На самом деле хорошими программистами могут стать немногие, и изучали они прежде что-то другое или нет — никакой роли не играет.
  • +18
    Честно говоря, у меня огромные сомнения, что школьники, не умевшие программировать, что-то вынесли из этого урока, кроме того, что программирование — это жутко сложно. В данном примере огромное количество абстракций-черных ящиков, для понимания которых нужна начальная теоретическая база. Библиотеки, локали, пространства имён. «Не верю!» (с)
    Скорее всего, практически ничего не поняли, но умело поддержали разговор, всё-таки десятый же класс.
    Тут, ИМХО, неудачно выбран язык программирования. В старом добром Паскале или Бейсике, например, та же задача решается как раз наглядно, без лишних неочевидных абстракций.
    • +2
      У лектора и с структурой проблемы.
      Зачем объяснять отдельно про namespace?
      вообще надо убрать и using namespace и указывать его явно для каждого метода.
      ВО первых гораздо проще ассоцифция: все методы iostream принадлежат к группе std — стандартные. ГРуппа или namespace — это как фамилия для методов. Позволяет отличать методы с одинаковыми именами в разных библиотеках.
      А еще нельзя использовать слово функция. У детей функция в математике и у них начинает клинить от того, что эти две сущности с одинаковыми названиями никак не получается совместить вместе в голове. Понимание что функция потому и функция, что близка математической функции — приходит гораздо позже.
      Локаль зачем-то использует. Транслит для первого урока — выше крыши.
      Короче, ИМХО автору надо серьезно поработать над способом подачи материала.

      UPD:
      ОТдельный вопрос — кто придумал начинать обучение детей программированию с С++, а не с лого или муравья.
      • 0
        У детей функция в математике

        И что, понятие функции в математике и в процедурных языках — более-менее перекликается. Нужно только заострить внимание на различиях.
        • 0
          Не нужно заострять внимание на различиях на вводном уроке.
          • 0
            Так другого-то не было и не будет.
      • +1
        Полностью согласен.
        #include , using namespace — дать им как данное. Просто пока мы тут пишем, оно нам нужно, кому интересно — могу после урока объяснить что это.
        Если кто-то хочет русские буквы, то дать setlocale просто как некоторое заклинание, а не вдаваться в подробности про кодировки. Так и говорим: «Чтобы компьютер понял наши русские буквы мы напишем setlocale(LC_ALL, „rus“).» Ни слова больше.
        Зато важные моменты проскочили галопом по европам.
        Что я примерно ожидал увидеть в статье
        1. Запишем число в переменную n, и посмотрим что там записалось:
        int n = 2;
        coun << n;
        

        2. Запишем 2 числа в разные переменные, сложим, и посмотрим, что там записалось:
        int n = 2;
        int m = 3;
        int summ = n + m;
        cout << summ;
        

        3. Научим программу принимать наше число и складывать:
        int n;
        cin >> n;
        int m = 3;
        int summ = n + m;
        count << summ;
        

        4. Обучим условию if, и выводу текста:
        int n;
        cin >> n;
        if (n > 5)
          count << "bolhe 5";
        else
          count << "menshe 5";
        

        5. Ищем степень числа с помощью цикла:
        int n;
        cin >> n;
        int i = 0;
        int p = 1;
        while (i < n) {
          p = p * 2; 
          i = i + 1; //mogno napisat i++
        }
        count << p;
        

        6. И вот только теперь можно переходить к игре угадай число. Но мне кажется на первом уроке до этого пункта вряд ли можно дойти.

        p.s. Сам не преподаватель ни разу, но мнение имею. :)
      • 0
        Зачем объяснять отдельно про namespace?
        вообще надо убрать и using namespace и указывать его явно для каждого метода.

        using namespace был в шаблоне файла. Как бы это выглядело, если бы я сказал «а теперь уберём эту строку — она не нужна»? (почему не нужна? зачем её тогда добавили в шаблон?) Да и std:: в пяти местах выглядело бы не лучше.

        У лектора и с структурой проблемы.

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

        ОТдельный вопрос — кто придумал начинать обучение детей программированию с С++, а не с лого или муравья.

        Как я уже писал в статье, я именно начинал учиться программировать именно с Лого. В 7 классе. Урок проходил в университете и пришлось выбирать из того, что было установлено в компьютерном зале кафедры «Радиоэлектроника» — либо C/C++, либо Java. Остальное ПО — MathCAD, Multisim, офис и пару САПР.

        А еще нельзя использовать слово функция

        Я считаю, что можно. Как уже отвечали в комментариях — это понятие сходно с математическим, а на различия заострять внимания не было бы времени. Да и перегружать информацией школьников не хотелось.
    • 0
      огромные сомнения, что школьники, не умевшие программировать, что-то вынесли из этого урока

      Проверить это невозможно. Но и считать школьников за дураков тоже неправильно. Если поставите себя на их место, то вполне реальна такая ситуация. Школьник: «Хм. Чтобы начать программировать на C++ нужно поставить Code::Blocks. Если выбрать проект, появится текст программы, которая работает. Я могу этот текст изменять. Мы работали с целыми числами, а как ввести и вывести вещественное число?» Потом полезет в интернет и скачает учебник.

      В данном примере огромное количество абстракций-черных ящиков

      Вы что-то имеете против абстракций? Вы знаете досконально, как устроен каждый агрегат автомобиля? Большинство просто поворачивают ключ и едут.

      ничего не поняли, но умело поддержали разговор

      Не нужно считать школьников за дураков.

      В старом добром Паскале или Бейсике, например, та же задача решается как раз наглядно

      Согласен на все 100. Но приходится работать с тем, что есть. У меня есть определённый багаж знаний по C++, на компьютере есть среда разработки. Вспоминать Паскаль (даже не синтаксис, а всевозможные нюансы) и устанавливать компилятор на 15 компьютеров ради одного урока? Подготовка к нему у меня и так заняла 2 рабочих дня. Причём 90% подготовленного материала пришлось выбросить. Хотя к этому я был готов — слишком много было неизвестно об уровне подготовки школьников. Представьте, что это был бы урок не программирования, а физики. Я бы подготовил множество опытов по электричеству, а оказалось бы, что они только кое-как механику проходили.
      • 0
        устанавливать компилятор на 15 компьютеров ради одного урока
        для паскаля есть PascalABC.NET (впрочем, там декларировано, что не только паскаль). Ну и — да, ради одного урока… ради ЦЕЛОГО урока…
        и ради этого нужно вспоминать паскаль, или закон ома, или валентность элементов, или отличия ямба от хорея…
      • 0
        Проверить это невозможно. Но и считать школьников за дураков тоже неправильно.

        А я и не считаю их дураками. Ваш урок тяжело воспринимается для обычного человека, а не для дурака. Это вы почему-то делаете выводы «раз не понял, то дурак», «не понял, но умело поддержал разговор — тоже дурак». Не надо так :)

        Вы что-то имеете против абстракций? Вы знаете досконально, как устроен каждый агрегат автомобиля? Большинство просто поворачивают ключ и едут.

        Абстракции же бывают разными. Я много чего имею против неочевидных абстракций. Они для понимания требуют подготовки, и преподносить на уроке их как первое блюдо, значит, сбить обучаемого с толку. В современном автомобиле, кстати, таких абстракций как раз практически нет — все элементы управления выполняют прямое назначение. Руль для поворота влево-вправо, селектор для выбора, ехать вперед, назад или припарковаться, педалька для разгона, педалька для торможения. Всё просто и понятно. Да, с профессиональным ростом можно углубиться в детали реализации, но «пользовательский» уровень очевиден для восприятия. Критерий очевидности достаточно простой — если абстракцию можно объяснить известными человеку понятиями, она годится для использования на уроке. Если нельзя, то не годится.
        Вот, к примеру, абстракция writeln('Привет, Чебурашка') — хорошая. Она выводит текст на экран, школьник знает, что такое текст, что такое экран, и что такое Чебурашка. При этом нам не нужно опускаться на более детальный уровень процедур Паскаля, на реализацию ввода-вывода, и тем более до compiler magic, через который там реализована половина модуля system.
        А вот абстракция using namespace std отвратительна до безобразия. Для пояснения, что она делает, нужно проваливаться где-то на три-четыре уровня вглубь. Или вообще не пояснять, дескать, пока пишите, ибо так надо, потом разберём. И это не говоря уже о том, что в хелловорлде на С++ её вообще можно было безболезненно убрать.

        Вспоминать Паскаль (даже не синтаксис, а всевозможные нюансы) и устанавливать компилятор на 15 компьютеров ради одного урока?

        Ну вы-то зачем его проводили? Чтобы детям рассказать про программирование, верно? ИМХО, надо или делать качественно, или не делать. Тем более что вспомнить Паскаль или Бейсик на уровне вводного урока, это минут 15 надо. И ещё столько же, чтобы найти в интернетах дистрибутив того или другого и установить.
  • 0
    Ну да, за один урок много не освоишь. В целом неплохо, но без развития — толку мало…

    И мне кажется, что язык тут не особо важен и вообще не нужен (нужен только как инструмент)
    Важно умение работать с алгоритмами — в этом и суть информатики в школе.
    Поэтому итог №4 можно не включать))

    Булева алгебра, теория множеств, алгоритмы — вот, что нужно на уроке информатики.
    Возможно ещё какие-то другие основы из мат.логики…
    • +3
      Вот зачем мне в школе булева алгебра или двоичная система в тетрадке? Без понимания, куда это всё приткнуть? А у нас уроки были именно такие, и в ВУЗе аналогично – абстрактные бесполезные программки на QBASIC, которые за меня писали одногруппники за пиво.
      Когда мне это (гораздо позже) понадобилось в жизни – написал калькулятор/конвертор и забыл, а сортировку посмотрел в педивикии.
      Инструмент важен, чтобы не превозмогать героически C-подобный синтаксис, а смочь быстро закодироваь любой алгоритм.
      А школьникам, полагаю, было бы интересно сделать какую-то простенькую игру. Графическую, ибо ввод/вывод текста, когда у всех уже стартфоны, выглядит несколько неуместно.
      • 0
        Вот зачем мне в школе XXX? Без понимания, куда это всё приткнуть?

        Вместо XXX подставляем по очереди дисциплины и их части и ищем обоснования.

        Проблема в подходе к образованию, а не в самой области знаний.

        • +1
          Незнание физики или химии может привести к болезненным последствиям, а то и в мир иной, например.

          А вообще, да: «Я никогда не позволял школе вмешиваться в моё образование», Марк Твен.
          • +1
            Мы же говорим про средних учеников?
            В идеале. конечно, школа не нужна — ребёнок сам легко освоит школьную программу к 14 годам. А родители легко помогут ему в сложных моментах, подскажут/направят. Только это в идеале, а не в реальности…

            Ну и по поводу знания современными школьниками химии и физики: очень сомневаюсь, что хотя бы половина учеников способна пересказать хоть какую-нибудь тему из курса физики/химии…
            • 0
              Пересказать-то темы они могут (примерно 3/4 старшеклассников имеет нормальнцю память и навык заучивания). а вот понимают темы — единицы. Ну а как иначе, если на физике за 5 лет преподавания — учителем продемонстрировано три опыта… и это — на физике!!!.. Где опыт можно демонстрировать на «подручных материалах» к больше чем половине тем.
              • 0
                А если усложнить задачу?))
                Пересказать тему через год после окончания обучения.
                Поднимается ведь вопрос о том, чтобы знания остались на всю жизнь, т.к. их отсутствие «может привести к болезненным последствиям, а то и в мир иной».
                • 0
                  да, пересказывают. И чкерез больше — пересказывают. но если не понимают — все это бесполезно. ибо боятся, что «блок питания на 19 вольт 4,7 ампера сожгет ноутбук потому, что на ноутбуке написано 19 вольт 3.2 ампера».
                  И бесстрашно суют пальцы в блок питания без гальванической развязки потому, что на нем написано 12 вольт… удивляются в конце концов размороженной бутылке пива, потому, что «это же не вода, а пиво»
                  и дна известная картинка про закон ома даёт больше, чем целый урок объяснений им заучивание формул…
                  • 0
                    Пересказ без понимания… Интересно… Не могу представить…
                    Зубрёжка с периодическим повторением? Ну таких же не бывает?
                    • +1
                      Ну почему же? бывают… у самого в голове свалка из разных литературных творений (разных там пушкиных-лермонтовых-есенинвх-достоевских-тургеневых), исторических фактов (история РСДРП, например :-). или состав группы ОсвобождениеТруда: Плеханов-Игнатова-Засулич-Дейч-Аксельрод :-)))
                      В детстве память эффективно работает…
                      • 0
                        Ну какие-то факты/истории/персонажи — это нормально, что оседает в голове, особенно из гуманитарных наук. В технических тоже могут быть интересные факты, персонажи, даже какие-нибудь формулы…

                        Но тема из учебника по технической дисциплине (физика/химия), это надо было заморочиться вызубрить, да ещё как-то закрепить (например папа с мамой поспрашивали, потом урок перенесли, пришлось повторять, а потом ещё и в вузе повторно и при этом так и не попытаться понять...)
                        Но это же удивительная редкость…
                    • +2
                      10-й класс, алгебра. Моя соседка по парте, тихая троечница, пишет на доске мудрёное доказательство какой-то теоремы. Пишет, пишет. Учительница смотрит внимательно и говорит: «Алина, вроде всё нормально, но что-то я не пойму, как ты это получила из вот этого?». Алина посмотрела внимательно: «Ой, я тут одну строчку вписать забыла».
                      Вот так это и бывает :)
                      • 0
                        В школе — бывает, не спорю, видел.
                        А вот вызубрить тему из учебника по физике, да чтобы на всю жизнь и без понимания…
                        • 0
                          это ничем принципиально не отличается от зазубривания «что думал белинский о гоголе, когда пил водку в компании тургенева, вспоминающего высказывания лермонтова о пушкине». Для одних муть — это «дуб в романе Война и Мир», для других муть — валентность кислорода, закон ома, теорема косинусов или двоичное счисление… одни восхищаются стихами пушкина, другие стенами колизея. третии — картинами васнецов, четвертые делением клеток, пятые — картой карно…
                          но это ничуть не запрещает запомнить другое…
                  • 0
                    12 вольт

                    Вы имеете в виду, что забывают про первичную обмотку?
                    • 0
                      нет, я имею ввиду бестрансформаторные блоки питания, типа
                      схема
                      image
            • 0
              Много раз било током. Лет с 10. Пока жив и местами здоров. Главное, грубо говоря: два пальца одной руки в розетку можно, пальцы разных рук – нельзя. Это физика, но на бытовом уровне, без которой трудно, а закон Ома и прочий корпускулярно-волновой дуализм – может быть, полезно и интересно, но совсем необязательно. Или вот: метанол пить нежелательно, а этанол – совсем другое дело. (только не повторяйте опыт с пальцами дома)
              • 0
                если стоите на влажном полу — вам может хватить и «одного пальца в розетку».
                а при прохождении под ЛЭП во время дождя с лопатой на плече — может быть достаточно и совсем не касающейса провода лопаты… я уж не буду рассказывать про спазм гортани от того, что пацаненок лизнул «крону»…
                • 0
                  я уж не буду рассказывать про спазм гортани от того, что пацаненок лизнул «крону»…

                  А мне, пожалуйста, расскажите. Каков механизм этого процесса?
                  • 0
                    Да ничего сложного. Лизнул «крону», папа дал подзатыльник, пацан подавился батарейкой, ну а дальше спазм гортани, травмпункт, и месяц освобождения от физкультуры.
                  • 0
                    механизма не знаю. знаю, что он лизнул, распух язык, а затем спазм гортани. скорая подумала, что приступ астмы спровоцирован аллергически, привезли его в аллергоотделение. но аллергии выявлено не было (что вообще было крайне редким случаем), повторных приступов тоже. даже в разговорах между нами, пацанами он рассказывал, как это происходило…
                • 0
                  Мой личный рекорд – 30 000 В – я получил как раз «дистанционно». Но вряд ли это коснётся тех, кто просто решил починить люстру. А так-то, да, нюансов куча, где-то читал, что сопротивление кожи одного конкретного человека может меняться на порядки просто от настроения.
                  • 0
                    Мой личный рекорд — 220В, но в полтора года. Ничего, остался жив, и сразу понял, зачем нужна изоляция.
        • +1
          Вот зачем мне в школе булева алгебра или двоичная система в тетрадке? Без понимания, куда это всё приткнуть?

          А надо с пониманием. Вот как интегралы, один учитель заставляет зубрить формулы а-ля «интеграл от е в степени икс равен е в степени икс плюс константа», а другой сперва поясняет на практическом примере: «как бы вы посчитали площадь вот этой хитровымудренной фигуры?»
          Так же и булева алгебра, её можно преподавать по-разному, и интересно, и бестолково. Но я согласен с тем, что начинать изучение компьютера с булевой алгебры — моветон из прошлого. Это все равно, что начинать обучение вождению автомобиля с изучения тактов ДВС.
          UPD. Немного промахнулся с постом, на который отвечал :)
          • 0
            Из области мечт: то перед началом любого обучения хорошо бы знать, понадобится ли эта дисциплина индивиду в будущем.
            А то ведь может статься, что форму интеграла вспомнит только когда скрутит его из проволоки, чтобы достать ключи из унитаза.
            • 0
              Да к школе немного другие требования. Там наоборот, должны показывать «всего понемногу», чтобы ребенок уже сам выбирал, что ему интересно, и кем он хочет стать. И в будущем, когда уже определится с направлением, хоть что-то понимал в других сферах, например, в высшей математике, если вдруг надо будет достать ключи из унитаза.
              • 0

                100% согласен!
                Именно задача школы и учителей показать на сколько многогранен мир.
                И по возможности показать как данными знаниями можно пользоваться, путь даже в качестве приспособления для доставания из чего там… ;)

            • +1
              Из области мечт: то перед началом любого обучения хорошо бы знать, понадобится ли эта дисциплина индивиду в будущем.

              Это после изобретения машины времени только…

              А так я уже сталкивался с детьми «Я буду спортивным тренером, мне не нужна ни математика, ни история… вообще ничего кроме физкультуры»
              • 0
                Потому и из области мечт, наравне со специально выведенной породой людей под определённые задачи…

                Но школьник – это всё же уже не бестолковое нечто, которое не может определиться, чем оно хочет заниматься в дальнейшем, и хочет ли вообще. То уровень ясельной группы детсада. А у нас принято всех под одну гребёнку, и в школе, и в ВУЗе.
                • +1
                  Потому и из области мечт, наравне со специально выведенной породой людей под определённые задачи…

                  «О дивный новый мир» Хаксли?
                  Мне нравится)) Все заняты своим делом, все счастливы.
                  Кто выпадает — отправляйся на остров, там делай, что пожелаешь))

                  То уровень ясельной группы детсада.

                  Вы слишком высокого мнения о детях. Единицы к 9му классу определяются с вопросом «чем хочет заниматься в дальнейшем, и хочет ли вообще.»
                  • 0
                    Не, я как раз довольно низкого мнения о детях и о людях в целом. Но, к счастью, встречал множество исключений. И пока кто-то не может определится, кто-то уже давно определился и делает первые успехи, а ему: «Учи интегралы, гадёныш!». Вот так таланты и пропадают.
                    • 0
                      Это что за таланты такие, для которых интегральное счисление не нужно?
                      • 0
                        Выше говорили про парнишу, которому не надо ни истории, ни математики, только физ-ру подавай. Тренером хочеть быть. И зачем спортсменам и прочим гуманитариям интегралы на самом-то деле?
                        • 0
                          Тот конкретный пример — это была девочка, в 5-ом классе. Ей не интегралы были не нужны, ей нужно было вялую 4 вместо еле-еле 3 по математике…

                          Мне кажется проблема в делении людей на категории. Есть базовые вещи, которые должны знать все, специализация не начинается с первого класса.

                          Можно выдумывать бытовые и специализированные задачи, когда нужны какие-то знания, а можно рассказывать про великих спортсменов, которые дают автографы «Никогда не здавайся!»…
                    • 0
                      Не, я как раз довольно низкого мнения о детях и о людях в целом.
                      Странно… Вот же было высказываение:
                      Но школьник – это всё же уже не бестолковое нечто, которое не может определиться, чем оно хочет заниматься в дальнейшем, и хочет ли вообще. То уровень ясельной группы детсада.
                      Где тот, кто к школе не определился с целями — это бестолковое нечто, а никак не обычный ребёнок…

                      Как-то не увязывается в единую систему…
                      • 0
                        Как-то не увязывается в единую систему…


                        Если человек к 9-му классу решил стать (или остаться) быдлом – это всё же его осознанное решение. Именно поэтому я не считаю его бестолковым (в смысле не способным к принятию решений). А нравится ли это решение вам или мне – вопрос десятый.
                        • 0
                          А, вот как… Вы считаете, что если к 9-му классу человек не определился с целями, то он решил остаться быдлом.

                          У меня по ходу обсуждения сложилась такая картинка:
                          1)Есть люди которые определились с целями и для достижения целей нужны действия.
                          2)Есть люди которые определились с целями, и цель их — бездельничать.
                          3)Есть люди которые не определились с целями

                          У меня проценты распределяются так:
                          1) 3%
                          2) 3%
                          3) 94%

                          Вы же считаете, что множество 3) входит в 2)
                          Тогда да, всё хорошо сложилось. Вопросов больше не имею))
                        • 0
                          Дело в том, что жизнь — штука сложная. В 9-м классе определился, а в институте что-то пошло не так, пришлось переопределиться. Или уже после института — такое тоже бывает. На такой случай полезно иметь запас знаний. В первую очередь — касающихся умения считать, потому что это пригождается гораздо чаще, чем думает школьник не сталкивавшийся с практическими задачами.
                          • 0
                            Вот нам даже пример есть, как меняется выбор к институту.

                            Могу и про свою жену рассказать: 10 лет художка, 1,5года учёбы на архитектора, переоценка, теперь педагог-психолог инклюзивного образования.
              • 0
                В моём университете тренер, когда рассказывал как правильно делать упражнения, делал отсылки к сопромату, разделам про сжатие/изгиб стержней. Ведь позвоночник — это тот же стержень (в каком-то приближении) и есть большая разница работает он на сжатие или на изгиб.
                • 0
                  Да, опорно-двигательный аппарат – такая же механическая система, как и окружающие нас бездушные железки. Но чтоб сломать человеку руку или ногу совсем не обязательно рисовать эпюры)
                  • 0

                    Есть такая система рукопашного боя "Система Кадочникова". В видео про нее кончено преувеличивают, но идея там хорошая. Подход основан на принципах механической физики — рычаг, сила, точки опоры, степени свободы.

                    • 0
                      Да, он ещё предлагает почитать учебник по механике, когда спрашивают, в чём его секрет. Такой себе капитан очевидность. А достаточно просто себя пощупать, чтоб за мясом разглядеть эти рычаги)
                      • 0
                        Это Вам достаточно. А достаточно ли тому, кто не знает физику?
                        • 0
                          Смотря, для чего. Для причинения увечий – более чем. Вы ведь не думаете, что у чётких ребят на районе есть степени физмат наук?
          • 0
            Но я согласен с тем, что начинать изучение компьютера с булевой алгебры — моветон из прошлого. Это все равно, что начинать обучение вождению автомобиля с изучения тактов ДВС.

            Тут важно определить, чему учат на информатике. Компьютером пользоваться? Тогда программирование исключать надо, лучше сделать упор на табличные и текстовые редакторы.

            «Изучение компьютера» в школах сейчас очень странное.И мне очень сильно кажется, что начать с алгоритмов лучше…
            Ну и логика/множества/алгоритмы — это не ДВС, это более общие вещи, более глобальные…
          • +1
            вообще, на мой взгляд — преподавать естественные науки и математику так, чтоб было непонятно «куда приткнуть» — весьма сложно. Это нужно быть весьма опустившимся субьектом (коими, впрочем, является изрядная часть школьных учителей). понимаю, что на меня могут обидеться, но тем не менее — если учитель работает в режиме «говорящей головы» (да при этом еще часть головы занята мыслями «а что мои дети сегодня на ужин жрать будут») — увы, это опустившийся препод.
  • +4
    Странная манера преподавания программирования… По-моему, кроме как в программировании, подобного подхода никогда не придерживаются при обучении чему угодно!
    Представьте себе вводный урок по первой помощи: давайте придушим котенка и будем делать ему искусственное дыхание! Молодец, Маша, котенок ожил. А Петя, увы, не справился — котенок сдох, а все потому, что Петя… (далее сложные медицинские термины).
    Или вводный урок токарного дела: дети, вот эта кнопочка включает станок. А теперь все берем заготовку, зажимаем в патроне и вытачиваем кеглю. Молодец, Петя, был аккуратен и резец всего-лишь лопнул. А вот Маша допустила ошибку, и кусок резца распорол Васе лобик…
    Примеров можно приводить сколько угодно: ничему не учат с конкретных примеров на первом уроке! Да и на втором тоже…
    И только в программировании принято обрушить на голову ушат совершенно непонятных сведений, и считать это успешным, если BSOD ни у кого не появился…

    Программирование — это не склеивание соплями «знаний» кусков из странных английских слов и непонятных символов. Программирование — это на 99% алгоритмизация, и на 1% все прочее. Если мысли в голове, как скакуны, если перед началом работы нет понятия, КАК решать задачу, объяснить, нахрена при решении нужен цикл или еще что-то, будет невозможно.

    Я бы рассказал о том, что такое решение задачи с точки зрения программиста. Как задачу следует ставить, как разбивать её на подзадачи и зачем, что такое логическая оптимизация и зачем она нужна… Да, это более скучно, но результативнее. А после вышеописанного урока в самом идеальном случае мы получим в классе 1-2 новых «индуса», а в худшем — все ученики скажут «ну и хрень эта ваша программирования»… Оба результата успехом преподавателя никак назвать нельзя.
    • 0
      Как задачу следует ставить, как разбивать её на подзадачи и зачем, что такое логическая оптимизация и зачем она нужна

      Т.е. полгодика сидеть слушать препода, а потом показать настоящий компьютер? Почему бы просто сразу не объяснять, как делать правильно, а как — нет?

      • +1
        Любую информацию можно (и нужно, особенно для детей) преподносить интересно и увлекательно. Вы же учились вождению автомобиля? Вас сразу посадили за руль, и на городских улицах вам рассказывали, как делать правильно, а как нет? Это ведь гораздо интереснее, чем сидеть и слушать препода…
        Меня мой преподаватель в ВУЗе с первого занятия на первом курсе увлек, хотя в пору моего обучения плановое «посещение дисплейного зала» было только в конце второго семестра ТРЕТЬЕГО курса…
        А сейчас в школе информатику изучал сын. И мы вместе ржем над тем, как это делается.
        Рассказанное в статье — лучше, чем существующее, но лучше только на чуть-чуть.
        Почему-то все считают, что обучение детей — это то же самое, что обучение взрослых, только чуть-чуть проще. А на самом деле все гораздо сложнее…
        • 0
          > Вас сразу посадили за руль, и на городских улицах вам рассказывали, как делать правильно, а как нет

          Именно так меня и учили. Инструктор убедился, что я глохну не каждый раз, и мы поехали в город. Уже больше пяти лет безаварийного стажа.
          Разумеется, один пример не тенденция, но такой подход тоже имеет право на жизнь.

          Программирование я, кстати, изучал примерно так же, когда меня внезапно отправили на олимпиаду, потому что я мог нарисовать хелловорлд в редакторе форм вижуал бейсика.
      • +1

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

      • 0
        Т.е. полгодика сидеть слушать препода, а потом показать настоящий компьютер? Почему бы просто сразу не объяснять, как делать правильно, а как — нет?

        нет, можно сразу посадить за компы, а потом смотреть как они тупо смотрят в экран и не могут сделать нахождения НОДа
        Проходили знаем ;) с первого дня кричат скорей за компьютеры, а после самые крикливые на практике не то что "игрушку", а просто ноль знаний.

        • 0

          Мой личный опыт и наблюдения говорят совершенно об обратном.

          • 0

            Ну значит вам не сказано везет, коллега :)
            за 25 лет пед работы, в практике мало кто прямо с компа понимал программирование, студенты еще более менее, а школьники единицы

    • +1
      В программировании последствий нет.
      Котята не умирают, люди не страдают, заготовки не ломаются…

      Для врачей есть специальные тренажёры — и это очень круто, когда можно что-то попробовать, без риска убить…
      Авиасимуляторы — аналогично, очень полезно.
      • 0
        Вижу минус. Давайте расскажу подробнее. (Я вообще-то открыт к дискуссии, если я ошибаюсь — давайте обсудим.)

        Я писал комментарии к высказыванию
        По-моему, кроме как в программировании, подобного подхода никогда не придерживаются при обучении чему угодно!
        Представьте себе вводный урок по первой помощи: давайте придушим котенка и будем делать ему искусственное дыхание! Молодец, Маша, котенок ожил. А Петя, увы, не справился — котенок сдох, а все потому, что Петя… (далее сложные медицинские термины).
        Или вводный урок токарного дела: дети, вот эта кнопочка включает станок. А теперь все берем заготовку, зажимаем в патроне и вытачиваем кеглю. Молодец, Петя, был аккуратен и резец всего-лишь лопнул. А вот Маша допустила ошибку, и кусок резца распорол Васе лобик…
        Когда человек пишет первый раз пишет программу — он ошибается, он не должен написать её сразу правильно. Если он ошибётся — у него есть возможность исправить ошибку — последствий никаких.
        Когда человек первый раз вытачивает деталь и делает ошибку — портится заготовка (без учёта опасностей работы с оборудованием)
        Когда человек первый раз спасает котёнка и делает ошибку — погибает животное.

        Давайте ещё примеры придумаем:
        Человек первый раз произносит слово на иностранном(или родном) языке (читает слово, например) и делает ошибку, его поправляют и он может исправить ошибку. Последствий нет.
        Человек первый раз суммирует два числа, ошибается, ему указывают на ошибку. Последствий нет.
        Человек садится за авиасимулятор, делает ошибку на взлёте. Но никто не разбился. (а это может быть первым шагом к освоению професии лётчика)
        ну и т.д.
        Попробовать что-то в ситуации, когда нет опасных последствий — это не плохо.
    • 0
      Если в распоряжении всего один урок, то как бы хорошо ты не объяснил процесс обдумывания решения, ученики забудут все со звонком, потому что это скучно. Да и не на один урок это. Мне вот алгоритмы (без привязки к программированию) преподавали всю начальную школу.
      Автор поставил задачу показать аспект кодотворения, причем упор сделал на результат: мы написали эти, пока ещё не совсем понятные нам 15 строк кода, и теперь компьютер может загадывать числа и подсказывать нам.
      10 класс – это конечно уже поздновато начинать с программированием, но, вспоминая себя где-нибудь в 6-7 классе, могу сказать, что меня это точно заинтересовало бы и вот тогда я бы уже хотел учиться.
    • +2
      Странная манера преподавания программирования…

      Фраза для привлечения внимания?

      давайте придушим котенка и будем делать ему искусственное дыхание!

      Нет, давайте отгадаем число, которое загадал компьютер!

      ничему не учат с конкретных примеров на первом уроке! Да и на втором тоже…

      Ну, не было у меня второго урока. И третьего, и десятого. Были бы — не было бы статьи.

      И только в программировании принято обрушить на голову ушат совершенно непонятных сведений

      Не знал. Информация 100% верна?

      если BSOD ни у кого не появился

      Вот-вот, на втором уроке я бы показал, как перейти в нулевое кольцо защиты процессора и как обрушить ядро ОС Windows NT.

      Программирование — это не склеивание соплями «знаний»

      Согласен. Зачем вы это мне говорите?

      странных английских слов

      Не понимать, что ви говорить.

      Если мысли в голове, как скакуны

      МОИ мысли — МОИ скакуны!

      нахрена при решении нужен цикл

      Я вроде бы объяснил. Если не поняли — прочтите заново.

      Я бы рассказал о том, что такое решение задачи с точки зрения программиста.

      Расскажите, пожалуйста. Я ведь не программист.

      после вышеописанного урока в самом идеальном случае мы получим в классе 1-2 новых «индуса»

      Вау! Это круто! Тогда мне пора развешивать объявления «Научу индусскому коду за один сеанс» и грести бабло лопатой. На самом деле нет, после вышеописанного урока мы не получим 1-2 новых «индуса».

      все ученики скажут «ну и хрень эта ваша программирования»

      Возможно, спорить не буду.

      Оба результата успехом преподавателя никак назвать нельзя.

      Пойду напьюсь безалкогольной водки в компании воображаемых друзей.

      • 0
        Пойду напьюсь безалкогольной водки в компании воображаемых друзей
        судя по вашей реакции даже не на критику, а на мнение со стороны, вам ничего другого и не остается.
        • 0
          Котёнка №2 и Васю жалко.
    • +1
      Программирование — это на 99% алгоритмизация, и на 1% все прочее

      Вам, видимо очень повезло с работой. За четыре года работы разработчиком могу сказать: программирование, это на 0.000001% алгоритмизация.
      • –3
        Я вообще не программист по роду основной деятельности. И, возможно, я не прав, но кодирование — это не программирование. Это примерно как копание земли — не архитектура. Как только программист подготовил алгоритм, вступает в работу землекоп-кодер.
        • +3

          Совершенно не правы.

        • +3
          Вы даже не представляете себе, как сильно ошибаетесь.
          землекоп-кодер
          — это насколько высокомерным надо быть, чтобы написать подобное?
  • 0

    Александр как коллега к коллеге, а что это было? Курсы, плановые уроки, факультатив, лагерь и будет ли продолжение.
    Полностью согласен с DrPass для первого урока это жестоко, даже первокурсники которые С и С++ не видели будут плакать, а тут школьники. Все же разумнее сначала познакомить с алгоритмами и примерами на Питоне или Паскале. Потому что все что не понятно человек обычно забывает или пугается этого.
    Да и для первого знакомства с языком можно использовать браузерные версии в сети, во первых проблем с настройками среды не будет, а во вторых с локализацией возиться не надо.

    • 0
      День добрый, коллега! Это у десятиклассников такой вид практики. Ходят в университет, а преподаватели (в добровольно-принудительном порядке) читают лекции и проводят практические занятия, кто в чём горазд. Причём, так как это политех, то предметов — уйма. Из плюсов — школьники смотрят, что им нравится, а что нет; могут определиться за год, куда поступать и какие для этого нужно сдавать экзамены. Из минусов — действительно, за один урок ничему не научишься, 99% полученной информации улетучится после выхода из аудитории. Но в целом, нужно смотреть на такой вид практики в комплексе. Что включает и тематику материала, который был представлен, и манеру преподавания, и много других вещей, которые сходу не сформулируешь. Главное — чтобы у школьников осталось какое-то чувство, типа, это моё, может, стоит задуматься на счёт этого, а вот это — точно не моё.
      • +1

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

        • 0
          Надеюсь, для меня это мероприятие было разовым.
          Не было у меня возможности ни дать домашнее задание, ни даже прочитать вводную лекцию. Звыняйтэ.
          По поводу ЯП — использовал лучшее из того, что было.
          Я тоже изверг и заставляю студентов рисовать.
          • 0

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

        • 0
          А как нынче обстоит с паскалем? Я, помнится, в начале 2000-х столкнулся с этим языком и был очень озадачен поисками такого Паскаля, который бы встал на винду, а не на виртуалку с досом.
          • 0

            Сейчас в качестве учебного используем PascalABC.NET косяки конечно найти можно но для своих целей вполне подходит.

  • +2
    Подключения, пространства имен, локали, непонятный волшебный мейн, какой-то ретурн — ужасно много «шума». Студенты такие вещи только после получения диплома иногдапонимают, а тут школяры.
    Наверное лучше был бы JS или специальный язык для обучения, который позволяет ошибаться и пропускать некоторые моменты.
    • +3
      лучше был бы JS или специальный язык для обучения

      JS, в котором вычислять 1+'1'?
      Это ещё более жестоко.
      Да даже Паскаль был бы лучше (про Питон уже говорили).
      • –1
        Да, конечно в JS ям тоже много, но к ним еще нужно прийти.
        Простой пример:
        console.log('Привет Мир') 
        

        и программа готова. Либо:
        #include <iostream>
        // Десяток строк спустя...
        cout << "Привет мир" << endl;
        // Еще парочка малопонятных строк
        


        Питон не знаю, меня всегда раздражало влияние правильности моей программы в зависимости от того, сколько я поставил пробелов. Мне кажется, детям тоже это тяжело объяснить почему один код работает, а другой нет.
        • +1
          меня всегда раздражало влияние правильности моей программы в зависимости от того, сколько я поставил пробелов. Мне кажется, детям тоже это тяжело объяснить почему один код работает, а другой нет.

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

          • 0
            Это нормальное явление. Я сам врубился, зачем форматировать код, только когда написал программу с исходником более 5 кб. Пока размер исходника не превышает 1-2 кб — потребности форматировать не ощущается и, следовательно, её никак не вдолбишь. Это надо прочувствовать.
            • 0
              форматирование бывает разное.
              в фортране оно вообще не предусматривалось. в бейсике (в тех версиях, где строки нумеровались) — своеобразное форматирование получали нумерацией строк.
              в макроассемблерах — локальными метками.

              кстати, после прочтения ВанТассела, своеоьразно структурированный и легкочитаемый код в стиле «без гоуту» стал даже в ассемблерах…
        • +1
          Признаюсь честно. Меня то же долго отпугивали эти пробелы. А потом мне понадобился Python и я решил, что нужно взять себя в руки. И случилось странное. Меня это абсолютно никак не напрягло. А с учетом того, что отслеживать ничего самому не нужно, все это отлично делается тем-же PyCharm, так вообще все пошло как по маслу.

          Вас же в C-подобный языках фигурные скобки не смущают? И выравнивания вы все-равно делаете. И, я так подозреваю, делаете это зачастую средствами IDE. С пробелами все точно так-же.
        • 0
          но к ним еще нужно прийти

          Не так уж далеко идти:
          function f2c(f){ 
           return (-32 + f) / 1.8; // Да, если написать f - 32, всё будет нормально  
          }
          f = prompt("Температура по Фаренгейту", 0); 
          console.log(f2c(f));
          
          

          • 0
            Ну, а в си необходимо будет объяснять детям почему 7/2 = 3. Все языки имеют свои ямы, только в js можно сесть и поехать, а в си можно копаться с магией полдня чтобы вывести 2 строчки на русском.
            А для одного урока как раз важен быстрый старт.

            Вспомнил о своем опыте — в классе 11 учился на игре программируемых танчиков, не помню названия. Это был си-подобный язык с основными конструкциями. Было интересно видеть как только что созданный бот сам перемещается, сам стреляет. А пока пишешь бота, попутно изучаешь код — условия, циклы, расчеты, функции. Сейчас есть нечто более симпатичное: codingame.com (или люой код-раш)
            • 0
              для детей есть и всякие Скрэтчи и иже. есть веб-версии. есть даже для ардуин.
  • 0
    Вполне допускаю, что при первом объяснении материала не нужно разъяснять все тонкости, но давайте хотя бы называть вещи своими именами. По тексту несколько раз заголовочный файл назвали библиотекой.
    • 0
      Признаю.
      А вот трактовки терминов получились довольно вольными.
      Мы-то знаем, что такое заголовочный файл. Знаем, где он хранится на диске, и что в нём находится. Но опять же, тянем за верёвочку и мы будем обязаны объяснить, что функцию до использования нужно объявить, чтобы компилятор знал о количестве и типе передаваемых параметров, да и много других вещей (именованные константы, пользовательские типы данных, директивы препроцессора). А это в свою очередь, тянет за собой ещё кучу материала. В условиях ограниченности времени пришлось этим пожертвовать. И в статье я хотел это показать — «смотрите, я сказал неправильно, но при этом минимизировал вред неокрепшей детской психике».
      • 0
        Но опять же, тянем за верёвочку и мы будем обязаны объяснить […]

        Подробные объяснения можно опустить. Достаточно сказать: это — заголовочный файл, его нужно подключить для того, чтобы использовать все, что в нем объявлено.


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

        • 0
          Полностью с вами согласен. Но, что сказано, то сказано. Читающие это, не повторяйте моих ошибок! :)
  • 0

    Присоединяюсь к комментаторам, которые говорят, что это было мило но бесполезно. У вас был всего один урок для того, чтобы ребята поняли, что программирование — это не удел каких-то высоколобых гениев. Вы им показали обратное. Что я бы сделал, попав в такую ситуацию? Вместо программирования научил бы ребят за урок рисовать простые html странички. Это был бы некий импульс, которым они могут воспользоваться дальше сами. А давать им плюсы — значит не вызвать ровно никакого интереса. Ещё можно было дать им простеньких скриптов на php.


    Кстати, это камень не в сторону школьников. Они ровно такие, как должны быть. Их надо заинтересовать и показать, что они что-то могут сами, чтобы дальше они изучали самостоятельно предмет — в этом и есть миссия преподавателей.

    • +1
      Вместо программирования научил бы ребят за урок рисовать простые html странички

      Не, не. Вместо рисования простых хтмл страничек я бы научил ребят ухаживать за ёжиками. А ещё лучше — копать яму. Просто, понятно и практическая польза есть…
      Господа, вы совершенно напрасно считаете детей идиотами не способными к логическим выводам и абстрактному мышлению. Выбор языка, возможно, не самый удачный но вот я, к примеру, учился программировать на калькуляторе б3-34 в 7-ом классе. А учительница математики-информатики, которая мне его подсунула, так и не осилила эту магию :)

      • +1
        Выбор языка, возможно, не самый удачный но вот я, к примеру, учился программировать на калькуляторе б3-34 в 7-ом классе

        Ну так наоборот, вам достался самый простой для понимания инструмент, который выполняет ровно то, что ему написали в программе, без каких-либо дополнительных неочевидных действий. По простоте для обучения программированию Б3-34 и всякие остальные МК-61/52 уступали разве что «Луноходу» (который был у некоторых особо примажоренных советских детей).
        • 0

          Стековая машина и обратная польская нотация — далеко не самый простой для понимания вариант. Я встречал тогда порядком людей, которые программировали на паскале и алголе на бэсм-6, но не могли понять как победить эту странную машинку. :)

          • 0
            Стековая машина и обратная польская нотация — далеко не самый простой для понимания вариант.

            Программа — это всего лишь порядок действий для достижения цели. С точки зрения будущего программиста нет особой разницы, закидывать цифры в стек и делать там арифметические операции, или гонять черепашку по экрану командами «влево на 10», «опустить перо», «вверх на пять». Или луноход по комнате. Ключевой момент тут в том, что калькулятор непосредственно выполняет команды по программе, совсем так же, как если бы их вводил человек в диалоговом режиме.
            • 0

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

              • 0
                Не?

                Не.
                Пример как раз в обсуждаемой статье. Вот программа, которая генерирует случайное число и выводит его на экран.
                image
                Из 11 строчек кода не считая пустых строк:
                — три содержат подключения библиотек
                — одна подключает пространство имен
                — три строчки — синтаксическая рамка для программы
                — одна строчка делает какую-то магию для устранения кракозябр
                — одна строчка делает какую-то непонятную фигню для операционной системы
                — наконец, две (меньше десяти процентов кода!) делают что-то непосредственно относящееся к генерации числа и выводу на экран, но и то, каким-то магическим способом.
                У лунохода нет ни синтаксических рамок, ни библиотек, ни магии. Команда «вперед» двигает его вперед. Программа, генерирующая случайное число на МК-52, тоже содержит вполне себе очевидный код:
                К сч

                Согласитесь, несколько нагляднее и проще для понимания, чем на С++?

                Тем не менее, практика показывает, что концепция обратной польской записи и стековой машины сложны для понимания довольно большим количеством людей

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

        Дети-то способны к чему угодно. Я о том, что детей нужно заинтересовать. А чтобы заинтересовать — нужно показать некий интересный практический пример, который они смогут развивать.


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

  • +1
    А почему C++?
    По моему первым языком программирования должен быть язык с развитым REPL. Обучение пойдет проще, и они сразу смогут использовать его как продвинутый калькулятор.
    • 0
      Я сначала мельком прочитал как PERL, и подумал, что Вы ненавидите детей)) Но перечитал слово и успокоился.
  • 0
    … седьмую строку опустим вниз (поставим курсор в начале строки и нажмём Enter). И в пустой седьмой строке введём setlocale(LC_ALL, «rus»); А во второй строке введём #include locale. Кто-то LC_ALL написал строчными буквами (пришлось объяснить, что строчные и заглавные буквы отличаются...


    Такой подход в духе «спишем с доски» не очень работает (по личным наблюдениям). В таких примерах много магии. Что такое LC_ALL? — макрос. А что такое макрос? А вывод в консольку… Человек, который раньше не занимался программированием, не поймет, что такое потоки, и тем более как работает конструкция с оператором "<<" в количестве более одного. Даже я, вроде бы был знаком со всем этим (с конца 9 класса — С, потом С++, да и в институте что-то было), последние пол года-год не видел толком этих языков и не сразу сообразил, что откуда должно вернуться, чтобы это сработало.

    Так что на мой взгляд нужно начинать с того, чтобы всю эту магию как-то развеять. У нас в школе это происходило вот таким образом. Разумеется, со временем класс разделился на тех, кому это нужно, и на тех, кому больше интересна физика (у нас был физмат), но тем не менее — подход работает. При этом не возникало какой-то мысленной привязки к языку, со временем каждый пробовал то, что ему больше было интересно. Да и задачки хоть и были сначала далекие от реальности, но тем не менее интересные (а после того, как у меня получилось вывести на экран множество мандельброта с возможностью зумить я уже не мог оторваться от процесса).
  • 0
    Человек, в отличие от технологий, особо не изменился за сотню лет. Продолжайте, именно в возрасте 8..9 класса самое то время, когда усваиваешь все подряд.
    Да, большинство не вынесет тягот обучения — заскучает, но вы откроете другой части глаза в мир программирования и в будущем они скажут вам большое спасибо.
  • –1
    Первый вопрос: Вы относитесь к тем, кто считает С++ самым крутым языком программирования?
    • +1
      Нет, не отношусь. Тем более я на C++ не пишу и даже своим студентам пятого курса честно говорю — «я его не знаю!» (некоторые мои студенты знают его лучше меня). Что я думаю о нём? 1. C++ очень хорош. 2. Он оказал огромное влияние на развитие других ЯП. 3. Он в меру опасен. 4. Он очень распространён (множество проектов и разработчиков). Лучший ли он? Возможно, в каких-то областях. Будет ли он лучшим в этих областях спустя какое-то время — никто не знает.
  • 0

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


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

    • 0
      Интересный (я не уверен, что единственно правильный) — это взять задачу из жизни/специальности этих студентов и показать, как можно решение автоматизировать

      Хороший вариант :)
  • +1
    Поддерживаю Python, он хорош для целей обучения. А еще я бы советовал перенести задачи из плоскости «как бы это написать на этом языке?» (неважно какой) в плоскость алгоритмических или даже прикладных.
    Скажем составить UDP сервер-биржу, которая бы позволила выторговать балы или даже небольшие деньги. «Живые» задачи вызывают здоровый интерес, позитив, а у некоторых даже жажду знаний (желание заниматься этим в не учебное время).
    • 0
      Поддерживаю Python

      И я поддерживаю.

      Скажем составить UDP сервер-биржу, которая бы позволила выторговать балы или даже небольшие деньги. «Живые» задачи вызывают здоровый интерес, позитив, а у некоторых даже жажду знаний (желание заниматься этим в не учебное время).

      Не уверен, что десятиклассники за 1-1,5 справились бы с этой задачей. Более того, не уверен, что я бы справился.
      • 0
        Вы меня неправильно поняли, составить сервер нужно организатору а не ученикам.
        А им дать шаблон клиента (который позволит что-то добыть, общаясь с сервером по тривиальному протоколу)
        • +1
          А… Действительно, понял неправильно. Но это больше будет походить на урок по трейдингу, чем по программированию. Хотя, конечно, и там есть, где развернуться, чтобы реализовать какие-то алгоритмы (в биржах я не спец).
          • 0
            Насчет «урок по трейдингу» — несогласен, важно связать реальный мир с тем чем занимается ученик. Выводом символов на монитор и вводом с клавиатуры (примитивным IO) в 21-веке уже не заинтересовать, т.к скажем приложение у ученика на iphone делает это красивей удобней и лучше.

            Общая мысль получается «зачем программировать? — неинтересно».

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

            Насчет алгоритма, неважно какой он будет, скажем сервер запрашивает курсы обмена «бубликов на балы» и таких цифр много. В шаблон клиента можно внести не всю суть коммуникации сервера-клиента, а только алгоримическую функцию которая будет давать те самые курсы. А далее можно скажем давать подсказки как можно применить циклы или условия. Скажем «если бубликов более 10» — не продавать. Тут все ограничено фантазией)
    • 0
      Все-таки лучше изучать статически типизированный язык. Легче искать ошибки и лучше поддержка IDE.
      К тому же синтаксис python не очень удобен для REPL.
  • 0

    Статья в стиле "как превратить школьников в попугаев". Дайте сложный материал вместо простого, не объясняйте термины, учите их бесполезному, заставляйте писать под диктовку. Попугай готов!

    • +1
      Как я понимаю, у автора не было времени на подробные объяснения. Из моего опыта — в принципе это достаточно сложно заинтересовать группу детей чем-то изначально им незнакомым и неинтересным. Если была бы цель показать азы программирования часов за 40, то можно было бы двигаться «от простого к сложному» и «от теории к практике».
      • 0

        Можно подумать от сложного можно двигаться :) Начать с интегралов вместо арифметики чтобы заинтересовать группу детей? Ну да, конечно, мы всегда так делаем. А потом на крах системы образования пеняем.

  • +3
    Так как я одинаково сильно люблю и ненавижу C++, не поддерживаю загрузку в неокрепшие умы 15-17 летних такого сложного для освоения языка программирования.
    Поддерживаю Python как первый язык для школьников.
    Как второй язык после простого Python лучше выбирать перспективный Rust. Благо материала на русском языке уже достаточно.
    • –1
      почему не PHP?
  • +1
    Вы что-нибудь слышали о понятии «Дидактика»?
    Очень жаль, но именно такие «преподаватели» как вы, могут легко отбить всякое желание заниматься предметом.
  • +1
    идея с угадыванием числе — отличная мотивация, при случае воспользуюсь вашим опытом.
  • +1
    Один урок и на этом все. Больше уроков не будет. Здесь чтобы не показал (не важно что за наука) – толк не большой или вообще будет отсутствие такового.

    Но лично бы я больше запомнил пример про «угадай число», чем вывод надписи «сладкие пончики», но автор сумел «вместить» оба примера – РЕСПЕКТ.

    Но вот с объяснением что такое локаль, я думаю здесь перебор – ведь это всего лишь дети. Некоторые студенты первого курса IT специальности могли впасть в ступор ).

    — Уже пару лет назад в немалом количестве учебных заведений, первый язык программирования (Pascal) заменили на #C. Я с таким решением категорически не согласен:
    1) Простая программа на Pascal (hello word!) не имеет подключаемых модулей. Уже меньшее насилие над головой.

    2) Потом преподаватель объясняет, как можно очищать экран при выводе в консоль (модуль uses crt, и вызов процедуры ClrScr). Затем про цвет шрифта.

    3) Потом уже затрагивается тема потоков ввода вывода и постепенно далее.

    А если посадить школьника или первокурсника перед полнофункциональной средой разработки, то я не думаю, что многие бы не задумались что это за бред. Я был свидетелем как человек поступил на программиста и увидя воочию что это такое, сказал: я думал тут типа как рисовать в photoshop и т.д.

    PS: Я лично не рискнул бы за один урок показать и угадайку (идеи бы даже не возникло). Эх-х не рисковый я парень ).
  • +2
    За один урок научить программировать невозможно, но можно завлечь юные умы.
    А для этого важно не чем (С++, Python, C#, Pascal etc) завлекать, но как завлекать! Из данного урока ученики (совсем незнакомые с программированием) узнали много новых терминов, которые через неделю забудутся, и узнали, что программирование это «что-то написать, чтобы что-то написалось в черном окошке».
    Поэтому, наверное, в моем идеальном мире, где нет жесткого плана сверху, при неограниченных ресурсах, на уроке знакомства с программированием нужно показать, что решается и как с помощью программирования: фильтры в «инстаграммах» — программирование, ЧПУ и роботы-манипуляторы — программирование, видео игры, реалистичная физика, реалистичная графика — программирование, мама/папа работают с 1С — это тоже программирование, вконтакте/фейсбуки — программирование. Это ведь все можно интересно презентовать, программирование окружает нас повсюду.
    Нужно показать, не что в какой-то непонятной программе которую непонятно откуда взять Code::Blocks/VisualStudio etc нужно набрать непонятный текст и тогда что-то произойдет, но что, например, программирование всегда под рукой, и в школьном веб тестирование можно в браузере отредактировать страницу и показать преподавателю не 60 баллов а 100 баллов, что можно в повседневных продуктах MS Office можно открыть редактор макросов и сделать разные интересные и не очень вещи, что в компьютерных играх, а точнее в редакторах карт-сценариев тоже применяется программирование.
    Т.е. цель заинтересовать, а далее тем, кто заинтересуется и придет после школы, там и будет и матчасть, и структуры данных, и различные языки программирования от С++ до Python.
    • 0
      Как я сделал вывод тут все далеко не просто. А не просто в том что всего лишь один урок.
      Ваше предположение верно.
      Но вот как быть? что выбрать? Рассказать про ВКонтакте с ЧПУ и роботами-манипуляторами, или показать все воочию без теории? Вопрос спорный. Я сам ответа найти не могу найти. Но мое мнение что воспоминания буду дольше храниться о том. Что мы, когда то набирали НАСТОЯЩУЮ программу. Как бы парадоксально это не звучало.
  • 0
    Автору и всем кто поступает подобным образом.

    Есть такая умная мысль. Не все люди обладает чувством юмора. Но было бы хорошо, чтобы те люди, которые не обладают чувством юмора обладали бы чувством, что у них нет чувства юмора.

    Тоже самое происходит в голове человека, который чего-то не знает. Он не просто не знает например такого факта, что 2х2=4. Он даже не представляет, что он это не знает. Иначе говоря в выше приведенном равенстве не просто отсуствует правая часть — 4, а отсутствует равенство целиком.

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

    Представьте себе китайский язык. Допустим Вы его не знаете. Вам предлагают на китайском написать самое простое детское стихотворение. Любой китайский ребенок в 3 года его знает. Вы предлагаете его 10-ти классникам. Потом вы предлагаете найти небольшую ошибку в стихотворении, которую благоразумно вставили сами. Потом Вы предлагаете другой подобный пример.

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

    Я сам прошел через это. И очень хорошо помню до сих пор как порвал книгу по программированию на Паскале в клочья. Нас пол года таким образом обучали программированию. Весь класс тихо ненавидел эти уроки.
    Назревал бунт. Но в какой-то момент учителя и родители осознали, что что-то происходит не так и прекратили пытки. Я раз 5 начинал сам штудировать книгу, которую нас заставили купить и каждый раз сдавался.
    Это была худшая возможная книга по программированнию, которую я видел на своем веку.
    В итоге я порвал ее в порые гнева. Надо ли говорить, что это была единственная книга в моей жизни, которую я уничтожил. Потом нам нашли нормального преподавателя и мы все радостно программировали на Бейсике.
    Это были 80-е годы, если кому интересно.

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

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

    Основная задача учителя это попасть (вспомнить как это было) в шкуру ребенка. И понять что и как он/она видит.
    И двигаться именно с этой точки. То кол-во информации, которая усвоена Вами может совершенно отсутствовать
    в головах тех людей, которым Вы пытаетесь что-то объяснить. И главное Вы никогда не узнаете их настоящую реакцию, понимают они что-то или нет. Часто правильные ответы могут быть элементарным белым шумом.

    Просто задуймайтесь над этим.
    • 0
      Основная задача учителя это попасть (вспомнить как это было) в шкуру ребенка. И понять что и как он/она видит. И двигаться именно с этой точки. То кол-во информации, которая усвоена Вами может совершенно отсутствовать в головах тех людей, которым Вы пытаетесь что-то объяснить.

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

      И главное Вы никогда не узнаете их настоящую реакцию, понимают они что-то или нет. Часто правильные ответы могут быть элементарным белым шумом.

      с одного занятия — не узнаешь. а вот после цикла занятий — запросто
      • 0
        Это плохо. Это должны знать и понимать все. Каждый человек будь то в школе или в университете
        должен по мимо знаний и умений получать информацию о самом процессе познания мира.
        Практически любой человек на свете выступает в роли учащегося, когда сам находится в процессе познания
        мира (желательно постоянно), так и в роли учителя, когда как минимум обучает чему-то своих детей.

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

        Речь была именно об этом, а не о методологии обучения человека чему-то. Это базовое знание, которым должен обладать любой взрослый человек.

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

        Так же отличный пример можете наблюдать, если почитаете про cargo-cult среди аборигенов Фиджи и других разных племен. Они поистине гениально копировали форму самолетов и других изделий из нашего мира не имея не малейшего представления что это такое, как работает и для чего служит. В интернете полно фотографий. Это один из классических примеров пропасти в познаниях между одной и другой цивилизацией.
        Такая же пропасть существует между детьми и взрослыми. Физически невозможно объяснить как устроен этот мир 5-тилетнему ребенку на пальцах за 5 минут.
        • 0
          я не совсем понял, что именно «плохо». то, что все люди разные?
          • 0
            Плохо то, что только «педагогов этому специально обучают». Этому должны обучать всех.

            Люди как ни странно мало знают о своем мышлении. И люди зачастую спорят не потому, что имеют разные точки зрения, а потому что глядят на одно и тоже под разным углом и с разным опытом.
            Одному кажется, что это мягкое, а другой уверен, что теплое.
            • 0
              то, что люди мало знают о своем мышлении — это факт. но «средний человек», обыватель — он, увы, мало о чем вообще знает. а тем более — о мышлении вообще известно не очень много.
              ну а спор об одном и том же под разным углом — так все люди разные. Женщина смотрит на котика в одни дни месячного цикла как на ребенка, в другие — как на мягкую игрушку, в третьи — как на потенциального зассанца. мужик прикидывает, например, сколько ж это существо сожрет, и будет ли оно мешать занятиям сексом с подругой. аллергик любого пола смотрит на него как на источник аллергии. ветеринар — как на потенциального клиента на стерилизацию (потенциальный разовый доход), а кошкозаводчик — как на объект для разведения (потенциальный долговременный доход). и что?
  • 0
    Я бы показал школьникам несколько простых решений тех задач, с которыми школьники встречаются на уроках. Пример какой-нибудь обработки текста, пример решения системы линейных уравнений и подобное. В общем то, от чего можно сразу получить практическую пользу. Язык выбрал бы конечно же Питон.
  • 0
    А мне честно говоря не хватало в школе скриптовых языков, с них нужно было начинать, а потом уже переходить на более сложные. Многие даже не используют тот же Batch в полной мере, я вот даже совсем недавно узнал что там есть ООП. Потом стало его мало перешел на Powershell, потом стало и его мало изучаю C#. К программисту себя не отношу, просто эникейщик. Не кидайте помидорами)))
  • 0
    незнаю как вас, но меня очень удивил этот учитель который припадает информатику в школе с помощью code.org. https://www.youtube.com/watch?v=cZzyJFTZfDs почему блин не был такой учитель у меня(((
  • +1
    расскажу немного о своем опыте.
    давно-давно, в 1989 году возникло новое веяние — «шефство вуза над школой». уж не знаю, из каких таких расчетов нашей кафедре достался класс «корветов», и задание вести углубленные уроки информатики для отдельных классов одной из школ. В связи с чем нам были вручены ключи от аудитории, куча коробок, и задание: смонтировать, запустить, изучить и нАчать… Технически монтаж особых затруднений не вызвал. а вот подготовка к преподаванию — вызвала. За плечами тогда было 2.5 года обучения (на специальности, не связанной напрямую с программированием), ФЮП (факультет югого программиста, на котором учили в основном фортрану), много-много часов в дисплейных классах на базе СМ-4 (и ФЮПовском, и кафедральном), возня с Правец-8Д (шабашки, кои по тем временам проходили через кооперативы), ну и фортран, бейсик, си, и ассемблеры 580-го и 11-й… т.е. некоторый опыт программирования — был. Опыт командования (ну и обучения сослуживцев) в армии — тоже. Опыта обучения школьников — не было вообще. литературы тоже было не слишком много — учебники Ершова не особо помогли, два других были еще хуже, а в педагогических — без педагога не разберешься. преподы с кафедры загадочно улыбались (типа «выплывай сам»).
    пришлось строить свой учебный план. за основу взял именно то, что несмотря на специализированный класс — дети будут разные. хочешь-не хочешь, а учить придется всех. пытался построить от полезности компа как информационного инструмента, уйти от исключительно «школьно-вычислительных задач» (набившего оскомину решения квадратного уравнения). пока были пара вводных уроков, посвященных истории и применению, общался и узнавал об интересах. из интересов — возникали примеры и задания. в качестве примеров «для блондинок» было предложено смасштабировать выкройку- просто потому, что четыре подруги рисовали на обложках тетрадей какие-то платья. интересующийся авиацией парнишка делал игру-самолет (с учетом срыва в штопор при больших углах атаки). «спортсмен» хоть и очень любил играть в «каратэ», но освоил и «анимацию» (с учетом возможностей Корветов). кто-то делал для школы «тестирование по физике». так что в среднем все нашли применение в своей области интересов. забавно, что году в 2005 меня узнал охранник в «пятерочке», поблагодарил за интересное преподавание, и скзал, что уроки ему пригодились. правда, я так и не понял, в чем… Да, двое заняли призовые места на городской олимпиаде по информатике, и затем поступили на наш факультет (правда, один недоучился — но это другая история, лихие 90-е. хотя по учебе — он все вычислительные задачки делал влёт). по меньшей мере один — одинэсничает. так что даже один из 40, заинтересовавшийся всерьез и сделавший программирование профессией — это уже достижение для «юного педагога» :-)
    я тоже получил бесценный опыт (хотя первое время спина реально была мокрой), реально дополняющий «командный». возможно, что если б не наступившие времена — остался бы работать на кафедре. по крайне мере, бывший завкафедрой об этом говорил…
    зы. но за один урок я бы не сделал ничего…
  • +3
    Не согласен с большинством критиков. При таких вводных результат отличный, интерес учеников — главный критерий. Самые основы объяснены, типичные грабли обойдены, для старта самое то.

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.