====== 8 КЛАССЫ (программирование) ======
===== Яндекс Учебник =====
* https://education.yandex.ru/kids/ Вход для ученика
* У03300338 - код школы
===== Российское сообщество разработчиков программного кода =====
Ссылки на ресурсы:
* [[https://hub.mos.ru]] Вход и регистрация
* [[https://hub.mos.ru/mcpro87/addinformatik]] Обучение по информатике. ID проекта: 56627
* [[https://hub.mos.ru/yarburart/webscraping-learn]] Наброски парсеров на python
==== ОГЭ программирование ====
* [[https://kpolyakov.spb.ru/school/oge/gen.php?action=viewTopic&topicId=1042]]
* [[https://kpolyakov.spb.ru/school/oge/gen.php?action=viewTopic&topicId=1038]]
* [[https://kpolyakov.spb.ru/school/oge/gen.php?action=viewTopic&topicId=1037]]
* [[https://kpolyakov.spb.ru/school/oge/gen.php?action=viewTopic&topicId=1013]]
* [[https://kpolyakov.spb.ru/school/oge/gen.php?action=viewTopic&topicId=1012]]
==== Проекты на CodinGame ====
* https://intepra.ru/wiki/doku.php?id=cg
==== Конечные автоматы PICOBOT ====
* https://www.cs.hmc.edu/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()
* [[https://stepik.org/lesson/658417/step/4?unit=655824]] Задания
==== Задачи ====
**Написать программу, которая рисует фигуру, показанную на иллюстрации.**
==== Задача 1: ====
{{::image1.png?nolink|}}
==== Задача 2: ====
{{::trt2_-1.png?nolink|}}
==== Задача 3: ====
{{::trt2_-2.png?nolink|}}
==== Задача 4: ====
{{::sqr_8_4.gif?nolink|}}
==== Задача 5: ====
{{::trt2_0.png?nolink|}}
{{::trt2_0_1.png?nolink|}}
==== Задача 1: ====
{{::image1.png?nolink|}}
==== Задача 2: ====
{{::trt2_-1.png?nolink|}}
==== Задача 3: ====
{{::trt2_-2.png?nolink|}}
==== Задача 4: ====
{{::sqr_8_4.gif?nolink|}}
==== Задача 5: ====
{{::trt2_0.png?nolink|}}
{{::trt2_0_1.png?nolink|}}
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() # в конце программы
==== Задачи из ЕГЭ ====
* [[https://kpolyakov.spb.ru/school/ege/gen.php?action=viewTopic&topicId=5559]]
* [[https://kpolyakov.spb.ru/school/ege/gen.php?action=viewTopic&topicId=5555]]
* [[https://kpolyakov.spb.ru/school/ege/gen.php?action=viewTopic&topicId=5554]]
**Условие задачи:**
Исполнитель Черепаха действует на плоскости с декартовой (прямоугольной) системой координат. В начальный момент Черепаха находится в начале координат, её голова направлена вдоль положительного направления оси ординат (ось 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://vk.com/wall-187440231_8717 | «Технологии и среда обитания»]]
[[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 // подключаем библиотеку для работы с ИК-приёмником
const byte IR_RECEIVE_PIN = 8; // указываем пин, к которому подключен ИК-приёмник
#include // подключаем библиотеку для работы с сервоприводом
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 // подключаем библиотеку для работы с ИК-приёмником
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);
}