While 1 что означает
Перейти к содержимому

While 1 что означает

  • автор:

Операторы цикла

В языке C++ существует три вида циклов: цикл while c предусловием, цикл while с постусловием, цикл for .

Цикл while («пока») с предусловием

Цикл while с предусловием позволяет выполнить одну и ту же последовательность действий пока проверяемое условие истинно. При этом условие записывается до тела цикла и проверяется до выполнения тела цикла.

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

Синтаксис цикла while («пока») c предусловием такой:

while (условие)
блок инструкций
>

Следующий фрагмент программы напечатает на экран квадраты всех целых чисел от 1 до 10:

В этом примере переменная i внутри цикла изменяется от 1 до 10. Такая переменная, значение которой меняется с каждым новым проходом цикла, называется . Заметим, что после выполнения этого фрагмента значение переменной i будет равно 11, поскольку именно при i==11 условие i

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

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

Цикл while («пока») с постусловием

Цикл «пока» с постусловием отличается от цикла с предусловием тем, что сначала выполняется блок цикла, а потом проверяется условие. Если условие истинно, то цикл будет выполнен еще раз, и так до тех пор, пока условие будет истинно. Синтаксис цикла с постусловием такой (обратите внимание на обязательную точку с запятой после условия):

do
Блок инструкций
>
while (условие);

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

Упражнения

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

  1. (A) Напечатайте все точные квадраты натуральных чисел, не превосходящие данного числа n. (например, при вводе 50 программа должна вывести 1 4 9 16 25 36 49 ).
  2. (B) Дано натуральное число n. Определите, является ли оно степенью числа 2, и выведите слово YES , если является и слово NO , если не является.
  3. (C) Для данного натурального числа n определите такое наименьшее целое k, что 2 k ≥n. Например, при вводе числа 7 программа должна вывести 3 .
  4. (D YES) В первый день спортсмен пробежал x километров, а затем он каждый день увеличивал пробег на 10% от предыдущего значения. По данному числу y определите номер дня, на который пробег спортсмена составит не менее y километров. Например, при вводе 10 20 программа должна вывести 9 . x и y – действительные числа, ответ – целое число.
  5. (E) В первый день спортсмент пробежал x километров, а затем он каждый день увеличивал пробег на 10% от предыдущего значения. По данному числу y определите номер дня, на который суммарный пробег спортсмена составит не менее y километров. Например, при вводе 10 100 программа должна вывести 8 .
  6. (F) Дано натуральное число n. Напишите функцию int SumOfDigits (int n) , вычисляющую сумму цифр числа n. Выведите сумму цифр числа n.
  7. (G) Дано натуральное число n. Напишите функцию int NumberOfZeroes (int n) , определяющую количество нулей среди всех цифр числа n. Выведите результат.
  8. (H) Дано натуральное число n. Напишите функцию int MinDigit (int n) и int MaxDigit (int n) , определяющую наименьшую и наибольшую цифры данного числа. Выведите наименьшую и наибольшую цифры данного числа (например, при вводе 179 программа выводит 1 9 ).
  9. (I) Вводится последовательность целых чисел до тех пор, пока не будет введено число 0. После ввода числа 0 программа должна завершить свою работу и вывести сумму введенных чисел.
  10. (J) По данному натуральному числу n найдите сумму чисел 1+1/1!+1/2!+1/3!+. +1/n!. Количество действий должно быть пропорционально n. Напишите программу, которая считывает значение n и выводит результат в виде действительного числа. К чему будет стремиться эта сумма при росте числа n?
  11. (K) По данному числу n выведите n-e число Фибоначчи. Использовать рекурсию нельзя.
  12. (L) Напишите функцию int reverse(int n) , которая переставляет цифры числа в обратном порядке (например, reverse(179)==971 ). Напишите программу, которая по данному натуральному n печатает его цифры в обратном порядке.
  13. (M) Назовем число палиндромом, если оно не меняется при перестановке его цифр в обратном порядке. Напишите функцию bool IsPalindrome (int n) , проверяющую по данному числу n, является ли оно палиндромом. Напишите программу, которая по заданному числу K выводит количество натуральных палиндромов, не превосходящих K. Например, при вводе 1 программа выводит 1 , а при вводе 100 программа выводит 18 .

Что означает while (1)

Author24 — интернет-сервис помощи студентам

Поясните пожалуйста что означает двоеточие и то что идет после него
В 4 строчке после параметра в скобочках нету ";" или же тела функции, что не сходится с моим.

скажите пожалуйста, что означает здесь b. ,это какия-либо функция или что?
скажите пожалуйста, что означает здесь b. ,это какия-либо функция или что? //анализируем все.

Что означает запись в скобках и что возвращает return
Всем привет! Начал читать книгу BecomeAnXcoder и тут появился вопрос. В пример приведен такой код.

Что такое #, include, что это означает
______

While 1 что означает

Цикл while (“пока”) позволяет выполнить одну и ту же последовательность действий, пока проверяемое условие истинно. Условие записывается до тела цикла и проверяется до выполнения тела цикла. Как правило, цикл while используется, когда невозможно определить точное значение количества проходов исполнения цикла.

Синтаксис цикла while в простейшем случае выглядит так:

while условие: блок инструкций

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

Например, следующий фрагмент программы напечатает на экран квадраты всех целых чисел от 1 до 10. Видно, что цикл while может заменять цикл for . in range(. ) :

i = 1 while i 

В этом примере переменная i внутри цикла изменяется от 1 до 10. Такая переменная, значение которой меняется с каждым новым проходом цикла, называется счетчиком. Заметим, что после выполнения этого фрагмента значение переменной i будет равно 11 , поскольку именно при i == 11 условие i

Вот еще один пример использования цикла while для определения количества цифр натурального числа n :

5678
n = int(input()) length = 0 while n > 0: n //= 10 # это эквивалентно n = n // 10 length += 1 print(length)

В этом цикле мы отбрасываем по одной цифре числа, начиная с конца, что эквивалентно целочисленному делению на 10 ( n //= 10 ), при этом считаем в переменной length , сколько раз это было сделано.

В языке Питон есть и другой способ решения этой задачи: .

2. Инструкции управления циклом

После тела цикла можно написать слово else: и после него блок операций, который будет выполнен один раз после окончания цикла, когда проверяемое условие станет неверно:

i = 1 while i 

Казалось бы, никакого смысла в этом нет, ведь эту же инструкцию можно просто написать после окончания цикла. Смысл появляется только вместе с инструкцией break . Если во время выполнения Питон встречает инструкцию break внутри цикла, то он сразу же прекращает выполнение этого цикла и выходит из него. При этом ветка else исполняться не будет. Разумеется, инструкцию break осмыленно вызывать только внутри инструкции if , то есть она должна выполняться только при выполнении какого-то особенного условия.

Приведем пример программы, которая считывает числа до тех пор, пока не встретит отрицательное число. При появлении отрицательного числа программа завершается. В первом варианте последовательность чисел завершается числом 0 (при считывании которого надо остановиться).

3 6 -1 4 0
a = int(input()) while a != 0: if a < 0: print('Встретилось отрицательное число', a) break a = int(input()) else: print('Ни одного отрицательного числа не встретилось')

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

3 6 2 4
n = int(input()) for i in range(n): a = int(input()) if a < 0: print('Встретилось отрицательное число', a) break else: print('Ни одного отрицательного числа не встретилось')

Другая инструкция управления циклом — continue (продолжение цикла). Если эта инструкция встречается где-то посередине цикла, то пропускаются все оставшиеся инструкции до конца цикла, и исполнение цикла продолжается со следующей итерации.

Если инструкции break и continue содержатся внутри нескольких вложенных циклов, то они влияют лишь на исполнение самого внутреннего цикла. Вот не самый интеллектуальный пример, который это демонстрирует:

for i in range(3): for j in range(5): if j > i: break print(i, j)

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

n = int(input()) length = 0 while True: length += 1 n //= 10 if n == 0: break print('Длина числа равна', length)

Гораздо лучше переписать этот цикл так:

n = int(input()) length = 0 while n != 0: length += 1 n //= 10 print('Длина числа равна', length)

Впрочем, на Питоне можно предложить и более изящное решение:

n = int(input()) print('Длина числа равна', len(str(n)))

3. Множественное присваивание

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

a, b = 0, 1

Этот код можно записать и так:

a = 0 b = 1

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

Если слева от знака «=» в множественном присваивании должны стоять через запятую имена переменных, то справа могут стоять произвольные выражения, разделённые запятыми. Главное, чтобы слева и справа от знака присваивания было одинаковое число элементов.

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

a = 1 b = 2 tmp = a a = b b = tmp print(a, b) # 2 1

В Питоне то же действие записывается в одну строчку:

a = 1 b = 2 a, b = b, a print(a, b) # 2 1

Arduino.ru

Подскажите по следующему вопросу. Будет ли работать цикл while (1) в функции, которая вызывается из основной loop? Суть в следующем. Вызывается функция из loop, в этой функции организован цикл while (1), который должен ожидать нажатие кнопок и выбирать что делать дальше. Выход из while (1) происходит при нажатии на определенную кнопку что по идее должно вернуть управление основному циклу loop. Но почему-то не получается. Похоже что цикл while (1) просто игнорируется. Если в мою функцию (в которой есть цикл while (1)) добавить задержку, то видно, что сама функция вызывается, но цикл while (1) не обрабатывается, функция завершается без ожидания нажатия на кнопки и процесс возвращается обратно в loop.

while (1) вообще доложен работать в функциях или он только в loop работает?

  • Войдите на сайт для отправки комментариев

Втр, 07/04/2015 - 00:45

Jeka_M аватар

Зарегистрирован: 06.07.2014

Ничего не могу сказать по поводу while (1) в среде Arduino IDE, но у Вас в корне неверный подход. Заставлять микроконтроллер впустую гонять цикл в ожидании нажатия кнопки без возможности выполнять другие задачи - это плохая практика. Используйте прерывания. Пусть лучше гоняет loop (), а в обработчике прерывания выполняйте нужные Вам действия или вызывайте другие функции. Если в обработчике прерывания будете менять значения каких-то переменных, не забудьте объявить их с квалификатором volatile.

  • Войдите на сайт для отправки комментариев

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *