Какие ошибки возможны при использовании инструкции continue в создании программы

Добавлено 29 мая 2021 в 18:06

Инструкция break

Хотя вы уже видели инструкцию break в контексте операторов switch (7.4 – Основы работы с оператором switch), она заслуживает более полного рассмотрения, поскольку ее можно использовать и с другими типами инструкций управления порядком выполнения программы. Инструкция break вызывает завершение цикла while, цикла dowhile, цикла for или оператора switch, при этом выполнение продолжается со следующей инструкции после цикла или switch, из которых выполнен выход.

Прекращение выполнения switch

В контексте оператора switch инструкция break обычно используется в конце каждой метки case, чтобы показать, что метка case завершена (что предотвращает проваливание к последующим меткам):

#include <iostream>
 
void printMath(int x, int y, char ch)
{
    switch (ch)
    {
    case '+':
        std::cout << x << " + " << y << " = " << x + y << 'n';
        break; // не проваливаться к следующей метке
    case '-':
        std::cout << x << " - " << y << " = " << x - y << 'n';
        break; // не проваливаться к следующей метке
    case '*':
        std::cout << x << " * " << y << " = " << x * y << 'n';
        break; // не проваливаться к следующей метке
    case '/':
        std::cout << x << " / " << y << " = " << x / y << 'n';
        break;
    }
}
 
int main()
{
    printMath(2, 3, '+');
 
    return 0;
}

Для получения дополнительной информации о проваливании вместе с некоторыми дополнительными примерами смотрите урок «7.5 – Проваливание и область видимости в switch».

Прекращение выполнения цикла

В контексте цикла инструкция break может использоваться для преждевременного завершения цикла. Выполнение продолжается со следующей инструкции после конца цикла.

Например:

#include <iostream>
 
int main()
{
    int sum{ 0 };
 
    // Разрешить пользователю ввести до 10 цифр
    for (int count{ 0 }; count < 10; ++count)
    {
        std::cout << "Enter a number to add, or 0 to exit: ";
        int num{};
        std::cin >> num;
 
        // выход из цикла, если пользователь вводит 0
        if (num == 0)
            break; // exit the loop now
 
        // иначе добавляем число к нашей сумме
        sum += num;
    }
 
    // после break выполнение продолжится здесь
    std::cout << "The sum of all the numbers you entered is: " << sum << "n";
 
    return 0;
}

Эта программа позволяет пользователю ввести до 10 чисел и в конце отображает сумму всех введенных чисел. Если пользователь вводит 0, break приводит к преждевременному завершению цикла (до того, как будут введены 10 чисел).

Вот пример выполнения показанной выше программы:

Enter a number to add, or 0 to exit: 5
Enter a number to add, or 0 to exit: 2
Enter a number to add, or 0 to exit: 1
Enter a number to add, or 0 to exit: 0
The sum of all the numbers you entered is: 8

break также является распространенным способом выхода из преднамеренного бесконечного цикла:

#include <iostream>
 
int main()
{
    while (true) // бесконечный цикл
    {
        std::cout << "Enter 0 to exit or anything else to continue: ";
        int num{};
        std::cin >> num;
 
        // выход из цикла, если пользователь вводит 0
        if (num == 0)
            break;
    }
 
    std::cout << "We're out!n";
 
    return 0;
}

Пример выполнения показанной выше программы:

Enter 0 to exit or anything else to continue: 5
Enter 0 to exit or anything else to continue: 3
Enter 0 to exit or anything else to continue: 0
We're out!

break против return

Начинающим программистам иногда трудно понять разницу между break и return. Инструкция break завершает выполнение switch или цикла, и выполнение продолжается с первой инструкции после switch или цикла. Инструкция return завершает выполнение всей функции, в которой находится цикл, и выполнение продолжается в точке, где эта функция была вызвана.

#include <iostream>
 
int breakOrReturn()
{
    while (true) // бесконечный цикл
    {
        std::cout << "Enter 'b' to break or 'r' to return: ";
        char ch;
        std::cin >> ch;
 
        if (ch == 'b')
            break; // выполнение продолжится с первой инструкции за пределами цикла
 
        if (ch == 'r')
            return 1; // return заставит функцию немедленно вернуться в вызывающую
                      // функцию (в данном случае main())
    }
 
   // прерывание цикла приводит к возобновлению выполнения здесь
 
    std::cout << "We broke out of the loopn";
 
    return 0;
}
 
int main()
{
    int returnValue{ breakOrReturn() };
    std::cout << "Function breakOrReturn returned " << returnValue << 'n';
 
    return 0;
}

Вот результаты двух запусков этой программы:

Enter 'b' to break or 'r' to return: r
Function breakOrReturn returned 1
Enter 'b' to break or 'r' to return: b
We broke out of the loop
Function breakOrReturn returned 0

Инструкция continue

Инструкция continue предоставляет удобный способ завершить текущую итерацию цикла без завершения всего цикла.

Вот пример использования continue:

#include <iostream>
 
int main()
{
    for (int count{ 0 }; count < 10; ++count)
    {
        // если число делится на 4, пропустить эту итерацию
        if ((count % 4) == 0)
            continue; // перейти к следующей итерации
 
        // если число не делится на 4, продолжаем
        std::cout << count << 'n';
 
        // инструкция continue переходит сюда
    }
 
    return 0;
}

Эта программа печатает все числа от 0 до 9, которые не делятся на 4:

1
2
3
5
6
7
9

Инструкции continue работают, заставляя текущую точку выполнения переходить в конец текущего цикла.

В случае цикла for конечное выражение цикла for по-прежнему выполняется после continue (поскольку это происходит после конца тела цикла).

Будьте осторожны при использовании инструкции continue с циклами while или dowhile. Эти циклы обычно изменяют значения переменных, используемых в условии, внутри тела цикла. Если использование инструкции continue приводит к пропуску этих строк, цикл может стать бесконечным!

Рассмотрим следующую программу:

#include <iostream>
 
int main()
{
    int count{ 0 };
    while (count < 10)
    {
        if (count == 5)
            continue; // переход к концу тела цикла
 
        std::cout << count << ' ';
 
        ++count; // эта инструкция никогда не выполняется после того,
                 // как счетчик достигнет значения 5
 
        // инструкция continue переходит сюда
    }
 
    return 0;
}

Эта программа предназначена для печати всех чисел от 0 до 9, кроме 5. Но на самом деле она печатает:

0 1 2 3 4

а затем переходит в бесконечный цикл. Когда count равно 5, оператор if принимает значение true, а continue приводит к переходу выполнения в конец цикла. Переменная count не увеличивается. Следовательно, на следующей итерации счетчик по-прежнему равен 5, условие оператора if так же равно true, и программа продолжает цикл бесконечно.

Конечно, вы уже знаете, что если у вас есть очевидная переменная счетчика, вам следует использовать цикл for, а не циклы while или dowhile.

Споры по поводу использования break и continue

Многие учебники предостерегают читателей от использования break и continue в циклах как потому, что они заставляют путь выполнения прыгать, так и потому, что они могут затруднить отслеживание логики пути выполнения. Например, break в середине сложной логической части может быть пропущен, или может быть неочевидно, при каких условиях он должен сработать.

Однако при разумном использовании break и continue могут помочь сделать циклы более читаемыми, уменьшив количество вложенных блоков и уменьшив потребность в сложной логике циклов.

Например, рассмотрим следующую программу:

#include <iostream>
 
int main()
{
    int count{ 0 };            // подсчитывает, сколько раз цикл повторяется
    bool keepLooping { true }; // управляет, завершить цикл, или нет
    while (keepLooping)
    {
        std::cout << "Enter 'e' to exit this loop or any other character to continue: ";
        char ch{};
        std::cin >> ch;
 
        if (ch == 'e')
        {
            keepLooping = false;
        }
        else
        {
            ++count;
            std::cout << "We've iterated " << count << " timesn";
        }
    }
 
    return 0;
}

Эта программа использует логическую переменную, чтобы контролировать, продолжать цикл или нет, а также вложенный блок, который запускается только в том случае, если пользователь не выходит.

А вот версия, которую легче понять, и которая использует инструкцию break:

#include <iostream>
 
int main()
{
    int count{ 0 }; // подсчитывает, сколько раз цикл повторяется
    while (true) // цикл до завершения пользователем
    {
        std::cout << "Enter 'e' to exit this loop or any other character to continue: ";
        char ch{};
        std::cin >> ch;
 
        if (ch == 'e')
            break;
 
        ++count;
        std::cout << "We've iterated " << count << " timesn";
    }
 
    return 0;
}

В этой версии, использующей одну инструкцию break, мы избежали использования логической переменной (и необходимости понимать ее предполагаемое использование, и где изменяется ее значение), оператора else и вложенного блока.

Минимизация количества используемых переменных и уменьшение количества вложенных блоков улучшают понятность кода больше, чем break или continue навредят ему. По этой причине мы считаем приемлемым разумное использование break и continue.

Лучшая практика


Используйте break и continue, когда они упрощают логику цикла.

Споры по поводу использования ранних возвратов

В отношении инструкций return можно привести аналогичный аргумент. Инструкция return, которая не является последней инструкцией в функции, называется ранним возвратом. Многие программисты считают, что ранних возвратов следует избегать. Функция, которая имеет только одну инструкцию return в нижней части функции, отличается простотой – вы можете предположить, что функция без отклонений будет принимать свои аргументы, выполнять любую реализованную логику и возвращать результат. Наличие дополнительных инструкций return усложняет логику.

Контраргумент заключается в том, что использование ранних возвратов позволяет вашей функции завершиться, как только она будет выполнена, что уменьшает необходимость чтения ненужной логики и сводит к минимуму потребность во вложенных условных блоках, что делает ваш код более читабельным.

Некоторые разработчики выбирают золотую середину и используют ранние возвраты только в верхней части функции для проверки параметров (перехвата неверных аргументов), а затем, после этого только одну инструкцию return.

Наша позиция заключается в том, что ранние возвраты скорее полезны, чем вредны, но мы признаем, что в этой практике есть немного искусства.

Лучшая практика


Используйте ранние возвраты, если они упрощают логику вашей функции.

Теги

breakC++ / CppcontinueLearnCppДля начинающихОбучениеПрограммированиеРанний возвратЦикл

My Software Engineering teacher just said: «Avoid using continue and break, always make it work without using these». Is there a problem with these instructions? I would say he didn’t say something so coherent, but maybe I don’t know something about it?

theonlygusti's user avatar

asked Dec 7, 2021 at 0:50

Shi Nha's user avatar

14

Some teachers oversimplify on this topic (especially when they only teach, but don’t do daily real-world programming any more). Of course, I don’t know if that applies to your teachers, but I would not listen to the advice against continue and break too literally.

continue and break can make loops more readable or less readable, depending on how they are used. The real problem are loops with too large inner bodies and many conditions for stopping them or executing only parts. Having multiple continue and break in such a loop is only a symptom for this «disease», but working around those keywords just formally isn’t the cure.

If running into such a situation, one could try to avoid the mentioned keywords by using boolean flags and complex if/else blocks instead, but that will not make the code simpler. Quite the opposite — often it will become even uglier.

So what is the cure?

  • Refactor inner parts of large loops into smaller functions. These functions might return some status information which can be used to control the outer calling loop, and it can be perfectly fine to use break or continue controlled by the returned status. If the functions are still complex, decompose them to smaller functions themselves.

  • Avoid processing too many things in one loop. Instead, organize your code to process sets of data, which can lead to a sequence of two or three simpler loops instead of one complex one. So there might be one loop which produces some intermediate array of data, then a second one which takes the output of the first loop, iterates over this data and hands the result set to a third. Often, each of these loops can be put into a function on their own, returning its result set, which is passed as a parameter into the next function.

You will be astonished how much much simpler your code will get when you just apply these two guidelines rigorously.

answered Dec 7, 2021 at 6:26

Doc Brown's user avatar

Doc BrownDoc Brown

195k33 gold badges358 silver badges555 bronze badges

23

You’ve been given some incomplete and oversimplified advice. However, that’s not necessarily a bad thing on your teacher’s part, as it’s nearly impossible to explain the finer nuances of software development practices to newcomers straight out of the gate (without teaching at a snail’s pace and boring the students to death).

What your teacher is trying to achieve here is that you learn to write iterations the proper way, without immediately starting to reach for the crutches that continue and break are. It’s not that you’ll never be allowed to use them as a developer, it’s that you are being forbidden from using them right now as a student, specifically so that you learn to write iterations the right way.

It’s the equivalent of telling a math student that they can’t use a calculator, or an apprentice carpenter that they can’t use a nail gun. Not because calculators and nail guns are bad, but because they are a shortcut that causes you to not learn how to do math in your head or create proper fitting wood joints.

answered Dec 7, 2021 at 10:45

Flater's user avatar

FlaterFlater

41.7k8 gold badges83 silver badges115 bronze badges

2

Good programming requires prioritizing a number of principles. Two of those principles are to avoid needlessly using «break» and, especially, «continue», but those principles should be set aside when they would conflict with other more important principles.

When I was first learning to program in the 1970s, a common paradigm was:

Read a record
While last read was successful
  Process a record
  Read a record
End While

Writing the code in this way will ensure that every iteration of the loop will run to completion, which is a desirable principle to uphold, but violates another principle «Don’t repeat yourself» by requiring that the instructions to read a record be included twice in the code. I think it’s valuable to be able to give priority to different principles depending upon circumstances, even though I think for most purposes today a better pattern would be:

Begin Loop
  Read a record
  If read failed then
    Exit Loop
  End If
  Process a record
End Loop

Thus, for purposes of an academic exercise, writing the loop with the old pattern is useful, even though in most situations the modern approach would be more appropriate.

answered Dec 7, 2021 at 18:35

supercat's user avatar

supercatsupercat

8,26521 silver badges28 bronze badges

3

Very often the advice for a beginner and for an advanced person is different. In your case: If you ask whether you should avoid continue and break, then you should. Until you are advanced enough to make your own decision.

Important: In following the advice, don’t replace continue and break with something worse. Both continue and break can be easily replaced with a goto statement (if your instructor didn’t mention goto). That would be 100 times worse. Often break inside a loop can be replaced with a return statement — which is say twice as bad. Often continue or break are the natural way to express your intent, and replacing them makes your code worse.

Where it is excellent advice is when you use break or continue as a convoluted solution to your problem when something else is much easier. For example, if I saw this just at the end of a loop:

if (x == 0) continue;
y = x;

instead of the simple

if (x != 0) y = x;

then get rid of the continue.

answered Dec 7, 2021 at 11:09

gnasher729's user avatar

gnasher729gnasher729

40.7k4 gold badges56 silver badges114 bronze badges

6

One point not already mentioned is that with break, and possibly continue, reasoning formally about/with loop invariants (also on SO) becomes more complicated.

answered Dec 7, 2021 at 16:29

Pablo H's user avatar

Pablo HPablo H

5802 silver badges7 bronze badges

2

#include <stdio.h>

int main(void) {
    int i = 0;

    do {
        printf("%d", i++);
        if(i == 1) continue;
    } while(i == 0);
}

Почему программа выводит только 0, а не 01?

задан 13 июл 2020 в 9:50

бог's user avatar

3

continue не пропускает условие цикла, а только оставшуюся часть тела.

У вас после него в теле ничего нет, поэтому оно ни на что не влияет.

ответ дан 13 июл 2020 в 9:53

HolyBlackCat's user avatar

HolyBlackCatHolyBlackCat

25.3k3 золотых знака26 серебряных знаков38 бронзовых знаков

5

Для инструкции continue стандарт дает не двусмысленное объяснение для каждого из циклов:

The continue statement shall occur only in an iteration-statement and
causes control to pass to the loopcontinuation portion of the smallest
enclosing iteration-statement, that is, to the end of the loop.
More precisely, in each of the statements

while (foo) {       do {               for (;;){
  {                   {                 {
    // ...              // ...            // ...
  }                   }                 }
contin: ;           contin: ;          contin: ;
}                   } while(foo)       }

a continue not contained in an enclosed iteration statement is
equivalent to goto contin.

ответ дан 13 июл 2020 в 10:28

Croessmah stands with Russia's user avatar

2

мы вначале попадаем в блок do. там вызывается

printf("%d", i++);

так как изначально i = 0; печатается: «0», а затем только увеличивается.

после printf у нас i = 1;
дальше пытаемся перейти на следующую итерацию. но так как в условии:

while(i == 0);

выходим из цикла. Поэтому да, напечатается только один раз

ответ дан 13 июл 2020 в 9:58

Aptem_f's user avatar

Aptem_fAptem_f

4962 серебряных знака14 бронзовых знаков

5


Подборка по базе: Итоговая аттестация для учителей.docx, дневник восп.работы 7 класса.docx, Суммативная работа по английскому языку за 4 четверть для 10 кла, Методическое руководство по выполнению практических работ в 1С А, Методическое руководство по выполнению практических работ в 1С А, Административная контрольная работа по информатике для 8 класса, Контрольный диктант с грамматическим заданием для 5 класса по те, Олимпиада по русскому языку для 4 класса с ответами — копия.docx, ПРИМЕР План воспитательной работы классного руководителя 6 класс, Практическая работа 2 Руководство оператора.docx


Тема урока
4.4. Управление циклом continue
Цели обучения, ко-
торые достигаются
на данном уроке
(ссылка на учебную
программу)
8.3.3.3 использовать инструкции управления циклом (continue (континю), break (брик), else (элс))
Цели урока
Все учащиеся определяют понятия и функцию инструкции continue.
Большинство учащихся анализирует выполнение и применение инструкции continue.
Некоторые учащиеся формулируют важность использования инструкции continue.
Уровень мысли-
тельных навыков
Знание, понимание, применение, анализ, синтез, оценивание
Критерии
оценивания
— определить понятия и функцию инструкции Continue;
— анализировать выполнение и применять инструкцию Continue;
— сформулировать важность использования инструкции Continue.
Языковые цели
Предметная лексика и терминология
Continue – продолжить – жалғастыру;
Instruction – инструкция – нұсқаулық.
Фразы для устной и письменной работы
Руководство цикла, которое с помощью определенного условия остановит итерацию текущего цикла и заменит на итерацию следующий цикл, называется…
Инструкцию Continue можно использовать в двух видах цикла, это: … цикл и … цикл.
Привитие
ценностей
1. В соответствии с общенациональной идеей «Мәңгілік ел» формируется ценность и значение «Общества всеобщего труда».
2. Сотрудничество: в процессе групповой работы складываются дружеские отношения, развиваются навыки сотрудничества и конструктивное отношение, формируются навыки критического мышления.
3. Академическая честность: уважает идеи и мнение других, то есть придерживается принципов академической честности.
4. Обучение в течение всей жизни; формируются навыки казахстанского патриотизма и гражданской ответственности.
Межпредметные
связи
Операторы, используемые в программе и в проекте, пишутся на английском языке.
Предыдущие знания Цикл for, while
Ход урока
Этапы урока/
Время
Действия учителя
Действия учащихся
Оценивание
Ресурсы
Начало урока
3 мин
Организационный момент: приветс- твие и отметка учащихся.
Создание благоп- риятной психоло- гической атмосфе- ры в классе.
Метод «Букет по- желаний».
Деление на группы
Учащиеся приветствуют учителя.
Встают в круг, говорят друг другу пожелания.
Произносят буквы А, В, С.
Те учащиеся, которые повторяли одинаковые буквы, создают одну группу.
Цветы

79 6 мин
3 мин
Развитие интереса к уроку
Метод «Кластер»
С помощью стратегии «Мозго- вой штурм» уста- навливается связь между предыду- щим и новым уро- ком и совместно решаются пробле- мы:
Для формирования критического мышления у учащихся, ис- пользуя метод
«Кинометафора».
Показывается ви- деоролик на тему
«Времена года».
Учащиеся сгруппируют все полу- ченные знания и информацию с предыдущих уроков в кластер.
Каждый ученик делится своим мнением.
– Может ли человек вмешаться или управлять определенным цик- лическим процессом, который происходит в повседневной жиз- ни? Приведите примеры.
– Что можно сделать, чтобы перей- ти к следующему шагу, упустив некоторые предыдущие шаги цик- ла при выполнении программы?
Оценивание по балльной системе
2 балла
Плакат, мар- кер.
Активные методы обу- чения NIS.
Астана 2013 https://youtu.b e/p7rHT_MHE
Ak
Середина урока
3 мин
5 мин
15 мин
Осмысление
Работа с учебником
Групповая работа
Задачи дифферен- циации
Учащиеся знакомятся с информа- цией из учебника, учитель ви- зуально демонстрирует материалы с помощью слайдов.
Сделайте анализ кода программы примера 2 (рис. 4). Можно ли реа- лизовать этот пример с использо- ванием цикла while вместо цикла for? Если да, то какие изменения необходимо внести в код програм- мы. Объясните причины
Дескрипторы:

Обсуждают выполнение ин- струкции Continue.
Учащиеся выполняют задачи диф- ференциации.
Задание 1
Напишите программный код, ко- торый отображает на экране все числа между K и P, у которых пос- ледняя цифра равна t.
Код программы:
N,M=map(int,input().split()) s=0 for i in range(N,M+1): if i % 2==0: s=s+i continue print(i,end=’ ‘)
Оценивание по балльной системе
2 балла
Оценивание по балльной системе
6 баллов
Учебник
Компьютер, учебник

80 print(s,end=’ ‘)
Дескрипторы:

Находят числа, у которых последняя цифра равна t, и пишут код.

Используют инструкцию сon- tinue.

Составляют код программы.

Проверяют результат на ком- пьютере.
Задание 2
Дано положительное целое число
N. Разработайте программный код, который в этом числе удалит все цифры, равные P, и отобразит ос- тавшиеся цифры в обратном порядке.
N,M=map(int,input().split()) while N < M:
N=N+1 print(N) if N== 16: quit() if N % 2==0: continue print(N,end=’ ‘)
Дескрипторы:

Находят код удаления цифры, встречающийся в числах.

Пишут код программы, отоб- ражающий цифры в обратном порядке.

Проверяет код программы на компьютере.
Задание 3
Дана строка S, состоящая из строчных букв английского алфавита. Создайте программный код, который из этой строки удаляет гласные и отображает на экране только согласные. В английском языке есть шесть гласных букв «a», «e», «i», «o», «u» и «y».
S=input(‘S=’) for i in S: if i==’A’ or i==’a’: continue print(i,end=»)
Дескриптор:

Находят код ввода строки S.

Находят код выполнения цик- ла.

Находят гласные и согласные буквы.

Проверяют код программы на компьютере.
Задание 4

81
В марте во всех регионах Казах- стана погода переменчивая. С нас- туплением весны солнце прогре- вает землю, но в некоторые дни температура опускается ниже нуля. Приводится средняя темпе- ратура воздуха в марте в стране между A и B (1≤А≤B≤31). Создай- те программу с использованием
сontinue, которая будет определять количество дней, когда температу- ра выше нуля. Ввод данных осу- ществляется последовательно.
Дескрипторы

Определяют дни, в которых указана средняя температура воздуха.

Записывают код, опреде- ляющий дни, где температура воздуха выше нуля.

Проверяют программный код.
Конец урока
3 мин
2 мин
Размышление
Закрепление нового урока.
Обратная
связь:
«Плюс, Минус, Ин- тересно».
Учащиеся отвечают на вопросы:
1. Какова функция инструкции сontinue?
2. Какие ошибки возможны при использовании инструкции сontinue в создании програм- мы?
3. Приведите примеры ис- пользования инструкции сontinue.
Обратная связь. «Плюс» – учащие- ся пишут о факторах, которые по- ложительно подействовали, и про полученные знания. «Минус» – пишут те стороны урока, где воз- никают вопросы и которые вызы- вают трудности; «Интересно» – здесь они пишут, что было им ин- тересно во время урока или о чем бы они хотели знать в дальнейшем.
Лист А4
Материалы из интернета
Дифференциация – каким образом вы
планируете оказать больше поддерж-
ки? Какие задачи вы планируете по-
ставить перед более способными уча-
щимися?
Оценивание – как вы планируете проверить
уровень усвоения материала учащимися?
Здоровье и
соблюдение
техники без-
опасности
Освоение урока осуществляется с помощью групповой, коллективной и индивидуальной работы.
Оценивание проводится с помощью смайликов, формативное оценивание проводится устно и письменно.
Напоминание правил техни- ки безопас- ности.
Общая оценка
Какие два аспекта в обучении прошли хорошо (с учетом преподавания и учения)?
1.
2.
Что могло бы способствовать улучшению урока (с учетом преподавания и учения)?
1.
2.
Что я выявил(а) за время урока о классе или достижениях/трудностях отдельных учеников, на что необ-

82
Урок №21
ходимо обратить внимание на последующих уроках?
Раздел долгосрочного планирования: Школа:
Раздел IV. Программирование алгоритмов на языке программирования Python.
Дата: Ф.И.О. учителя:
Класс: 8 Количество присутствующих: отсутствующих:
Тема урока
4.5. Управление циклом break
Цели обучения, кото-
рые достигаются на
данном уроке (ссылка
на учебную программу)
8.3.3.3 использовать инструкции управления циклом (continue, break, else)
Цели урока
Все учащиеся определяютпонятия и функции инструкции Break.
Большинство учащихся анализируют выполнение и применение инструкции
Break.
Некоторые учащиеся формулируют важность применения инструкции Break
Уровень мыслитель-
ных навыков
Знание, понимание, применение, анализ, синтез, оценивание
Критерии
оценивания
— определить понятие и функции инструкции Break;
— анализировать выполнение и применение инструкции Break;
— сформулировать важность применения инструкции Break.
Языковые цели
Предметная лексика и терминология
Break – үзілу – ломать
Фраза для устных и письменных ответов
Инструкция цикла, в котором текущий цикл останавливает свою работу сразу при
выполнении определенных условий и работа программы выводится из цикла, назы-
вается…
Привитие
ценностей
1. В соответствии с общенациональной идеей «Мәңгілік ел» формируется ценность и значение «Общества всеобщего труда».
2. Сотрудничество: в процессе групповой работы складываются дружеские отно- шения, развиваются навыки сотрудничества и конструктивное отношение, форми- руются навыки критического мышления.
3. Академическая честность: уважает идеи и мнение других, то есть придерживает- ся принципов академической честности.
4. Обучение в течение всей жизни: формируются навыки казахстанского патрио- тизма и гражданской ответственности.
Межпредметные связи Программные коды пишутся на английском языке; применяются математические операции.
Предыдущие знания
Управление циклом Continue
Ход урока
Этапы урока/
Время
Действия
учителя
Действия учащихся
Оценива-
ние
Ресурсы
Начало урока
5 мин
Организацион- ный момент.
Приветствие и отметка учащих- ся.
Создание бла- гоприятной ат- мосферы в классе.
Метод «Домик».
Учащиеся приветствуют учителя.
Учащиеся в паре строят домик. Внутри домика живут жильцы. Когда учитель говорит жильцам поменяться, они ме- няются. Когда говорит, чтобы поме- няли домик, они меняют домик. Когда говорит, чтобы жильцы объединились в пары, учащиеся так и делают.
Жильцы заходят в пустые домики.
Таким образом учащиеся объединяют- ся в группы.
Материалы из интернета
Активные ме- тоды обучения
NIS. Астана

83 6 мин
Развитие интере- са к уроку
Групповая рабо- та
С помощью стратегии
«Мозговой штурм» устанав- ливается связь между предыду- щим и новым уроком; совмест- но решаются проблемы:
Учащиеся выполняют работу в груп- пах.
1-я группа: Какую функцию выполняет инструкция Сontinue?
2-я группа: Как возникла необходимос- ть использования инструкции Сontinue при создании программы?
3 группа: Приведите пример использо- вания инструкции Сontinue.
Учащиеся отвечают на вопросы:
– Можно ли при необходимости оста- новить определенный циклический процесс, который происходит в повседневной жизни? Приведите при- меры.
– Что делать, чтобы приостановить ра- боту цикла после достижения соот- ветствующего результата при выпол- нении программы?
Оценивание по балльной системе
2 балла
2013
Конец урока
3 мин
5 мин
5 мин
Осмысление.
Работа с учебником
Групповая рабо- та
Выполнение практических задач
Учащиеся знакомятся с информацией в учебнике, учитель демонстрирует слайды.
Цель: создание условий для обучения учеников.
Учащиеся работают в группах.
– Проанализируйте графические блок- схемы break и сontinue, а также коды программ, в которых они были ис- пользованы. Сравните графические блок-схемы инструкций с программой.
Как создать блок-схемы другим способом?
Дескриптор

Определяют код и блок-схему цикла Вreak.

Определяют блок-схему и код программы цикла Сontinue.

Сравнивают работу циклов Вreak и
Сontinue.
Задача №1
Дано положительное целое число N.
Если какая-либо цифра заданного чис- ла равна нулю, то остановите цикл и в результате выведите «Error», в против- ном случае отобразите само число в обратном порядке.
N=int(input(‘N=’)) p=0 for i in range(): x=int(input(»)) if x == 0: p=i; break print(‘index=’,p)
Дескрипторы:

Определяют код ввода данного числа.
Оценивание по балльной системе
2 балла
Учебник
Компьютер, учебник
Компьютер, учебник

84 6 мин
5 мин
Задачи диффе- ренциации

Записывают код программы на- хождения числа нуль среди других чисел.

Применяют цикл Break.

Проверяют код программы.
Учащиеся выполняют задачи.
Задача №2
Дана строка S, состоящая из латинских букв и запятой «,». Создайте блок- схему алгоритма и программу, которая отображает на экране буквы до запятой из данной строки и их количество. s=0 for i in range(11, 21): s=s+i%10 if s>15: break print(s)
Дескрипторы:

Записывают код определения букв до запятой в строке S.

Записывают код определения ко- личества букв.
Задача №3
Дано положительное целое число N.
Создайте блок-схему, которая находит наименьшую из цифр этого числа.
Напишите программный код задачи. n = int(input()) while n!= 0: if (n

заданной после- довательности есть дробь, а в противном случае выводит ответ
«no». Данные в прог- рамме должны вво-
Оценивание по балльной сис- теме
2 балла

90 диться вертикально.
Дескрипторы:
— определяют выпол- нение цикла в программе;
— находят код записи цикла Else;
— проверяют код программы.
Конец урока
3 мин
2 мин
Размышление
Закрепление новых знаний:
«Диаграмма Венна»
Оценивание достижений учащихся с помощью электронных тестов, подготовленных в программе Plickers.
Обратная связь: ме- тод«Таблица ЗХУ».
Оцените основные сходства и отличия инструкций bгеак,
сontinue, else цикла сравнением. Какова значимость этих инструкций в разработке программы?
Насколько облегчится создание программы?
Поделитесь мыслями.
Учащиеся выполняют тестовые задания.
Учащиеся записывают в таблицу, что они рань- ше знали о данной теме, что узнали и что допол- нительно хотели бы узнать.
Оценивание по балльной сис- теме
2 балла
Бумага А4
Интерактивная доска
Дифференциация – каким образом вы
планируете оказать больше поддерж-
ки? Какие задачи вы планируете по-
ставить перед более способными уча-
щимися?
Оценивание – как вы планируете
проверить уровень усвоения мате-
риала учащимися?
Здоровье и со-
блюдение тех-
ники безопас-
ности
Освоение урока осуществляется с помощью групповой, коллективной и ин- дивидуальной работы. Создание благоп- риятной психологической атмосферы в классе методом «Мне нравится в дру- ге…».
Деление на группы, используя метод
«Небесные тела», установить связь между предыдущим и новым уроком с помощью метода «Мозговой штурм», в разделе ос- мысление используются групповые и уровневые задания, для того чтобы уча- щиеся смогли осмыслить важность изучаемой темы. На этапе размышления используется «Диаграмма Венна», прово- дится мини-тест, проведение обратной связи методом «Таблица ЗХУ».
Оценивание проводится с помощью баллов, формативное оценивание про- водится устно и письменно.
Напоминание правил техники безопасности во время работы с компьютером.
Общая оценка
Какие два аспекта в обучении прошли хорошо (с учетом преподавания и учения)?

91
Урок №23
1.
2.
Что могло бы способствовать улучшению урока (с учетом преподавания и учения)?
1.
2.
Что я выявил(а) за время урока о классе или достижениях/трудностях отдельных учеников, на
что необходимо обратить внимание на последующих уроках?
Раздел долгосрочного планирования: Школа:
Раздел IV. Программирование алгоритмов на языке программирования Python
Дата: Ф.И.О. учителя:
Класс: 8 Количество присутствующих: отсутствующих:

Какие есть способы использовать continue в функции ,которая вызывается в цикле?
Когда пишу continue в функции выскакивает ошибка

#main
import utils
while True:
    a = input()
    if a == 1:
        utils.util('1')
#utils
def util(a):
    if a=='1':
        print(a)
        continue


  • Вопрос задан

    более трёх лет назад

  • 295 просмотров

Нет. Ты странного хочешь. Рейзи исключение в функции, в цикле её лови и делай continue.

Пригласить эксперта

В вашем вопросе есть уже половина ответа. Сontinue используется в только внутри цикла, а в вашем коде в функции util цикла нет.

while <test1>:
    <statements1>
    if <test2>: break         # Выйти из цикла, пропустив часть else
    if <test3>: continue    # Перейти в начало цикла, к выражению test1
else:
    <statements2> # Выполняется, если не была использована инструкция ‘break’

Инструкция continue вызывает немедленный переход в начало цикла.


  • Показать ещё
    Загружается…

19 мая 2023, в 20:55

500 руб./за проект

19 мая 2023, в 19:51

40000 руб./за проект

19 мая 2023, в 19:29

5000 руб./за проект

Минуточку внимания

Понравилась статья? Поделить с друзьями:
  • Hp smart tank 510 руководство
  • Небулайзер для ингаляций анд инструкция по применению
  • Небулайзер для ингаляций анд инструкция по применению
  • Часы классного руководства в спо
  • Стиральная машина lg wd 80250sup инструкция