Добрый день, товарищи. Сегодня я хочу показать вам еще одну особенность цикла For.
Предыдущие статьи вы можете почитать по ссылкам ниже:
Пишем свой генератор случайных чисел а-ля random.org на Pascal
Введение в циклы на Pascal. Часть 1. Цикл for.
В этих статьях мы познакомились с понятием "циклы" в языке программирования Pascal, а так же улучшили генератор случайных чисел, который писали в одной из старых статей.
Так вот, о том что хочу рассказать сегодня. У Фора, как мы помним есть счетчик - обычно это переменная i, которой и присваиваются значения этого цикла. Например от 0 до 10 или от 1 до 100. Но что, если нам нужно пробежать наоборот? Такой код ни к чему не приведет:
for i := 100 to 1 do
Цикл ни сделает ни одного шага и завершится. Как же быть? Ответ очень прост:
Заменим to на downto. Теперь наш цикл побежит в обратном направлении очень быстро, со скоростью света, можно сказать.
Давайте посмотрим пример, и три варианта его написания. Но для начала задание:
Вывести все нечетные числа от 1 до 100, от 100 до 1
Начнем с первого, тут все стандартно.
Пишем простой код и сразу получаем ответ. mod здесь используется чтобы найти остаток от деления, ведь если число делится на 2 - оно четное, а если нет то (логично) нет
Хорошо, давайте попробуем сделать вторую часть задания:
Вот вам и (не)рабочий пример. Цикл просто не запустился, но и программа, в свою очередь, ошибку не выдала. Осторожнее надо быть. Внимательность - лучший друг программиста.
Исправимся.
Все работает, как видите. В целом этот нехитрый способ может иногда вам здорово помочь. Это небольшая и не сложная для понимания публикация, но нужно просто знать об особенности цикла фор.
Для быстроты проверки примера я выложу код программы сюда:
var i:integer;
begin
writeln('Вывести все нечетные числа от 100 до 1 ');
for i:= 100 downto 1 do
if i mod 2<>0 then write(i,' ');
end.
Просто проверьте его в своем паскале. Спасибо за просмотр и до скорых встреч.
Данный человек всегда открыт для обсуждения контента и общения с подписчиками, если найдутся какие либо вопросы то я обязательно постараюсь ответить на них.
По возможности я попросил бы подписаться. Сейчас это критически важно для развития канала. Так то!
Доброго вам всем здоровьица в эти трудные времена!