Содержание

8 КЛАССЫ (программирование)

Яндекс Учебник

Российское сообщество разработчиков программного кода

Ссылки на ресурсы:

ОГЭ программирование

Проекты на CodinGame

Конечные автоматы PICOBOT

Исполнитель Черепаха

Черепашка в Python

from turtle import *   # подключение всех методов (инструкций) библиотеки Turtle
bgcolor("darkblue")    # цвет фона
shape("turtle")        # форма черепашки
pencolor("yellow")     # цвет пера
fillcolor("yellow")    # цвет заливки 
pensize(2)             # размер пера
lt(90)                 # влево на 90 градусов
fd(100)                # вперёд на 100
bk(100)                # назад на 100
speed(3)              # скорость перемещения (1 - медленно, 10 - быстро, 0 - очень быстро )
 
for step in range(4):  # 4 шагов цикла
    fd(100)            # вперёд на 100
    rt(90)            # вправо 90
 
penup()                # поднять перо
rt(90)                 # вправо на 90 градусов
fd(150)                # вперёд на 100               
lt(90)                 # влево на 90 градусов
pendown()              # опустить перо
 
begin_fill()           # готовность залить цветом фигуру, когда она будет нарисована
for step in range(5):  # повторить 5
    fd(100)            # вперёд на 100
    rt(144)            # вправо на 144
end_fill()             # когда контур фигуры замкнут (цикл завершён) залить цветом фигуру  
done()                 # в конце программы

Пример 2

from turtle import *   # подключение всех методов (инструкций) библиотеки Turtle
shape("turtle")
bgcolor("darkblue")    # цвет фона
pencolor("white")
pensize(3)
speed(1)
penup()
goto(-40, 40)
pendown()
goto(-40, 40)
goto(40, 40)
goto(40, -40)
goto(-40, -40)
goto(-40, 40)
penup()
goto(0, 0)
done()   
from turtle import *   # подключение всех методов (инструкций) библиотеки Turtle
shape("turtle")
pensize(2)
penup()
lt(90)
write("С НОВЫМ ГОДОМ!", font=('Arial', 20, 'normal'))
bk(30)
for pc in ["pink", "red", "orange", "darkblue", "green", "#FF00FF", "#000000"]:
    pencolor(pc) # переменная pc последовательно передает в функцию pencolor() значения элементов списка
    write(pc, font=('Arial', 20, 'normal'))    # напечатать значение переменной pc
    bk(30)       # сместиться назад на 20 пикселей
done()

Круг

import time
from turtle import *
shape("turtle")
pencolor("black")
fillcolor("black")
pensize(3)
time.sleep(12)
r1 = 25
ext1 = 180
circle(r1, ext1)
r2 = -25
circle(r2, ext1)
r3 = -50
circle(r3)
rt(ext1)
begin_fill()
circle(r1, ext1)
r2 = -25
circle(r2, ext1)
r3 = -50
circle(r3, ext1)
end_fill()
 
done()

Задачи

Написать программу, которая рисует фигуру, показанную на иллюстрации.

Задача 1:

Задача 2:

Задача 3:

Задача 4:

Задача 5:

Задача 1:

Задача 2:

Задача 3:

Задача 4:

Задача 5:

from turtle import *   # подключение всех методов (инструкций) библиотеки Turtle
bgcolor("darkblue")    # цвет фона
shape("turtle")        # форма черепашки
pencolor("yellow")     # цвет пера
    # цвет заливки 
pensize(2)             # размер пера
 
        # готовность залить цветом фигуру, когда она будет нарисована
n = 5
d = ["red", "green", "blue", "yellow", "pink" ]
for i in range(n):
    begin_fill()
    fillcolor(d[i])
    for step in range(n):  # повторить 5
        fd(100)            # вперёд на 100
        rt(360//n)
    end_fill() 
    rt(360//n)
            # когда контур фигуры замкнут (цикл завершён) залить цветом фигуру  
done()                 # в конце программы

Задачи из ЕГЭ

Условие задачи:

Исполнитель Черепаха действует на плоскости с декартовой (прямоугольной) системой координат. В начальный момент Черепаха находится в начале координат, её голова направлена вдоль положительного направления оси ординат (ось y), хвост опущен. При опущенном хвосте Черепаха оставляет на поле след в виде линии. В каждый конкретный момент известно положение исполнителя и направление его движения. У исполнителя существует две команды: Вперёд n (где n – целое число), вызывающая передвижение Черепахи на n единиц в том направлении, куда указывает её голова, и Направо m (где m – целое число), вызывающая изменение направления движения на m градусов по часовой стрелке. Запись

Повтори k [Команда1 Команда2 … КомандаS]

означает, что последовательность из S команд повторится k раз.

Черепахе был дан для исполнения следующий алгоритм:

Повтори 7 [Вперёд 10 Направо 120]

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

from turtle import *
#speed(0)
tracer(0)
m = 30
lt(90)
for i in range(7):
    fd(10 * m)
    rt(120)
 
penup()
for y in range(-3, 11):
    for x in range(-3, 11):  
        goto(x * m, y * m)
        dot(size = 4)
 
done()

НТО

«Технологии и среда обитания» https://junior.ntcontest.ru/spheres#environment

Национальная технологическая олимпиада Junior·Автор Информация о сфере на сайте: https://junior.ntcontest.ru/spheres#environment Образовательный курс «Технологии и среда обитания»: https://orbita.education/events/94/482 Группа сферы в ВК: https://vk.com/habitech

https://school.mos.ru/vrlabs/robocompetitions/app?link=mqoWr1Gf4M6pXo66jMsE

#include <IRremote.h> // подключаем библиотеку для работы с ИК-приёмником
 
 
const byte IR_RECEIVE_PIN = 8; // указываем пин, к которому подключен ИК-приёмник
 
#include <Servo.h> //  подключаем библиотеку для работы с сервоприводом
Servo myservo7;  // создать объект myservo 
Servo myservo12;  // создать объект myservo 
Servo myservo3;  // создать объект myservo 
 
 
const int LM_s1 = 10; // левый мотор вход 1
const int LM_s2 = 9; // левый мотор вход 2
const int RM_s1 = 5; // правый мотор вход 1
const int RM_s2 = 6; // правый мотор вход 2
 
boolean hand_open = 1;  // ?
 
void setup(){
 Serial.begin(9600);
 IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);
 
 //правый
    pinMode(RM_s1, OUTPUT);
    pinMode(RM_s2, OUTPUT);
    //левый
    pinMode(LM_s1, OUTPUT);
    pinMode(LM_s2, OUTPUT);
 
    myservo12.attach(12);  //указать пин, к которому подключен сервпривод
    myservo7.attach(7);  //указать пин, к которому подключен сервпривод
    myservo3.attach(3);  //указать пин, к которому подключен сервпривод
    off_servo();
    servo_take();
}
 
void loop() {
    if (IrReceiver.decode()) {
        Serial.println(IrReceiver.decodedIRData.decodedRawData); // выводим код нажатой кнопки в десятичном формате
 
        switch (IrReceiver.decodedIRData.decodedRawData) {
            case 785449215: // Код кнопки "вперед"
                //Serial.println("up");
                moveForward();
                break;
            case 768737535: // Код кнопки "назад"
                moveBackward();
                break;
            case 752025855: // Код кнопки "влево"
                turnLeft();
delay(3);
stopMotors();
                break;
            case 735314175: // Код кнопки "вправо"
                turnRight();
delay(1/3);
stopMotors();
                break;
            case 1387069695: // Код кнопки "остановка" (обычно это код повторного нажатия)
                stopMotors();
                break;
            case 1437204735: // Код кнопки "A" 
                servo_state_A();
                break;
            case 1420493055: // Код кнопки "B" 
                off_servo();
                break;
            case 1403781375: // Код кнопки "C" 
                servo_take();
                break;
 
            default:
               stopMotors();
               break;
        }
 
        IrReceiver.resume(); // готовимся к следующему сигналу
    }
 
}
 
void moveForward() {
     Serial.println("up");
    digitalWrite(LM_s1, 1);
    digitalWrite(LM_s2, 0);
    digitalWrite(RM_s1, 1);
    digitalWrite(RM_s2, 0);
 delay(6);
}
 
void moveBackward() {
    Serial.println("down");
 
    digitalWrite(LM_s1, 0);
    digitalWrite(LM_s2, 1);
    digitalWrite(RM_s1, 0);
    digitalWrite(RM_s2, 1);
 delay(6);
}
 
void turnLeft() {
    digitalWrite(LM_s1, LOW);
    digitalWrite(LM_s2, HIGH);
    digitalWrite(RM_s1, HIGH);
   digitalWrite(RM_s2, LOW);
 delay(60);
}
 
void turnRight() {
    digitalWrite(LM_s1, HIGH);
    digitalWrite(LM_s2, LOW);
    digitalWrite(RM_s1, LOW);
   digitalWrite(RM_s2, HIGH);
 delay(60);
}
 
void stopMotors() {
    digitalWrite(LM_s1, LOW);
    digitalWrite(LM_s2, LOW);
    digitalWrite(RM_s1, LOW);
   digitalWrite(RM_s2, LOW);
 delay(6);
}
 
// **********************************
 
void off_servo() {
  myservo7.write(180);   
  Serial.println("check_servo7");
  delay(5);
  myservo12.write(0);   
  Serial.println("check_servo12");
  delay(5);                     
}
 
void servo_take() {
  if (hand_open == 1) {
  myservo3.write(0);   
  Serial.println("check_servo3_open");
  delay(10);
hand_open = 0;
  } else {
  myservo3.write(90);   
  Serial.println("check_servo3_close");
  delay(10);
hand_open = 1;
  }
 
}
 
void servo_state_A() {
  myservo7.write(180);   
  Serial.println("check_servo7");
  delay(5);
  myservo12.write(100);   
  Serial.println("check_servo12");
  delay(5);                     
}
#include <IRremote.h> // подключаем библиотеку для работы с ИК-приёмником
const byte IR_RECEIVE_PIN = 8; // указываем пин, к которому подключен ИК-приёмник
const int LM_s1 = 10; // левый мотор вход 1
const int LM_s2 = 9; // левый мотор вход 2
const int RM_s1 = 5; // правый мотор вход 1
const int RM_s2 = 6; // правый мотор вход 2
 
void setup(){
 Serial.begin(9600);
 IrReceiver.begin(IR_RECEIVE_PIN, ENABLE_LED_FEEDBACK);
 
 //правый
    pinMode(RM_s1, OUTPUT);
    pinMode(RM_s2, OUTPUT);
    //левый
    pinMode(LM_s1, OUTPUT);
    pinMode(LM_s2, OUTPUT);
}
 
void loop() {
    if (IrReceiver.decode()) {
        Serial.println(IrReceiver.decodedIRData.decodedRawData); // выводим код нажатой кнопки в десятичном формате
 
        switch (IrReceiver.decodedIRData.decodedRawData) {
            case 785449215: // Код кнопки "вперед"
                //Serial.println("up");
                moveForward();
                break;
            case 768737535: // Код кнопки "назад"
                moveBackward();
                break;
            case 752025855: // Код кнопки "влево"
                turnLeft();
                break;
            case 735314175: // Код кнопки "вправо"
                turnRight();
                break;
            case 1387069695: // Код кнопки "остановка" (обычно это код повторного нажатия)
            default:
               stopMotors();
               break;
        }
 
        IrReceiver.resume(); // готовимся к следующему сигналу
    }
}
 
void moveForward() {
     Serial.println("up");
    digitalWrite(LM_s1, 1);
    digitalWrite(LM_s2, 0);
    digitalWrite(RM_s1, 1);
    digitalWrite(RM_s2, 0);
 delay(60);
}
 
void moveBackward() {
    Serial.println("down");
 
    digitalWrite(LM_s1, 0);
    digitalWrite(LM_s2, 1);
    digitalWrite(RM_s1, 0);
    digitalWrite(RM_s2, 1);
 delay(60);
}
 
void turnLeft() {
    digitalWrite(LM_s1, LOW);
    digitalWrite(LM_s2, HIGH);
    digitalWrite(RM_s1, HIGH);
   digitalWrite(RM_s2, LOW);
 delay(60);
}
 
void turnRight() {
    digitalWrite(LM_s1, HIGH);
    digitalWrite(LM_s2, LOW);
    digitalWrite(RM_s1, LOW);
   digitalWrite(RM_s2, HIGH);
 delay(60);
}
 
void stopMotors() {
    digitalWrite(LM_s1, LOW);
    digitalWrite(LM_s2, LOW);
    digitalWrite(RM_s1, LOW);
   digitalWrite(RM_s2, LOW);
 delay(60);
}