Форум программистов, компьютерный форум, киберфорум
Наши страницы

не использовать do/while ? бред ! - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ В матрице удалить строки с элементами на главной диагонали, превышающими заданную величину http://www.cyberforum.ru/cpp-beginners/thread2772.html
В матрице удалить строки с элементами на главной диагонали, превышающими заданную величину, а затем в качестве первой вставить строку из максимальных элементов соответствующих столбцов.(Для...
C++ Поиск строк Здраствуйте, подскажите какие есть реализации или как это сделать примерно. Задача в поиске строк в файле, можно воспользоватся регулярными выражениями или алгоритмами типа бойра-Мура, но файл нельзя... http://www.cyberforum.ru/cpp-beginners/thread2768.html
C++ Не могу сделать exe
При компиляций моего пректа exe не создаётся.Выдаёт ошибки,которые я не знаю как исправить...http://dump.ru/files/g/g2067785368/ Программа должна выполнять функцию Надо ввести значение переменной...
Где можно скачать программу, чтобы начать учиться работать в С++? C++
собственно ногами не пинать...вопрос полного нуля в этой области , но подскажите где можно скачать программу для того что бы начать учиться работать в С++... может выразился сумбурно...но за рание...
C++ Где можно скачать элекронные книги, конспекты и тд? http://www.cyberforum.ru/cpp-beginners/thread2715.html
Уважаеммые формчане, нужна помощь по основам программирования на С, ищу ссылки где можно скачать элекронные книги, конспекты и тд и тп. ничего сложного и желательно кратко. заренее благодарен
C++ Помогите с курсовой на тему! Отражение движущегося случайным образом шарика от геометрических фигур статично располагающихся в комнате (треугольник, квадрат, круг) с использованием библиотеки функций OPENGL. подробнее

Показать сообщение отдельно
гость
0 / 0 / 0
Регистрация: 17.04.2015

не использовать do/while ? бред ! - C++

27.08.2007, 13:12. Просмотров 3306. Ответов 3
Метки (Все метки)

меня возмутила статья
http://www.cyberguru.ru/programming/...es-page67.html
в которой автор рекомендует вместо do {} while (); использовать while () {};
давайте же разберёмся что происходит на самом деле

do { действия } while ( условие );
если это разложить по косточкам выходит следующее
Код
метка:
действия
if (!условие) goto метка
итак на цикл одна метка и на каждую итерацию один прыжок

while ( условие ) { действия };
разложим и это
Код
метка1:
if (!условие) goto метка2
действия
goto метка1
метка2:
две метки и на 1 больше прыжок, чем в do {} while ();
p.s. если кто сомневается что он устроен именно так вспомните, что возможно while (действие перед каждой проверкой, проверка) { действие };

и ещё разсмотрим конструкцию if (условие) { do { } while (); }; которая особо не понравилась автору, что меня вообще добило хех
Код
if (!условие) goto метка1
метка2:
действия
if (условие) goto метка2
метка1:
хорошо теперь возьмём массив major размером 4 и заполним его единицами

для do { } while ( ) ;
Код
int major[4], it (0);
do {
	major[it] = 1;
	++it;
} while (it < 4);
прошли при it == 0, проверили, прыгнули
прошли при it == 1, проверили, прыгнули
прошли при it == 2, проверили, прыгнули
прошли при it == 3, проверили
всё
действий 4
проверок 4
прыжков 3






для while ( ) { };
Код
int major[4], it (0);
while (it < 4) {
	major[it] = 1;
++it;
};
проверили, прошли при it == 0, прыгнули
проверили, прошли при it == 1 прыгнули
проверили, прошли при it == 2 прыгнули
проверили, прошли при it == 3 прыгнули
проверили, прыгнули
всё
действий 4
проверок 5
прыжков 6

конструкция if (условие) { do { } while (); };
Код
int major[4], it(0);
if (it < 4) {
	do {
		major[it] = 1;
		++it;
	} while (it < 4);
};
проверили
прошли при it == 0, проверили, прыгнули
прошли при it == 1, проверили, прыгнули
прошли при it == 2, проверили, прыгнули
прошли при it == 3, проверили
всё
действий 4
проверок 5
прыжков 3

я считаю исходя из выше перечисленного что
if (условие) { do { } while (); }; эффективнее while ( ) { }; и именно по этому заявление автора статьи меня так возмутило, он хоть бы попытался чем-то это аргументировать ...
если я где-то ошибся прошу это указать, может я в чём-то и не прав
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.