NEW

Примеры программ.

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

Программирование ведется на встроенном объектно-ориентированном языке CBOT, который похож на C++ и Java. 

Пример программы.

Пример выполнения задания с циклом, условиями и переменными.

extern void object::Solution()
{
    object item;
    float angle;

    aim(0);
    while ( true )
    {
        while(radar(AlienWasp,0,360,0,20)==null)
        {
            item = radar(AlienWasp);
            turn(direction(item.position));
            drive(1,0);
            jet(0);
            if (position.z > item.position.z)
            {
                jet(-0.3);
            }
            if (position.z < item.position.z - 1)
            {
                jet(0.3);
            }
            wait(0.2);
        }
        item = radar(AlienWasp);
        angle = direction(item.position);
        turn(angle);
        if ( angle < 0 )
        {
            drive(1, 0.5); // turn right
        }
        else
        {
            drive(0.5, 1); // turn left
        }
        jet(0);
        if (position.z > item.position.z)
        {
            jet(-0.3);
        }
        if (position.z < item.position.z - 1)
        {
            jet(0.3);
        }
        fire(1);
    }
}

Пример массива.

Пример программы обработки двухмерного массива.

extern void object::Solution( )
{
    errmode(0);
    int found [4][4];
    point pos;
    for ( int x=0 ; x<4 ; x=x+1 )
    {
        for ( int y=0 ; y<4 ; y=y+1 )
{
             // go to a platform
            pos.x = 10*x;
            pos.y = 10*y;
            goto(pos);
            // try to pick up an object
            grab();
            if ( load == null )
            {
                found[x][y] = 0;
            }
            else
            {
                // memorize item found
                found[x][y] = load.category;
                // put it down elsewhere
                move(-2);
                drop(Behind);
            }
}
    }

    // put objects back
    for ( int x=0 ; x<4 ; x=x+1 )
    {
        for ( int y=0 ; y<4 ; y=y+1 )
        {
            if ( found[y][x] == 0 ) continue;
             // go fetch object
            object item = radar(found[x][y]);
             goto(item.position); grab();
            // put it on a platform
            // x and y are inverted
            pos.x = 10*y;
            pos.y = 10*x;
            goto(pos);
            drop();
}
    }
}

Пример функции.

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

extern void object::Solution()
{
    blue();
    int height;
    float startX=5, startY=5;
    for (int i=0; i<10; i++)
    {
        height=receive("Length"+i,100);
        DrawBar(startX,startY,height);
        startX++;
    }
}
//****************************
void object::DrawBar(float x, float y, float l)
{
    penwidth(0.7);
    goto(x,y); // to start position
    lookat(90); // make vertical
    pendown(); // start drawing
    move(l); // draw bar
    penup(); // stop drawing
    move(-l); // get ready for next move
    turn(-90);
}
//*****************************

Пример класса.

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

public class exchange
{
    static private string global_order = "";
    // Put an order
    synchronized bool put(string order)
    {
        if ( global_order == "" )
        {
            global_order = order;
            return true;
}
else
{
             return false;
}
    }
    // Get an order
    synchronized string get()
    {
        string ret = global_order;
        global_order = "";
        return ret;
    }
}

extern void object::Slave3( )
{
    exchange list = new exchange();
    string todo;
    while ( true )
    {
        while ( true )
{
            todo = list.get();
            if ( todo != "" ) break;
            wait(1);
}
message(todo);
        if ( strfind(todo, "move") == 0 )
{
             move(strval(strmid(todo,5)));
}
if ( strfind(todo, "turn") == 0 )
{
            turn(strval(strmid(todo,5)));
}
    }
}