Найти в Дзене
Войти в IT

Цикл в программировании. Что это такое и зачем он нужен?

Цикл — это команда в программировании, которая выполняет один и тот же участок программного кода несколько раз. В буквальном смысле, цикл нужен для многократного повторения некоторых действий внутри программы. Это может быть работа со строками, отправка информации через интернет, сохранение картинок, обработка набора файлов, и что угодно прочее. Объединяющей особенностью для циклов является именно повторение программного кода, выполняющего однотипное действие. К таким однотипным действиям, например, часто относится работа с массивами (наборами данных). Использование циклов позволяет «упаковывать» одинаковый код в компактный вид, давая программисту возможность создавать простые и понятные программы. Циклы имеют повсеместное применение практически во всех программах, и они есть практически во всех языках. Циклы используются для управления логикой, для работы с данными, и для взаимодействия с пользователями. Потребность в циклах - пример Представь себе текстовый файл, внутри которого
Оглавление

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

Объединяющей особенностью для циклов является именно повторение программного кода, выполняющего однотипное действие. К таким однотипным действиям, например, часто относится работа с массивами (наборами данных). Использование циклов позволяет «упаковывать» одинаковый код в компактный вид, давая программисту возможность создавать простые и понятные программы.

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

Потребность в циклах - пример

Представь себе текстовый файл, внутри которого есть 5 тысяч строк. Допустим, это имена и фамилии известных физиков с датами их рождения. У программиста стоит задача создать программу, которая должна найти физика по фамилии «Эйнштейн», и показать на экране дату его рождения. Логичный способ решения такой задачи — использовать оператор IF, и сравнить все строки в файле со словом «Эйнштейн», одну за другой. Вот что-то вроде этого:

IF (строка1 СОДЕРЖИТ «Эйнштейн») { ПоказатьДату }
IF (строка2 СОДЕРЖИТ «Эйнштейн») { ПоказатьДату }
...
IF (строка5000 СОДЕРЖИТ «Эйнштейн») { ПоказатьДату }

При таком подходе, с точки зрения линейного программирования, у нас получится 5 тысяч однотипных конструкций IF. Это не очень-то удобно, правда? Вот именно в такой ситуации к нам на помощь и придут циклы.

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

Применяем простой цикл

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

FOR (int i = 0; i < 5000; i++)
{
IF (строка[i] СОДЕРЖИТ «Эйнштейн») { ПоказатьДату }
}

Иначе говоря, мы объявили цикл FOR, внутри которого попросили программу повторить некоторое действие 5 тысяч раз. Для нумерации конкретного шага, мы объявили числовую переменную i. В этой переменной, на каждом шаге цикла, будет доступен номер текущего шага (1,2, 5, 4000, и так далее). Внутри тела цикла, мы обратились к конкретной строке по её номеру, используя квадратные скобки [i]. То есть, мы обратились к строке по её номеру для каждого шага который будет сделан при работе цикла. Если упрощать ещё дальше, то на шаге 4600 программа дешифрует и буквально выполнит конкретно вот эту команду:

IF(Строка[4600] СОДЕРЖИТ «Эйнштейн») { ПоказатьДату }

Для упрощения понимания циклов, давай обратим внимание вот на что. Программный код выполняется сверху вниз. Всегда. Точно так же, как мы пишем текст в файле, и новые строчки добавляются в нижнюю сторону. Вот именно так и выполняется программный код: от строки 1, к строке 2, потом 3, и так далее.

Соответственно, когда мы "зациклили" некоторый код, то он будет выполняться сверху вниз, но уже не один раз, а несколько (в соответствии с количеством шагов в цикле). Дойдя до последней строчки программа проверит, есть ли новые шаги в цикле. Если они есть - то выполнение перепрыгнет к строчке 1, и продолжится.

Какие типы циклов существуют?

Существует несколько типов циклов. В классическом высокоуровневом стеке ООП это циклы For, While, Do-While, Foreach.

Самый простой и популярный цикл — FOR. Он предназначен для последовательного выполнения программного кода, шаг за шагом. Именно его мы использовали в примере выше. Технически, внутри такого цикла объявляется переменная, условие завершения цикла (например переменная должна быть меньше 100), и выражение для увеличения переменной. Все блоки заключаются в круглые скобки, и разделяются точкой с запятой. Вот так:

FOR (ПЕРЕМЕННАЯ; УСЛОВИЕ; УВЕЛИЧЕНИЕ-ПЕРЕМЕННОЙ)
{ ПовторяющийсяКод }

Такой ПовторяющийсяКод в фигурных скобках будет выполняться шаг за шагом, пока выполняется УСЛОВИЕ.

И ещё. Во многих языках, ПЕРЕМЕННАЯ и УВЕЛИЧЕНИЕ-ПЕРЕМЕННОЙ не являются обязательными. Для продолжения работы цикла FOR достаточно, чтобы условие продолжало выполняться. Например, вот такой цикл будет работать бесконечно, пока выполняется программа: FOR ( ; 2х2 == 4 ; ) { }

Философия использования циклов

И конечно же немного философии, куда без неё? Любая программа по своей сути предназначена для решения конкретной задачи. На мой взгляд, для правильного понимания программирования, стоит рассматривать именно такую интерпретацию.

Будильники, шагомеры, социальные сети, редакторы фотографий, интерактивные карты — всё это программы для решения задач, больших или маленьких, но вполне конкретных. Как известно, любая задача содержит входные данные, набор условий, и выходные данные. Условный будильник принимает на входе дату и время срабатывания, а на выходе активирует динамик телефона с мелодией звонка. Шагомер получает на входе сигнал от акселерометра (специальный датчик в телефоне), а на выходе рисует красивые графики на экране. И так далее.

Независимо от предметной области и задачи, программа обычно работает с большим набором данных, и практически всегда сталкивается с повторяющимся программным кодом. Тот же самый шагомер обычно рисует нам 7 столбиков с количеством шагов, соответствующих дням недели. Тот же будильник отображает на экране 12 часовых меток, одну за другой. И там и там, для последовательного рисования, используются циклы. В одном случае — условный цикл рисования столбиков от 1 до 7, в другом — цикл для рисования часовых меток от 1 до 12.

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

#программист #it #itтехнологии #обучениепрограммированию #информационныетехнологии #айтишник #программирование #программированиеснуля #программированиедляначинающих #языкпрограммирования #обучение #технологии #образование #студенты

🔥 Понравилось? Подпишись! Победим восстание роботов вместе! 🔥

-2

🚀 P.S. Ты можешь круто поддержать меня и проект "Войти в IT" на boosty! Я публикую там более эксклюзивный и профессиональный, иногда немного личный контент. Хочешь посмотреть как я выгляжу в реальной жизни? Тогда жми: Ссылка 🚀

P.S.2 У меня ещё есть Telegram-канал. Там посты чуть попроще, и чуть повеселей. Ссылка