Чем отличаются инструкции continue и break?

Сontinue пропускает оставшиеся операторы в текущем шаге цикла. Вместо них выполняется проверка условного выражения цикла, а break используется для принудительного выхода из циклов do, for или while, не дожидаясь завершения цикла по условию.

Задания для самостоятельного решения

1.Сделайте напряженный вариант игры: пусть интервал между сигналами будет в диапазоне от 10 до 15 секунд.

Листинг:

1. #defineBUZZER_PIN 12 // порт с пьезодинамиком

2. #define PLAYER_COUNT 2 // количество игроков-ковбоев

3. // вместо перечислени¤ всех портов по-одному, мы объ¤вл¤ем пару

4. // списков: один с номерами портов с кнопками, другой Ч со

5. // светодиодами. —писки также называют массивами (англ. array)

6. int buttonPins[PLAYER_COUNT] = {2, 3};

7. int ledPins[PLAYER_COUNT] = {9, 11};

8. void setup()

9. {

10. pinMode(BUZZER_PIN, OUTPUT);

11. for (int player = 0; player < PLAYER_COUNT; ++player) {

12. // при помощи квадратных скобок получают значение в массиве

13. // под указанным в них номером.Ќумераци¤ начинаетс¤ с нул¤

14. pinMode(ledPins[player], OUTPUT);

15. pinMode(buttonPins[player], INPUT_PULLUP);

16. }

17. }

18. void loop()

19. {

20. // даем сигнал Ђпли!ї, выждав случайное врем¤ от 2 до 7 сек

21. delay(random(10000, 15000));

22. tone(BUZZER_PIN, 3000, 250); // 3 килогерца, 250 миллисекунд

23. for (int player = 0; ; player = (player + 1) % PLAYER_COUNT) {

24. // если игрок номер Ђplayerї нажал кнопку...

25. if (!digitalRead(buttonPins[player])) {

26. // ...включаем его светодиод и сигнал победы на 1 сек

27. digitalWrite(ledPins[player], HIGH);

28. tone(BUZZER_PIN, 4000, 1000);

29. delay(1000);

30. digitalWrite(ledPins[player], LOW);

31. }

32. }

33.}

3.Добавьте в игру еще двух ковбоев!

Чем отличаются инструкции continue и break? - student2.ru

Листинг:

1. #defineBUZZER_PIN 13 // порт с пьезодинамиком

2. #define PLAYER_COUNT 4 // количество игроков-ковбоев

3. // вместо перечислени¤ всех портов по-одному, мы объ¤вл¤ем пару

4. // списков: один с номерами портов с кнопками, другой Ч со

5. // светодиодами. —писки также называют массивами (англ. array)

6. int buttonPins[PLAYER_COUNT] = {2, 3, 4, 5};

7. int ledPins[PLAYER_COUNT] = {9, 10, 11, 12};

8. void setup()

9. {

10. pinMode(BUZZER_PIN, OUTPUT);

11. for (int player = 0; player < PLAYER_COUNT; ++player) {

12. // при помощи квадратных скобок получают значение в массиве

13. // под указанным в них номером. Ќумераци¤ начинаетс¤ с нул¤

14. pinMode(ledPins[player], OUTPUT);

15. pinMode(buttonPins[player], INPUT_PULLUP);

16. }

17. }

18. void loop()

19. {

20. // даем сигнал Ђпли!ї, выждав случайное врем¤ от 2 до 7 сек

21. delay(random(10000, 15000));

22. tone(BUZZER_PIN, 3000, 250); // 3 килогерца, 250 миллисекунд

23. for (int player = 0; ; player = (player + 1) % PLAYER_COUNT)

24. {

25. // если игрок номер Ђplayerї нажал кнопку...

26. if (!digitalRead(buttonPins[player])) {

27. // ...включаем его светодиод и сигнал победы на 1 сек

28. digitalWrite(ledPins[player], HIGH);

29. tone(BUZZER_PIN, 4000, 1000);

30. delay(1000);

31. digitalWrite(ledPins[player], LOW);

32. }

33. }

34. }

Эксперимент 13. Секундомер

В этом эксперименте мы создаем секундомер, который считает до 10.

Принципиальная схема

Чем отличаются инструкции continue и break? - student2.ru

Чем отличаются инструкции continue и break? - student2.ru

Код

1. #define FIRST_SEGMENT_PIN 2

2. #define SEGMENT_COUNT 7

3. byte numberSegments[10] = {

4. 0b00111111, 0b00001010, 0b01011101, 0b01011110, 0b01101010,

5. 0b01110110, 0b01110111, 0b00011010, 0b01111111, 0b01111110,

6. };

7. void setup()

8. {

9. for (int i = 0; i < SEGMENT_COUNT; ++i)

10. pinMode(i + FIRST_SEGMENT_PIN, OUTPUT);

11. }

12. void loop()

13. {

14. int number = (millis() / 1000) % 10;

15. int mask = numberSegments[number];

16. for (int i = 0; i < SEGMENT_COUNT; ++i) {

17. boolean enableSegment = bitRead(mask, i);

18. digitalWrite(i + FIRST_SEGMENT_PIN, enableSegment);

19. }

20. }

Вопросы для проверки себя

Наши рекомендации