Здесь показаны различия между двумя версиями данной страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
8it_pr_2026 [2025/09/16 09:15] super_admin [Яндекс Учебник] |
8it_pr_2026 [2026/03/26 13:41] (текущий) super_admin [Российское сообщество разработчиков программного кода] |
||
|---|---|---|---|
| Строка 5: | Строка 5: | ||
| * У03300338 - код школы | * У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 ===== | ||
| + | |||
| + | |||
| + | <code 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() # в конце программы | ||
| + | </code> | ||
| + | |||
| + | Пример 2 | ||
| + | |||
| + | <code Python> | ||
| + | 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() | ||
| + | </code> | ||
| + | |||
| + | |||
| + | <code Python> | ||
| + | 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() | ||
| + | </code> | ||
| + | |||
| + | Круг | ||
| + | |||
| + | <code Python> | ||
| + | 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() | ||
| + | </code> | ||
| + | |||
| + | |||
| + | * [[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|}} | ||
| + | |||
| + | <code Python> | ||
| + | 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() # в конце программы | ||
| + | |||
| + | </code> | ||
| + | |||
| + | ==== Задачи из ЕГЭ ==== | ||
| + | |||
| + | |||
| + | * [[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] | ||
| + | |||
| + | Определите, сколько точек с целочисленными координатами будут находиться внутри области, ограниченной линией, заданной данным алгоритмом. Точки на линии учитывать не следует. | ||
| + | |||
| + | <code Python> | ||
| + | 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() | ||
| + | </code> | ||
| + | |||
| + | |||
| + | ==== НТО ==== | ||
| + | [[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 | ||
| + | |||
| + | <code C++> | ||
| + | #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); | ||
| + | } | ||
| + | </code> | ||
| + | |||
| + | |||
| + | <code C++> | ||
| + | |||
| + | #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); | ||
| + | } | ||
| + | |||
| + | </code> | ||