Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/89: Рейтинг темы: голосов - 89, средняя оценка - 4.61
johnsexualmeat

Цикл for

06.12.2010, 21:40. Показов 17268. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!
Есть код примера цикла for из книги, в консоль выводит значения от 0 до 100.
Вопрос: если заменить bool stop = true, соответственно убрать отрицание !stop из цикла for и в if stop=false, то все работает точно также. Вариант без отрицания bool логически проще, так зачем автору был нужен именно первый вариант? Или есть принципиальная разница?
Спасибо.
первоначальный код:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
   static void Main(string[] args)
        {
            
 
            bool stop = false; 
            int myInt;
            for (myInt = 0; !stop; myInt++) 
            
        {
 
               if (myInt == 100) stop = true;
                Console.WriteLine("myInt=:" + myInt);
 
         }
                Console.ReadKey();
         }
 
        }
    }
измененный код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
static void Main(string[] args)
        {
            
 
            bool stop = true; 
            int myInt;
            for (myInt = 0; stop; myInt++) 
            
        {
 
               if (myInt == 100) stop = false;
                Console.WriteLine("myInt=:" + myInt);
 
         }
                Console.ReadKey();
         }
 
        }
    }
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.12.2010, 21:40
Ответы с готовыми решениями:

Почему если условие входа в цикл не выполняется, функция заново входит в цикл
Сам код: private void traverse_node(TreeControlItem node) { TreeControlItem childNode = default(TreeControlItem);...

Помогите заменить цикл forech на простой цикл for
Помогите пожалуйста, срочно. foreach (char xx in strX) { tmp = xx; m--; }...

Цикл foreach заменить на двойной цикл for
int mas = new int; Random Gen = new Random(); for (int i = 0; i < mas.GetLength(0); i++) for...

6
 Аватар для Unril
826 / 717 / 110
Регистрация: 06.10.2010
Сообщений: 825
Записей в блоге: 1
06.12.2010, 22:07
Видимо автор хотел показать пример плохого кода. Про циклы хорошо написано у Стива Макконелла в книге "Совершенный код." стр. 359.
Для такого дела лучше всего подходит простой цикл For:
C#
1
2
            for (int i = 0; i <= 100; i++)
                Console.WriteLine(i);
В заголовке размещены только те элементы, которые отвечают за продолжение цикла, то есть i.
Если необходимо закончить цикл по какому-либо событию, то лучше сделать так:
C#
1
2
3
4
5
6
7
8
            int counter = 0;
            while (true)
            {
                Console.WriteLine(counter);
                counter++;
                if (counter > 100)
                    break;
            }
Или в крайнем случае так:
C#
1
2
3
4
5
6
7
8
9
            int counter = 0;
            bool run = true;
            while (run)
            {
                Console.WriteLine(counter);
                counter++;
                if (counter > 100)
                    run = false;
            }
Но этот метод хуже, так как назначение переменных, можно сказать, дублируется.
Смешивание в одну кучу элементы из if и из while -- не очень хороший приём.
0
johnsexualmeat
06.12.2010, 22:16
Этот плохой автор к сожалению я сам.
Изучаю язык всего три дня, сам дал себе тупое задание и тупо решил.
Взбрело в голову использовать bool, сейчас буду пробовать метод который подсказали вы.
Спасибо за оперативный и подробный ответ!
 Аватар для Sergei
1513 / 780 / 103
Регистрация: 22.04.2008
Сообщений: 1,610
06.12.2010, 22:22
Цитата Сообщение от johnsexualmeat Посмотреть сообщение
так зачем автору
Это что за автор такой интересный?
0
McDucky
07.12.2010, 00:19
Маленький совет. При работе с массивами(с фиксированным размером) лучше использовть цикл for...
и эту задачу можно реализовать по другому(например вывести числа от нуля до указанного)
int size = int.Parse(Console.ReadLine());
for (int i = 0; i < size + 1; Console.WriteLine(i++)) ;
size + 1 - пишеться чтобы он брал и указанное число тоже
 Аватар для rar
2 / 2 / 0
Регистрация: 04.02.2016
Сообщений: 458
02.02.2018, 00:39
...
0
3566 / 2507 / 1174
Регистрация: 14.08.2016
Сообщений: 8,219
02.02.2018, 00:49
если я правильно понял, то
C#
1
2
3
foreach(var item in someCollection){
//do work
}
someCollection - это типа lst
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
02.02.2018, 00:49
Помогаю со студенческими работами здесь

Создать программу по всем 3 видам циклов...цикл с параметром,цикл с условием,цикл,и цикл с предусловием...
Найти сумму чисел 1 в квадрате до 10 c квадрате...операцию возведению в степень не использовать учесть особенности получения квадратного...

Цикл с предусловием, цикл с постусловием и цикл с параметром
Объясните пожалуйста как делать эти циклы. У меня не получается. Можете сделать как на фото, или на подобии. Заранее спасибо)

Написать в турбо паскале, Цикл с параметром, Цикл, с постусловием, и с предусловием пожалуйста

Цикл: Используя цикл while, выведите на экран для числа 2 его степени от 0 до 20
Используя цикл while, выведите на экран для числа 2 его степени от 0 до 20. Возведение в степень в Python обозначается как **. Фрагмент...

Цикл: Вычислить значение выражения. Как вывести формулу и сделать цикл while?
Последовательно вводятся N целых чисел. Найти минимальное из них. #include&lt;stdio.h&gt; #include&lt;locale.h&gt; #include...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Контроль корректности заполнения дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru