Хелпикс

Главная

Контакты

Случайная статья





Лабораторная работа № 10. Тема: Решение задач на циклы. Цель: закрепить навык решения задач с циклическими алгоритмами.. Теоретический материал. Циклы с условием



Лабораторная работа № 10

Тема: Решение задач на циклы

Цель: закрепить навык решения задач с циклическими алгоритмами.

 

Теоретический материал

 

Циклы с условием

Рассмотрим следующую задачу: определить количество цифр в десятичной записи целого положительного числа. Будем предполагать, что исходное число записано в переменную n целого типа.

Сначала составим алгоритм решения этой задачи. Чтобы считать что-то в программе, нужно использовать переменную, которую называют счётчиком. Для подсчёта количества цифр необходимо как-то отсекать эти цифры по одной, с начала или с конца, каждый раз увеличивая счётчик. Начальное значение счётчика должно быть равно нулю, так как до выполнения алгоритма ещё не найдено ни одно цифры.

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

Отсечь последнюю цифру проще – достаточно разделить число нацело на 10 (поскольку речь идет о десятичной системе). Операции отсечения и увеличения счётчика нужно выполнять столько раз, сколько цифр в числе. Как же «поймать» момент, когда цифры кончатся? Несложно понять, что в этом случае результат очередного деления на 10 будет равен нулю, это и говорит о том, что отброшена последняя оставшаяся цифра. Изменение переменной n и счётчика для начального значения 1234 можно записать в виде таблицы, показанной справа.

Псевдокод выглядит так:

счётчик = 0 пока n > 0

{ отсечь последнюю цифру n

увеличить счётчик на 1 }

Запись такого цикла на языке C выглядит так:

Здесь целочисленная переменная-счётчик имеет имя count. Слово while переводится с английского как «пока», за ним в скобках записывается условие работы цикла (в данном случае – «пока n > 0). Фигурные скобки ограничивают составной оператор. Если в теле цикла нужно выполнить только один оператор, эти скобки можно не ставить. Напомним, что операция деления для целых чисел всегда даёт целое число (остаток отбрасывается).

Обратите внимание, что проверка условия выполняется в начале очередного шага цикла. Такой цикл называется циклом с предусловием (то есть с предварительной проверкой условия) или циклом «пока». Если в начальный момент значение переменной n будет нулевой или отрицательное, цикл не выполнится ни одного раза.

В данном случае количество шагов цикла «пока» неизвестно, оно равно количеству цифр введенного числа, то есть зависит от исходных данных. Кроме того, этот же цикл может быть использован и в том случае, когда число шагов известно заранее или может быть вычислено:

k = 0;

while ( k < 10 )

{ cout << "привет\n"; k ++; }

Если условие в заголовке цикла никогда не нарушится, цикл будет работать бесконечно долго. В этом случае говорят, что «программа зациклилась». Например, если забыть увеличить переменную k в предыдущем цикле, программа зациклится:

k = 0;

while ( k < 10 )

{ cout << "привет\n"; }

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

do

{ cout << "Введите n > 0: ";

cin >> n; }

while ( n <= 0 );

Этот цикл закончится тогда, когда условие n <= 0 нарушится, то есть станет истинным условие n > 0. А это значит, что пользователь ввел допустимое (положительное) значение. Обратите внимание на важную особенность этого вида цикла: при входе в цикл условие не проверяется, поэтому цикл всегда выполняется хотя бы один раз.



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.