|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
Оператор цикла с предусловием и коррекцией for
Общий вид оператора: for (выражение 1; выражение 2; выражение 3) код цикла; где выражение 1 – инициализация счетчика (параметр цикла); выражение 2 – условие продолжения счета; выражение 3 – коррекция счетчика. На рис. 7.2, а представлена схема работы цикла for, а на рис. 7.2, б – символ блок-схемы, использующийся для его обозначения.
Рис. 7.2. Схемы оператора цикла for: Инициализация используется для присвоения счетчику (параметру цикла) начального значения. Выражение 2 определяет условие выполнения цикла. Как и в предыдущих случаях, если его результат не нулевой («истина»), – то цикл выполняется, иначе – происходит выход из цикла. Коррекция выполняется после каждой итерации цикла и служит для изменения параметра цикла. Выражения 1, 2 и 3 могут отсутствовать (пустые выражения), но символы «;» опускать нельзя. Например, для суммирования первых N натуральных чисел можно записать такой код: sum = 0; for (i = 1; i<=N; i++) sum+=i; Заметим, что в выражении 1 переменную-счетчик можно декларировать. Например: for (int i = 1; i<=N; i++) Областью действия такой переменной будет код цикла. Но в старых версиях компиляторов такие действия могут интерпретироваться иначе. Цикл for эквивалентен последовательности инструкций: выражение 1; while (выражение 2) { ... выражение 3; } а оператор for (; выражение 2;) код цикла; эквивалентен оператору while (выражение 2) код цикла; Если пропущено выражение 2, то цикл будет выполняться бесконечно, поскольку пустое условие всегда остается истинным. Бесконечный оператор: for (;;) код цикла; эквивалентен оператору while (1) код цикла; В заголовке оператора for может использоваться операция «запятая». Она позволяет включать в его выражения несколько операторов. Тогда рассмотренный пример суммирования первых N натуральных чисел можно записать в следующем виде: for (sum = 0, i = 1; i<=N; sum+= i, i++); Оператор for имеет следующие возможности: – можно вести подсчет с помощью символов, а не только чисел: for (ch = 'a'; ch <= 'z'; ch++)...; – можно проверить выполнение некоторого произвольного условия: for (n = 0; s[i] >= '0' && s[i] < '9'; i++)...; или for (n = 1; n*n*n <= 216; n++)...; Первое выражение необязательно должно инициализировать переменную. Необходимо только помнить, что первое выражение вычисляется только один раз, перед тем как остальные части начнут выполняться. for (printf(" вводить числа по порядку! \n"); num!=6;) scanf("%d", & num); printf(" последнее число – это то, что нужно. \n"); В этом фрагменте первое сообщение выводится на печать один раз, а затем осуществляется прием вводимых чисел, пока не поступит число 6. Переменные, входящие в выражения 2 и 3, можно изменять при выполнении кода цикла, например, значения k и delta: for (n = 1; n < 10*k; n += delta)...; Использование условных выражений позволяет во многих случаях значительно упростить программу, например: for (i = 0; i<n; i++) printf("%6d%c", a [i],((i%10==0) || (i==n–1))? '\n': ′ ′); В этом цикле печатаются n элементов массива а по 10 в строке, разделяя каждый столбец одним пробелом и заканчивая каждую строку (включая последнюю) одним символом перевода строки. Символ перевода строки записывается после каждого десятого и n -го элементов. За всеми остальными – пробел. Наиболее часто встречающиеся ошибки при создании циклов – это использование в коде цикла неинициализированных переменных и неверная запись условия выхода из цикла. Чтобы избежать ошибок, нужно стараться: – проверить, всем ли переменным, встречающимся в правой части операторов присваивания в коде цикла, присвоены до этого начальные значения (а также возможно ли выполнение других операторов); – проверить, изменяется ли в цикле хотя бы одна переменная, входящая в условие выхода из цикла; – предусмотреть аварийный выход из цикла по достижении некоторого количества итераций; – если в состав цикла входит не один, а несколько операторов, нужно заключать их в фигурные скобки.
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.004 сек.) |