====== 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); }