субота, 24 жовтня 2020 р.

Java4Kids 2

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


Задача урока

Стартовая точка: поле с муравьем, который умеет двигаться по нажатию стрелочек на клавиатуре.

Надо реализовать: добавить 2 объекта: 1 вид еды (грушу) и дом муравья (травку).
    Когда муравей подползает к еде, он ее берет и несет в дом, где она скрывается.

Время урока: 1.5 часа.

Обсудить с детьми

  1. Вспомнить, как делать создание объекта, что такое конструктор и показать, как работает код внутри конструктора.

    Реализация: в конструкторе задавать размер травки-домика.

  2. Проговорить с детьми план захвата груши муравьем, где писать код, какому объекту он будет принадлежать.

    Реализация: дети сами предложили где и что писать. Сделали, но не все сработало. Подумали о причинах, почему что-то не работает или почему работает что-то неожиданно. Обсудили, что триггер выполнения кода кроется в "цикле" нажатия на кнопки клавиатуры, поэтому ручной цикл писать не надо.

  3. Предложить детям самим написать код, аналогичный уже созданному.

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


Что прошло хорошо

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


Что было не очень хорошо

  • Как всегда проблемы со связью. У одного ребенка плохо работал Zoom.
  • Все же было бы лучше, если бы все, кого не было раньше, выполнили задание дома, чтоб мы не тратили лишнее время на уроке. Урок продолжался 2 часа вместо 1.5. 

Код в студию:

import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

public class Ant extends Actor
{
    /**
     * Act - do whatever the Ant wants to do. This method is called whenever
     * the 'Act' or 'Run' button gets pressed in the environment.
     */
    public void act() 
    {
        // Add your action code here.
        move();
        
        Fries fries = (Fries) getOneIntersectingObject(Fries.class);
        if (fries!=null){
            fries.jumpOn(getX(), getY());
        }
        //TODO: аналогично пересечь траву и картошку-фри, 
        // чтоб cпрятать картошку-фри fries.getImage().clear();
    }  
    
    public void move(){
        int y = getY();
        int x = getX();
        if(Greenfoot.isKeyDown("DOWN")){
            setRotation(90);
            y+=5;}
        if(Greenfoot.isKeyDown("UP")){    
            setRotation(270);
            y-=5;}
        if(Greenfoot.isKeyDown("RIGHT")){
            setRotation(0);
            x+=5;}
        if(Greenfoot.isKeyDown("LEFT")){    
            setRotation(180);
            x-=5;}
        setLocation(x, y);
    }
}

public class Grass extends Actor
{
    public Grass(){
        getImage().scale(100, 100);
    }
}

public class Fries extends Actor
{
    public void jumpOn(int x, int y){
        setLocation(x, y+57);
    }
}

субота, 17 жовтня 2020 р.

Java для детей

Время от времени знакомые родители, переживающие за будущее своих детей, меня спрашивают: "Куда отдать своего ребенка учить программирование?". Существует уже достаточно много курсов по робототехнике, радиотехнике и просто програмированию для детей в Киеве. Мне иногда попадаются вывески на глаза. Но что же насчет Java? Зачем ребенку учить какой-нибудь Scratch, если это "для простачков"?

Говоря по правде, я бы отговаривала родителей садить ребенка за сложный формальный язык программирования. В прошлом году я вела Python для деток и считаю это лучшим выбором на данный момент для тех, кто хочет заниматься мясо-кодом. Но недавно меня попросили вести именно Java. Как ни странно, первый урок детям понравился! =)


Как все прошло или как провести первый урок по Java

  • Знакомство:
рассказать о себе в веселой форме
  • ООП:
пофантазировать на тему, что если бы от мяча унаследовать класс круглой головы человека?
  • Свойства ООП:
соединить картинку с характеристикой композиции, агрегации, ассоциации и наследования. 

Презентация помогла осуществить вышесказанное.

А дальше мясокод!

Шучу. Я смухлевала, потому что все еще считаю, что детям в их 10-12 лет рано такое видеть. Поэтому мы скачали Greenfoot и создали приложение со стеной и муравьем, который по ней ползал после нажатия на кнопки клавиатуры. 


Доска с первого урока

Научилась работать с Greenfoot пользуясь туториалом. Конечно мы придумывали разные сюжеты и шутили на тему "муравей съест гроздь бананов, приведет своих друзей, они потом пойдут дальше и станут пожирать все на своем пути" и т.д. 


Ведь зачем программирование и кому нужна "жизнь моя жестянка", если она скучна?  

Что прошло хорошо?

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

Что бы я изменила?

  • Были маленькие неполадки с видео, пользовались бесплатным Zoom.
  • В презентации можно было не текстом писать, а картинками делать пункты, от которых отталкиваться рассказывая "о себе".
  • Хотелось быть более раскованной и легче общаться, но на первом уроке, да еще и онлайновском, так не всегда можно. 
  • Один мальчик похоже очень любит свой телефон, и когда тот попал ему в руки, мальчику пришлось отвлекаться. Телефон это зло!