Пошаговые действияСоединение с реальным миромСоздание моделиСовместное
Базовый набор MINDSTORMS EV3
Поворот при датчика
ПечатьПоделиться
Ваша задача состоит в том, чтобы запрограммировать своего робота на выполнение поворота на месте на точный угол, используя гироскопический датчик.
45–90 мин
Средний уровень
Классы 5–8
Пошаговые действия
Постройте своего робота.
Создайте свою программу.
Далее установите робота в позицию 2 на поле 2 и запустите программу.
Запишите результаты.
Продолжите изучать использование гироскопического датчика для управления движениями робота.
Прежде чем вы начнете выполнять эту миссию, советуем изучить следующие разделы пособий самоучителя:
• Остановиться под углом
• Цикл
При выполнении миссии учащиеся будут изучать связь между вводом датчика и поведением робота. Приводная платформа будет вращаться под управлением гироскопического датчика.
Наблюдайте за учащимися, чтобы удостовериться, что они:
• находят подходящие проверки угла поворота своего робота;
• понимают, какие факторы могут повлиять на точность остановки при использовании гироскопического датчика (погрешность датчика, мертвый ход мотора и вращающий момент)
Итак, целевой язык - C++. Это значит мы - радостные обладатели технологии потоков, с коей мы будем производить весь ввод/вывод как при работе с файлами, так и при работе со стандартным вводом/выводом (консолью).
Ну а раз уж мы работаем с потоками, то будем делать это красивенько: создадим класс-обёртку для потока ввода, цель которого - поиск в этом потоке цитат и отправка их на поток вывода (который мы передаём).
[!] Стоит отметить, что по заданию не сказано, что есть разница между ' и ". Поэтому будем считать их одинаковыми.
[!] Внимание! Рядом с исполняемым файлом надо создать текстовый файл data.txt c текстом и цитатами.
Код
С++11
#include <iostream>#include <fstream>using std::cout;class QuotesFinder { std::istream &in_stream; bool is_it_in_quote = false;public: QuotesFinder() = delete; QuotesFinder(QuotesFinder&&) = default; QuotesFinder(QuotesFinder const&) = default; explicit QuotesFinder(std::istream &is) : in_stream(is) {} [[nodiscard]] bool eof() const { return in_stream.eof(); } // Вот тут происходит вся магия QuotesFinder& operator >> (std::ostream& out_stream) { char buffer; in_stream.get(buffer); //Получаем очередной символ из потока if (buffer == '\"' || buffer == '\'') { if (is_it_in_quote) { is_it_in_quote = false; out_stream << buffer; out_stream << "\n"; return *this; } is_it_in_quote = true; } if (is_it_in_quote) { out_stream << buffer; } return *this; }};int main() { std::ifstream file("data.txt"); // Открываем файл if (!file.is_open()) { cout << "File is not exits!"; return 1; } QuotesFinder finder(file); // Создаём обёртку из файлового потока while (!finder.eof()) // Пока не достигли конца потока finder >> cout; // переправляем очередной кусок информации в поток вывода}
Пошаговые действияСоединение с реальным миромСоздание моделиСовместное
Базовый набор MINDSTORMS EV3
Поворот при датчика
ПечатьПоделиться
Ваша задача состоит в том, чтобы запрограммировать своего робота на выполнение поворота на месте на точный угол, используя гироскопический датчик.
45–90 мин
Средний уровень
Классы 5–8
Пошаговые действия
Постройте своего робота.
Создайте свою программу.
Далее установите робота в позицию 2 на поле 2 и запустите программу.
Запишите результаты.
Продолжите изучать использование гироскопического датчика для управления движениями робота.
Прежде чем вы начнете выполнять эту миссию, советуем изучить следующие разделы пособий самоучителя:
• Остановиться под углом
• Цикл
При выполнении миссии учащиеся будут изучать связь между вводом датчика и поведением робота. Приводная платформа будет вращаться под управлением гироскопического датчика.
Наблюдайте за учащимися, чтобы удостовериться, что они:
• используют правильную терминологию;
• понимают функционирование программируемых блоков;
• находят подходящие проверки угла поворота своего робота;
• понимают, какие факторы могут повлиять на точность остановки при использовании гироскопического датчика (погрешность датчика, мертвый ход мотора и вращающий момент)
Объяснение:
удачи
Итак, целевой язык - C++. Это значит мы - радостные обладатели технологии потоков, с коей мы будем производить весь ввод/вывод как при работе с файлами, так и при работе со стандартным вводом/выводом (консолью).
Ну а раз уж мы работаем с потоками, то будем делать это красивенько: создадим класс-обёртку для потока ввода, цель которого - поиск в этом потоке цитат и отправка их на поток вывода (который мы передаём).
[!] Стоит отметить, что по заданию не сказано, что есть разница между ' и ". Поэтому будем считать их одинаковыми.
[!] Внимание! Рядом с исполняемым файлом надо создать текстовый файл data.txt c текстом и цитатами.
КодС++11
#include <iostream>#include <fstream>using std::cout;class QuotesFinder { std::istream &in_stream; bool is_it_in_quote = false;public: QuotesFinder() = delete; QuotesFinder(QuotesFinder&&) = default; QuotesFinder(QuotesFinder const&) = default; explicit QuotesFinder(std::istream &is) : in_stream(is) {} [[nodiscard]] bool eof() const { return in_stream.eof(); } // Вот тут происходит вся магия QuotesFinder& operator >> (std::ostream& out_stream) { char buffer; in_stream.get(buffer); //Получаем очередной символ из потока if (buffer == '\"' || buffer == '\'') { if (is_it_in_quote) { is_it_in_quote = false; out_stream << buffer; out_stream << "\n"; return *this; } is_it_in_quote = true; } if (is_it_in_quote) { out_stream << buffer; } return *this; }};int main() { std::ifstream file("data.txt"); // Открываем файл if (!file.is_open()) { cout << "File is not exits!"; return 1; } QuotesFinder finder(file); // Создаём обёртку из файлового потока while (!finder.eof()) // Пока не достигли конца потока finder >> cout; // переправляем очередной кусок информации в поток вывода}