Теcт по Робототехнике и программированию №2

12.03.2019

Стиль кода

// Проблема С++ в том, что необходимо узнать всё о нём перед тем, как начать писать на нём все что угодно.
// Larry Wall
  1. Когда следует использовать цикл while?

  2. Что такое чрезмерность?

  3. Что делать, если код который мы написали сложен?

  4. Когда могут потребоваться коментарии?

  5. Что следует использовать вместо команды exit?


// Любой дурак сможет написать код, который поймет машина. Хорошие программисты пишут код, который сможет понять человек.
// Martin Fowler
  1. Поправьте код, чтобы он стал более эффективным:
    if (millis() - lastPollingTime > lastPollingTimeOut) { 
        if (millis() > u32wait) u8state++;
    }
  1. Перепишите код так, чтобы условий стало меньше:
    if (grade <= 90 && grade > 80) {
        cout << "A!";
    }
    if (grade >= 90 && grade < 100) {
        cout << "B!";
    }
    if (grade >= 70 && grade < 80) {
        cout << "C!";
    }
  1. Поправьте код так, чтобы он удовлетворял принципам чрезмерности:
    if (sensors_values[2] < smallest_sensor_id) {
      smallest_sensor_id = 2;
    }    
    if (sensors_values[1] < smallest_sensor_id) {
      smallest_sensor_id = 1;
    }
  1. Исправьте ошибки стиля кода:
    int X=18;int Y= 18;
    foo();if(x<y){y+=y+2;x++;}else{y++;}
  1. Исправьте ошибки стиля кода:
    const int voting_age1=18;voting_age1++;
    int voting_age2=18;int Voting_age3=voting_age1;
    if(Voting_age3==voting_age2)return true;

Vim редактор

// Я использую Vim уже 2 года, потому что не могу из него выйти.

С помощью какой команды можно:

  1. Удалить строку?

  2. Удалить строку и перейти в режим вставки?

  3. Сохранить файл и выйти из Vim?

  4. Перейти в конец строки?

  5. Вставить текст ?


// Если вы владеете стандартным Vim, то считайте, что вы приобрели полезный навык на всю жизнь.
  1. Ваш курсор находится на открывающей скобке, как переместиться к закрывающей скобке и обратно?

  2. Как создать строку выше курсора и перейти в режим вставки?

  3. Как одной клавишей войти в режим вставки в конце строки?

  4. Как скопировать 3 строки?

  5. Как отменить предыдущие действия?


Игра на Arduino LCD1602 I2C

Расскажите своими словами, что делает эта команда:

  1. #include <LiquidCrystal_I2C.h>
    
  2. int complexity = 2;
    
  3. unsigned long counter = 0;
    
  4. const unsigned STONES_MAX = 10;
    
  5. const unsigned int RELOAD_TIME = 10;
    

Расскажите своими словами, что делает этот участок кода:

  1. for(int i=0; i<complexity; i++){
    stones[0][i]=random(15,50);
    stones[1][i]=rand()%2; 
    }
    
  2. if(ledState == 1) {
      if(reloads < RELOAD_TIME) {
        reloads++;
      }
      if(fired == true) {
        fired = false;
        reloads = 0;
      }
      box = ox;
    }
    
  3. if(X > 600){
      if(ox >= 15){
        ox = 15;
      }else{
        ox++;
      }
      box = ox;
    }
    if(X<400){
      if(ox<0){
        ox = 0;
      }else{
        ox--;
      }
      box = ox;
    }
    
  4. if (complexity<STONES_MAX && counter > difficulty_divisor*2){
      complexity=counter/difficulty_divisor;
    }
    
  5. for(int i=0; i<complexity; i++){
      if((ox==stones[0][i] || ox==stones[0][i]+1) && oy==stones[1][i]){
        isLife=false;
        break;
      }
    }
    

Когда закончил

  1. Выбери соревнования в которых ты бы хотел принять участие и пришли мне название или ссылку: http://www.russianrobofest.ru/sorevnovaniya/
  2. Читай источники, это важно :)

Источники: