2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1, 2, 3, 4  След.
 
 Re: Помогите, пожалуйста решить задачу по с++
Сообщение06.11.2009, 16:16 


06/11/09
6
спасибо большое

 Профиль  
                  
 
 Re: Помогите, пожалуйста решить задачу по с++
Сообщение06.11.2009, 17:05 
Заслуженный участник


19/07/08
1266
Maslov в сообщении #259013 писал(а):
А ещё рекурсивную программу можно написать, безо всяких циклов :)

Вы кстати зря иронизируете. goto -- это грязный хак. Если предположить, что циклов не было ( раз while / do...while тоже не упомянуты), то не исключено как раз такое решение и подразумевалось автором задачи. Как раз кроме if ничего не надо.

Anastasiya1979, на месте преподавателя за goto лично я бы убил. Если это не школьный учитель почтенного возраста, то вряд ли преподаватель будет удовлетворён... Попытайтесь вспомнить, не рассказывали ли вам что-то ещё?.. Ну там,
Код:
Присваеваем начальные значения
while(до желаемого не добрались){
увеличиваем значение
}
profit
?..

 Профиль  
                  
 
 Re: Помогите, пожалуйста решить задачу по с++
Сообщение06.11.2009, 17:12 
Заслуженный участник


09/08/09
3438
С.Петербург
nestoklon в сообщении #259074 писал(а):
goto -- это грязный хак.
Извините, а Вы на Фортране VI или на ассемблере никогда не программировали?
Можно и с goto написать кристально ясную программу, и без goto нечто нечитаемое и неотлаживаемое.

 Профиль  
                  
 
 Re: Помогите, пожалуйста решить задачу по с++
Сообщение06.11.2009, 17:13 
Заслуженный участник


11/05/08
32166
nestoklon в сообщении #259074 писал(а):
, на месте преподавателя за goto лично я бы убил.

Аналогично. Я сам, будучи воспитан в Фортране (ну и ещё маленько в Алголе), довольно долго практиковал явные операторы перехода. Но в конце концов, через много лет, практически тыркаясь, пришёл-таки к тому, что общепринятое мнение на этот счёт (что это "фи") -- правильно.

Скорее всего, в задании всё-ж таки подразумевалось использование хоть какого-то из стандартных операторов цикла.

 Профиль  
                  
 
 Re: Помогите, пожалуйста решить задачу по с++
Сообщение06.11.2009, 17:28 
Заслуженный участник


09/08/09
3438
С.Петербург
В давние-давние времена была такая классическая книжка: Дж.Хьюз. Структурный подход к программированию.
Так вот там утверждалось, что оператор goto вполне допустим, если
1. Не переходить по метке внутрь управляющей структуры.
2. Не переходить по метке, расположенной выше оператора перехода (т.е., переходим только вниз).

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

 Профиль  
                  
 
 Re: Помогите, пожалуйста решить задачу по с++
Сообщение06.11.2009, 17:44 
Заслуженный участник


11/05/08
32166
Maslov в сообщении #259087 писал(а):
, то надо знать, что он там имеется и уметь его использовать.

Так вот в том-то и пафос, что -- практически не надо. Во всяком случае, в языках т.наз. "высокого уровня". В ассемблерах -- дело другое, конечно, но ведь не об них же и речь.

 Профиль  
                  
 
 Re: Помогите, пожалуйста решить задачу по с++
Сообщение06.11.2009, 17:55 
Заслуженный участник


19/07/08
1266
Maslov в сообщении #259079 писал(а):
Извините, а Вы на Фортране VI или на ассемблере никогда не программировали?
Мне посчастливилось родиться, когда уже были высокоуровневые языки программирования. :)
На ассемблере программировал. Если бы вопрос был про ассемблер -- я бы не возражал против goto.
Maslov в сообщении #259079 писал(а):
Можно и с goto написать кристально ясную программу, и без goto нечто нечитаемое и неотлаживаемое.
Угу, только намного тяжелее.

Maslov в сообщении #259087 писал(а):
Если какой-то оператор в языке имеется, то надо знать, что он там имеется и уметь его использовать.

Не тогда, когда этот оператор оставлен исключительно для совместимости. Причём непонятно с чем.
Можно и на 90 фортране данные задавать через data, а переменными обмениваться через common блоки. И за это тоже надо убивать.

 Профиль  
                  
 
 Re: Помогите, пожалуйста решить задачу по с++
Сообщение06.11.2009, 18:15 
Заслуженный участник


04/05/09
4587
В языках без оператора выхода из нескольких циклов (к ним относится и C++) goto просто необходим. Отказ от goto в таких случаях приводит к менее понятному коду.
Собственно это, на мой взгляд, единственное оправдание этому оператору.
Да и в Java, хоть break и позволяет выйти из нескольких циклов, метка почему-то должна стоять сверху, а не там, куда попадёт управление. В этом смысле continue с меткой гораздо удобнее.

 Профиль  
                  
 
 Re: Помогите, пожалуйста решить задачу по с++
Сообщение06.11.2009, 18:34 
Заслуженный участник


27/04/09
28128
Тема превратилась в goto-холивар. Автора темы так и не видно. Сразу скажу - я против любого фанатизма и за разумное использование goto (в исключительных на то случаях со страшными циклическими вложенностями и подобным)

 Профиль  
                  
 
 Re: Помогите, пожалуйста решить задачу по с++
Сообщение06.11.2009, 18:44 
Заслуженный участник


19/07/08
1266
venco в сообщении #259105 писал(а):
В языках без оператора выхода из нескольких циклов (к ним относится и C++) goto просто необходим. Отказ от goto в таких случаях приводит к менее понятному коду.
Собственно это, на мой взгляд, единственное оправдание этому оператору.

Выделяем блок в функцию, заменяем goto на return. Повышаем читабельность в разы.

 Профиль  
                  
 
 Re: Помогите, пожалуйста решить задачу по с++
Сообщение06.11.2009, 18:57 
Заслуженный участник


27/04/09
28128
Не везде можно выделить блок в функцию, да и вызов функции затратен, особенно, если этот блок в трёх циклах. Как вам, nestoklon?

 Профиль  
                  
 
 Re: Помогите, пожалуйста решить задачу по с++
Сообщение06.11.2009, 19:01 
Заслуженный участник


09/08/09
3438
С.Петербург
nestoklon в сообщении #259129 писал(а):
Выделяем блок в функцию, заменяем goto на return.
И тащим туда штук 20 параметров.

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

nestoklon в сообщении #259129 писал(а):
Повышаем читабельность в разы.
Не поделитесь секретом, как Вы меряете эти разы.

 Профиль  
                  
 
 Re: Помогите, пожалуйста решить задачу по с++
Сообщение06.11.2009, 19:07 
Заслуженный участник


11/05/08
32166
а девочку-то -- и впрямь забили. Нехорошо (как и было указано).

 Профиль  
                  
 
 Re: Помогите, пожалуйста решить задачу по с++
Сообщение06.11.2009, 19:17 
Заслуженный участник


09/08/09
3438
С.Петербург
Почему забили?
Anastasiya1979 в сообщении #259049 писал(а):
спасибо большое
Anastasiya1979 сказала спасибо и, наверное, пошла писать программу :)

 Профиль  
                  
 
 Re: Помогите, пожалуйста решить задачу по с++
Сообщение06.11.2009, 19:22 
Заслуженный участник


27/04/09
28128
А потом она будет юзать только goto... :o :cry:

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 47 ]  На страницу Пред.  1, 2, 3, 4  След.

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group