Цикл for в C++: блок-схема и примеры использования

В этом руководстве мы узнаем о цикле for в C++ и его работе с помощью примеров. В компьютерном программировании циклы используются для повторения блока кода.

Например, предположим, что мы хотим показать сообщение 100 раз. Тогда вместо того, чтобы писать оператор печати 100 раз, мы можем использовать цикл.

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

В С++ существует 3 типа циклов:

  • цикл for;
  • цикл while;
  • цикл do…while.

В этом руководстве основное внимание уделяется циклу for в C++.

for loop

Синтаксис цикла for:

for (initialization; condition; update) {
    // body of-loop 
}

Где:

  • initialization – инициализирует переменные и выполняется только один раз;
  • condition – если true, то тело цикла for выполняется, если false, цикл for завершается;
  • update – обновляет значение инициализированных переменных и снова проверяет условие.

Блок-схема цикла for

Пример 1: печать чисел от 1 до 5

#include <iostream>

using namespace std;

int main() {
        for (int i = 1; i <= 5; ++i) {
        cout << i << " ";
    }
    return 0;
}

Вывод:

1 2 3 4 5

Вот как работает эта программа:

ИтерацияПеременнаяi <= 5Действие
1-йя = 1true1 напечатан. i увеличивается до 2.
2-йя = 2true2 напечатано. i увеличивается до 3.
3-йя = 3true3 напечатано. i увеличивается до 4.
4-йя = 4true4 напечатано. i увеличивается до 5.
5-йя = 5true5 напечатано. i увеличивается до 6.
Шестойя = 6trueЦикл завершен

Пример 2: отображение текста 5 раз

// C++ Program to display a text 5 times

#include <iostream>

using namespace std;

int main() {
    for (int i = 1; i <= 5; ++i) {
        cout <<  "Hello World! " << endl;
    }
    return 0;
}

Вывод:

Hello World!
Hello World!
Hello World!
Hello World!
Hello World!

Вот как работает эта программа в С++:

ИтерацияПеременнаяi <= 5Действие
1-йя = 1trueПечатается Hello World!, и i увеличивается до 2.
2-йя = 2trueПечатается Hello World!, и i увеличивается до 3.
3-йя = 3trueПечатается Hello World!, и i увеличивается до 4.
4-йя = 4trueПечатается Hello World!, и i увеличивается до 5.
5-йя = 5trueПечатается Hello World!, и i увеличивается до 6.
Шестойя = 6falseЦикл завершен

Пример 3: нахождение суммы первых n чисел

// C++ program to find the sum of first n natural numbers
// positive integers such as 1,2,3,...n are known as natural numbers

#include <iostream>

using namespace std;

int main() {
    int num, sum;
    sum = 0;

    cout << "Enter a positive integer: ";
    cin >> num;

    for (int count = 1; count <= num; ++count) {
        sum += count;
    }

    cout << "Sum = " << sum << endl;

    return 0;
}

Вывод:

Enter a positive integer: 10
Sum = 55

В приведенном выше примере у нас есть две переменные – num и Sum. Переменной Sum присваивается 0, а переменной num присваивается значение, указанное пользователем.

Обратите внимание, что мы использовали цикл for.

for(int count = 1; count <= num; ++count)

Где:

  • int count = 1: инициализирует переменную count;
  • count <= num: запускает цикл до тех пор, пока count меньше или равно num;
  • ++ count: увеличивайте переменную count на 1 на каждой итерации.

Когда count становится 11, условие ложно и Sum будет равна 0 + 1 + 2 + … + 10.

Представление цикла for

В C++ 11 был представлен новый цикл for на основе диапазона для работы с коллекциями, такими как массивы и векторы. Его синтаксис:

for (variable : collection) {
    // body of loop
}

Здесь для каждого значения в collection выполняется цикл for, и значение присваивается variable.

Пример 4: на основе диапазона

#include <iostream>

using namespace std;

int main() {
  
    int num_array[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
  
    for (int n : num_array) {
        cout << n << " ";
    }
  
    return 0;
}

Вывод:

1 2 3 4 5 6 7 8 9 10

В приведенной выше программе мы объявили и инициализировали массив int с именем

num_array. В нем 10 элементов.

Здесь мы использовали цикл for на основе диапазона для доступа ко всем элементам в массиве C++.

Бесконечный цикл for

Если условие в цикле for всегда truth, оно выполняется бесконечно (пока память не заполнится). Например:

// infinite for loop
for(int i = 1; i > 0; i++) {
    // block of code
}

В приведенной выше программе условие всегда truth, после чего код будет выполняться бесконечное количество раз.

НОУ ИНТУИТ | Лекция | Блок-схемы. Графическая реализация алгоритмов

< Лекция 7 ||

Лекция 2: 12345

Аннотация: Блок-схемы представляют собой наглядную реализацию алгоритма. Рассмотрим, как графически представлять разные виды алгоритмов на математических задачах и ситуациях из жизни. Цель данной лекции – ознакомить студентов с понятием блок-схемы; показать основные конструкции реализации разных видов алгоритма; показать принципы проверки блок-схем и получения по ним ответа.

Занятие 1. Понятие блок-схемы. Основные виды блоков

Блок-схема – это графическая реализация алгоритма.

Блок-схема представляет собой удобный и наглядный способ записи алгоритма.

Блок-схема состоит из функциональных блоков разной формы, связанных между собой стрелками. В каждом блоке описывается одно или несколько действий. Основные виды блоков представлены в табл.

2.1.

Таблица 2.1. Виды блоков
Форма блокаНазначение блока
начало и конец блок-схемы
блок ввода данных
блок выполнения действия
блок условия
блок вывода данных

Любая команда алгоритма записывается в блок-схеме в виде графического элемента – блока, и дополняется словесным описанием.

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

Блок начала блок-схемы имеет один выход и не имеет входов, блок конца блок-схемы имеет один вход и не имеет выходов. Блок условия – единственный блок, имеющий два выхода, т.к. соответствует разветвляющемуся алгоритму. На одном выходе указывается «да», на другом – «нет». Все остальные блоки имеют один вход и один выход. Блок выполнения действия может содержать присвоение значения переменной (например «») или вычисление (например «»).

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

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

Дальше >>

< Лекция 7 || Лекция 2: 12345

Введение в повторение и циклы в LabVIEW

Циклы и операторы case в текстовых языках программирования представлены в виде структур в графическом программировании. Повторение и цикл используются для частого выполнения действия с изменением деталей каждый раз. LabVIEW состоит из цикла FOR и цикла WHILE. Эти циклы используются для управления повторяющимися операциями. Структуры на блок-диаграмме используются для повторения блоков кода и выполнения кода условно или в определенном порядке. LabVIEW включает в себя такие структуры, как цикл While, цикл For, структура Case, структура Stacked Sequence, структура Flat Sequence, структура Event и узел формулы. В этой главе представлены циклы в LabVIEW, итеративная передача данных в циклах и синхронизация цикла, а также функции, обычно используемые с этими структурами, включая сдвиговый регистр и узел обратной связи.

Если вы хотите расширить свою карьеру с сертифицированным специалистом по Android, посетите Mindmajix — глобальную платформу онлайн-обучения: курс « LabVIEW training ». Этот курс поможет вам достичь совершенства в этой области.

Цикл For выполняет поддиаграмму заданное количество раз. На рис. 4.1(a) показан цикл For в LabVIEW, а на рис. 4.1(b) показана блок-схема, эквивалентная функциональным возможностям цикла For. Цикл For расположен на палитре Functions>>Programming>>Structures. Выберите в палитре цикл по элементам и с помощью курсора перетащите прямоугольник выделения, чтобы создать новый цикл по элементам или вокруг части блок-диаграммы, которую вы хотите повторить. Вы также можете поместить цикл While на блок-диаграмму, щелкнуть правой кнопкой мыши границу цикла While и выбрать в контекстном меню пункт «Заменить циклом For», чтобы изменить цикл While на цикл For.

 
Терминалы счета и итерации представляют собой 32-разрядные целые числа со знаком. Если вы подключаете число с плавающей запятой к терминалу счетчика, LabVIEW округляет его и принуждает к допустимому диапазону. Если вы подключите 0 или отрицательное число к клемме счетчика, цикл не будет выполняться, и выходные данные будут содержать данные по умолчанию для этого типа данных. Цикл For может выполнять только целое число несколько раз.

Часто задаваемые вопросы и ответы интервью LabVIEW

Пример 1: Создайте ВП с использованием цикла For Loop, который автоматически изменяет цвет цветового поля в течение заданного количества итераций, как показано на рис. 4.3.
 

Решение: Передняя панель этого ВП состоит из числового элемента управления для указания количества итераций и рамки цвета для отображения различных цветов, как показано на рисунке. Индикатор Color Box в рамке находится в палитре Controls>>Modern>>Numeric.

 На блок-схеме функция RGB to Color используется для создания различных цветов на основе комбинации значений, заданных для красного, зеленого и синего терминалов. Функция RGB to Color находится в палитре Функции>>Программирование>>Число>>Преобразование.

Как указано в решении, цикл For будет выполняться три итерации. Значение терминала итерации, добавленное к 1, дается в качестве входных данных для одного из терминалов функций умножения для каждой итерации. Значение итерации умножается на 50, 100 и 150 для получения значений красного, зеленого и синего соответственно. Эти значения передаются функции RGB to Color. Эта функция RGB to Color создает три разных цвета на основе значений красного, зеленого и синего. Полученные цвета отображаются в обрамленном индикаторе Color Box. Цикл For будет выполняться только для трех итераций, поскольку количество итераций установлено равным 3. Количество итераций можно увеличить, чтобы получить больше цветов.

WHILE LOOPS

Цикл While выполняет поддиаграмму до тех пор, пока не будет выполнено условие. Цикл «пока» аналогичен циклу «сделать» или циклу «повторять до» в текстовых языках программирования. На рис. 4.4(а) показан цикл «пока» в LabVIEW, а на рис. 4.4(б) — блок-схема, эквивалентная циклу «пока». Цикл while всегда выполняется хотя бы один раз. Цикл For отличается от цикла While тем, что цикл For выполняется заданное количество раз. Цикл While останавливает выполнение поддиаграммы только в том случае, если ожидаемое значение на условном терминале существует.

Ознакомьтесь с учебными пособиями по LabVIEW

В LabVIEW цикл WHILE расположен на палитре Функции>>Программирование>>Структуры. Вы также можете поместить цикл For на блок-диаграмму, щелкнуть правой кнопкой мыши границу цикла For и выбрать в контекстном меню пункт Replace with While Loop, чтобы изменить цикл For на цикл While. Цикл while содержит два терминала, а именно условный терминал и терминал итерации. Условный терминал используется для управления выполнением цикла, тогда как итерационный терминал используется для определения количества завершенных итераций.

 

Обычные языки программирования поддерживают два типа конструкций WHILE, как показано на рис. 4.5. Они называются режимами до и после тестирования. В предтестовом режиме условие проверяется перед выполнением каждой итерации, и если результат неверен, то выполнение цикла прерывается. В посттестовом режиме тест проводится только в конце цикла. Функционально основное отличие состоит в том, что в посттестовом режиме, даже если условие ложно при первом выполнении или первой итерации, цикл будет выполнен хотя бы один раз, поскольку тест выполняется только в конце цикла. LabVIEW поддерживает только посттестовую форму конструкции While.

 

 Цикл While выполняет поддиаграмму до условного терминала и получает определенное логическое значение. Поведение и внешний вид условного терминала по умолчанию — Stop if True, как показано на рис. 4.6(a). Когда условный терминал находится в состоянии Stop if True, цикл While выполняет свою поддиаграмму до тех пор, пока условный терминал не получит значение TRUE. Вы можете изменить поведение и внешний вид условного терминала, щелкнув правой кнопкой мыши терминал или границу цикла «Пока» и выбрав «Продолжить, если правда» в контекстном меню, как показано на рис. 4.6b). Когда условный терминал находится в состоянии Continue if True, цикл While выполняет свою поддиаграмму до тех пор, пока условный терминал не получит значение FALSE. Вы также можете использовать рабочий инструмент, чтобы щелкнуть условный терминал, чтобы изменить условие. VI показывает ошибку, если условный терминал не подключен.

Вы также можете выполнять базовую обработку ошибок, используя условный терминал цикла While. Когда вы связываете кластер ошибок с условным терминалом, на терминал передается только значение TRUE или FALSE параметра состояния кластера ошибок. Кроме того, пункты контекстного меню «Остановить, если правда» и «Продолжить, если правда» меняются на «Остановить, если ошибка» и «Продолжить, пока ошибка».

 

 Терминал итерации «i» (выходной терминал) содержит количество завершенных итераций. Счетчик итераций всегда начинается с нуля. Во время первой итерации терминал итерации возвращает 0. На рис. 4.7 показан простой цикл While, который генерирует 10 случайных чисел и отображает их в индикаторе случайных чисел. Блок-схемы, показанные на рисунках 4.7(a) и 4.7(b), состоят из функции генератора случайных чисел. Цикл while будет выполняться в течение 10 итераций (где значение «i» находится в диапазоне от 0 до 9).). Случайное число генерируется и отображается для каждой итерации в числовом индикаторе на передней панели.

        На блок-схеме, показанной на рис. 4.7(a), используется условный терминал Stop if True. Когда значение итерации «i» достигает 9, условный терминал получает состояние TRUE и прекращает выполнение цикла. На блок-схеме, показанной на рис. 4.7(b), используется условный терминал «Продолжить, если истинно». Для значения итерации «i» находится в диапазоне от 0 до 8, условный терминал получает состояние ИСТИНА и поддерживает выполнение цикла. Когда значение итерации становится равным 9, условный терминал получает состояние FALSE и прекращает выполнение цикла.

Пример 2: Создайте ВП для отображения чисел от 1 до 10 в числовом индикаторе с использованием цикла while. Используйте условный терминал Stop if True, как показано на рис. 4.8.
 
Решение: На передней панели находится цифровой индикатор для отображения чисел. На блок-диаграмме цикл While выполняется 10 итераций, где значение итерации «i» находится в диапазоне от 0 до 9. Когда значение итерации достигает 9, условный терминал получает состояние TRUE и останавливает выполнение цикла While. К значению итерации добавляется 1 для получения выходных данных от 1 до 10, и оно отображается в числовом индикаторе.

Ознакомьтесь с образцами резюме LabVIEW! Скачивайте и редактируйте, чтобы вас заметили лучшие работодатели! Скачать сейчас!

 

Расписание курсов

80089
Имя Даты
25 октября по 09 ноября
Labview Training 29 октября по 13 ноября
Labvie

Последнее обновление: 24 октября 2022 г.

Об авторе

Ручита Джибу

Я Ручита, работаю автором контента для технологий MindMajix. Мои работы посвящены новейшему техническому программному обеспечению, учебным пособиям и инновациям. Я также занимаюсь исследованиями в области искусственного интеллекта и нейромаркетинга. Я медийный аспирант BCU — Бирмингем, Великобритания. Раньше мои работы были сосредоточены на бизнес-статьях о цифровом маркетинге и социальных сетях. Вы можете связаться со мной в LinkedIn.

Для цикла — MATLAB и Simulink

Открытый сценарий

В этом примере показано, как реализовать конструкцию цикла для при помощи блоков Simulink®, Stateflow® Charts и блоков MATLAB® Function.

C Конструкция

у1 = 0;
for(inx = 0; inx <10; inx++)
{
  y1 = u1[inx] + y1;
}
 

Шаблон моделирования для цикла For: блок For-Iterator Subsystem

Одним из способов создания цикла for является использование блока For Iterator Subsystem из Simulink > Библиотека портов и подсистем .

1. Откройте пример модели ex_for_loop_SL .

Модель содержит блок For Iterator Subsystem, который повторяет выполнение содержимого подсистемы в течение временного шага симуляции.

Обратите внимание на следующие настройки в модели:

  • Откройте блок For Iterator. В диалоговом окне «Параметры блока» параметр Index-mode равен На основе нуля , а Предел итерации 9Параметр 0008 равен 10.

  • Откройте блок Unit Delay. В диалоговом окне Block Parameters параметр Initial Conditions равен 0. Этот параметр инициализирует состояние до нуля.

2. Чтобы построить модель и сгенерировать код, нажмите Ctrl+B .

Код, реализующий цикл for , находится в функции ex_for_loop_SL_step в ex_for_loop_SL.c :

/* Внешние входы (корневые входные сигналы с хранилищем по умолчанию) */
Внешние входы U;
/* Внешние выходы (корневые выходные порты, питаемые сигналами с хранилищем по умолчанию) */
Внешние выходы Y;
/* Пошаговая функция модели */
недействительным ex_for_loop_SL_step (недействительным)
{
  int32_T rtb_y1;
  int32_T s1_iter;
  /* Выходные данные для подсистемы итератора: '/For Iterator Subsystem' включает:
   * Для итератора: '/Для итератора'
   */
  для (s1_iter = 0; s1_iter < 10; s1_iter++) {
    /* Сумма: '/Добавить' включает:
     * Ввод: '<Корень>/u1'
     * MultiPortSwitch: '/Индексный вектор'
     * UnitDelay: '/Unit Delay'
     */
    rtb_y1 = U. u1[s1_iter] + DWork.UnitDelay_DSTATE;
    /* Обновление для UnitDelay: '/Unit Delay' */
    DWork.UnitDelay_DSTATE = rtb_y1;
  }
  /* Конец выходных данных для подсистемы: '/для подсистемы итератора' */
  /* Вывод: '/y1' */
  Y.y1 = rtb_y1;
}
 

Шаблон моделирования для цикла For: диаграмма Stateflow

1. Откройте пример модели ex_for_loop_SF .

Диаграмма содержит шаблон решения цикла For , который вы добавляете, щелкнув правой кнопкой мыши внутри графика > Добавить шаблон в график > Цикл > For .

2. Чтобы построить модель и сгенерировать код, нажмите Ctrl+B .

Код, реализующий цикл for , находится в ex_for_loop_SF_step 9Функция 0132 в ex_for_loop_SF.c :

/* Внешние входы (корневые входные сигналы с хранилищем по умолчанию) */
Внешние входы U;
/* Внешние выходы (корневые выходные порты, питаемые сигналами с хранилищем по умолчанию) */
Внешние выходы Y;
/* Пошаговая функция модели */
недействительным ex_for_loop_SF_step (недействительным)
{
  int32_T inx;
  /* Диаграмма: '/Диаграмма' */
  для (inx = 0; inx < 10; inx++) {
    /* Выход: '/y1' включает:
     * Ввод: '<Корень>/u1'
     */
    Y. y1 += U.u1[inx];
  }
  /* Конец диаграммы: '/Chart' */
}
 

Шаблон моделирования для цикла For: блок MATLAB Function

1. Откройте пример модели ex_for_loop_ML .

Функциональный блок MATLAB содержит эту функцию:

функция y1 = fcn(u1)
 
у1 = 0;
 
для инкс=1:10
    y1 = u1(inx) + y1 ;
конец
 

2. Чтобы построить модель и сгенерировать код, нажмите Ctrl+B .

Код, реализующий цикл for , находится в функции ex_for_loop_ML_step в ex_for_loop_ML.c :

/* Экспортированные блочные сигналы */
реальный_T u1[10]; /* '<Корень>/u1' */
реальный_T y1; /* '/функция MATLAB' */
/* Пошаговая функция модели */
недействительным ex_for_loop_ML_step (недействительным)
{
  int32_T inx;
  /* Функция MATLAB: '/MATLAB Function' включает в себя:
   * Ввод: '<Корень>/u1'
   */
  у1 = 0,0;
  для (inx = 0; inx < 10; inx++) {
    y1 += u1[inx];
  }
  /* Конец функции MATLAB: '/MATLAB Function' */
}
 

См.