Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.09.2012, 16:27   #11
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Серж, огромное Вам спасибо!
"Дебаты" были для образования, чтобы узнать точку зрения Господина Мошева, а за тем и Вашу (еще раз огромное спасибо), а не для холивара.
Poma][a вне форума Ответить с цитированием
Старый 11.09.2012, 16:39   #12
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
приравнивается к goto что является синонимом ереси.
Чтобы избавиться от данного заблуждения, попробуйте программировать на ассемблере) Goto не используют часто из-за того, что в итоге сложнее разбираться в программе, а не потому, что программа будет хуже... А в вышеприведённом примере даже безусловного перехода в машинных кодах можно избежать, если использовать хороший компилятор...

з.ы. прошу прощения за оффтоп.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 11.09.2012, 17:11   #13
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

В данный момент разговор идет про Pascal, и использование Goto не является правилом хорошего тона. (мягко сказано)
Poma][a вне форума Ответить с цитированием
Старый 15.09.2012, 20:28   #14
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
Сообщение от Poma][a Посмотреть сообщение
Простите, если чем-то Вас обидел. Спасибо за разъяснения. Простите, но что это?
Нет, вы меня ничем не обидели.
Вадим Мошев вне форума Ответить с цитированием
Старый 16.09.2012, 10:36   #15
Poma][a
Новичок
Джуниор
 
Регистрация: 11.10.2011
Сообщений: 3,882
По умолчанию

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
Нет, вы меня ничем не обидели.
Вот и хорошо!
Poma][a вне форума Ответить с цитированием
Старый 18.09.2012, 03:08   #16
TinMan
Форумчанин
 
Аватар для TinMan
 
Регистрация: 05.09.2011
Сообщений: 869
По умолчанию

Цитата:
Сообщение от Poma][a Посмотреть сообщение
kangreon, в Вашем варианте можно убрать 1 BeginEnd.
Ну, если быть точным, то там можно убрать 2 набора begin/end, но только это не влияет на производительность, а размер паскалевского кода не должен быть самоцелью.. ) В любом случае, kangreon заслуживает +1, что я и делаю. Мое желание "упростить" путем разбивания на два этапа в данном случае не оправдано, думаю.

Что же касается выхода из цикла по break - согласен, это нехорошо. Да, я бы уподобил это действо применению goto (может, не на 100%). Кивание на ассемблер тут совершенно неуместно - все и без того понимают (ну.. мож, не совсем все..)), что ассемблерный jmp (плюс условный оператор) есть просто ОСНОВА программирования. То есть, без него там просто НИКУДА, он там в высшей степени ПОЛЕЗЕН. Но если костер и полезен в пещере (или походе), разжигать его дома не советую. Дома есть модернизидравнный вариант костра - газовая горелка, ей и пользуйтесь на здоровье. Она использует ТУ ЖЕ РЕАКЦИЮ (горение, не буду вдаваться в химические подробности). Точно так же, конструкции for или while языков высокого уровня ИСПОЛЬЗУЮТ goto. Явное же их использование в программе на ЯВУ обычно приводит к путанице и ошибкам. Это не есть недостаток САМОГО ОПЕРАТОРА goto. Это есть свойство (недостатком не назову все же) ЧЕЛОВЕЧЕСКОГО МЫШЛЕНИЯ.

Но все это - не более, чем общие слова. Когда доходит дело до конкретики, часто оказывается, что обойтись только т.н. "структурными операторами" не всегда даже возможно (я уж не говорю про удобство). И очень хочется послать все (go to ...)) и влепить goto, ну или хотя бы break, и тем самым сломать (break down, простите за каламбур)) всю красоту. Но в этот момент надо вспомнить про такое средство структурного программирования, как подпрограммы..

В соответствии со сказанным я бы переделал код kangreon примерно как-то так..
Код:
function AllDiffer(a: array of integer; n: integer): boolean;
var
  i,j: integer;
begin
  AllDiffer:= false;
  for i:=1 to n-1 do
    for j:=succ(i) to n do
      if a[i]=a[j] then exit;
  AllDiffer:= true
end;
...
  // array a definition, and input
  writeln(AllDiffer(a,n));
end.
Предпочитаю на "ты".
TinMan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проверить все ли элементы в массиве различны. Proskurina Помощь студентам 7 08.09.2012 23:36
Перестановкой из n элементов называется последовательность длины n, все элементы которой различны. Получить перестановки (Паскаль) Pa s Помощь студентам 3 24.05.2012 13:06
в массиве все максимальные элементы заменить первым элементом, а все минимальные элементы заменить последним элементом Валерия2701 Паскаль, Turbo Pascal, PascalABC.NET 1 12.10.2011 15:49
Дана действительная матрица размером n x m, все элементы которой различны. В каждой строке выбирается эл bayker Помощь студентам 5 30.05.2010 21:32
Найти кол-во её стобцов,все элементы которых различны. Delphi. Flashcherry Помощь студентам 1 21.03.2009 00:46