Форум программистов, компьютерный форум CyberForum.ru

не использовать 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/ Программа должна выполнять функцию Надо ввести значение переменной pr с помощью клавиатуры.А другая переменная f определяется случайным значением В конце программы выдает текст типа "Переменная pr равна(значение,заданное вами) и f равна(случайное значение).Помогите...
Где можно скачать программу, чтобы начать учиться работать в С++? C++
собственно ногами не пинать...вопрос полного нуля в этой области , но подскажите где можно скачать программу для того что бы начать учиться работать в С++... может выразился сумбурно...но за рание спасибо:)
C++ Где можно скачать элекронные книги, конспекты и тд? http://www.cyberforum.ru/cpp-beginners/thread2715.html
Уважаеммые формчане, нужна помощь по основам программирования на С, ищу ссылки где можно скачать элекронные книги, конспекты и тд и тп. ничего сложного и желательно кратко. заренее благодарен
C++ WinAPI Как перезагрузить WM_CREATE? здрасти всем. у меня возник вопрос. вот есть программы (большинство), которые при нажатии на кнопку применить вокне настроек, каким то образом обновляют главное окно программы. так вот. у меня программа. я открываю окно настроек (DialogBox) меняю настройки и нажимаю на кнопку применить (или OK). так вот. настройки пишутся в .ini файл (или реестр), но главное окно не обновляется и не... подробнее

Показать сообщение отдельно
Гость
Сообщений: n/a

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

27.08.2007, 13:12. Просмотров 3269. Ответов 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 ( ) { }; и именно по этому заявление автора статьи меня так возмутило, он хоть бы попытался чем-то это аргументировать ...
если я где-то ошибся прошу это указать, может я в чём-то и не прав
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 11:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru