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

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

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 13.01.2012, 00:55   #41
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

я имел в виду что нужен именно ваш вариант без continue.
Код:
label lab;

var
  i1,i2,i3:Integer;
begin
  for i1=0 to 1 do
  begin

  lab: continue; //не доходим до второго и третьего цикла то...

    for i2:=0 to 2 do
    begin
       for i3:=0 to 3 do
       begin
          If 1 = 1 then GOTO lab; 
       end;
    end;
  end;
end;
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 13.01.2012, 00:59   #42
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
я имел в виду что нужен именно ваш вариант без continue.
Точно, я и упустил этот момент. Continue там нельзя
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 13.01.2012, 01:47   #43
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Удобно применять метки в подобной ситуации..
Вариант без continue - подошёл как нельзя лучше!
Человек_Борща вне форума Ответить с цитированием
Старый 13.01.2012, 09:21   #44
Вадим Мошев

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

Конкретно про опасность/неопасность использования операторов GOTO (на языках высокого уровня) ничего сказать не могу. В этой теме читал, что полностью безопасно.

Единственное, что могу сказать, согласно одной прочитанной информации в одной книге по программированию на турбо-паскаль, на конвеерных ЭВМ использование GOTO приводит к перезагрузке регистров (подробнее сказать не могу, вечером, думаю, выложу скан этого места в книге, а также название самой книги).

Говоря про порочность использования оператора GOTO, практически все (если вообще не все) на первое место среди причин его порочности ставят приобретение кодом трудночитабельного/трудноанализируемого вида ("спагетти-код").

Лично я считаю, что оператор гото целесообразней НЕ использовать, несмотря на то, что в некоторых местах его использование может упростить (в какой-то степени) составление алгоритма, но при этом теряется "легкоанализируемость".
Поэтому операторами гото никогда не пользовался. Конечно он является хорошим средством выхода из многократновложенного цикла, особенно, если рядом написано много мегатонн кода, хотя и флагами можно пользоваться, но, честно сказать, я бы предпочёл флагам гото.

Можно сказать, что GOTO опасен только в неумелых руках. Хоть я себя неумелым и не считаю, но всё же, как говорил выше, стараюсь НЕ использовать ГОТО.

_______________________

Кстати, для справки.
В языке программирования ассемблер для микроконтроллеров серии 51 нет циклов и условных операторов. Вместо этого там есть несколько видов операторов перехода (условные и безусловные, кстати GOTO - безусловный).
Вот, при помощи исключительно лишь операторов перехода приходилось организовывать и циклы, и сравнения.

Например, вот как будет выглядеть программа на ассемблере для 51-го МК, которая увеличивает число на 1, если оно равно 3.

Код:
$mod51
	MOV A, #3
	MOV R1, #3
	CLR C
	SUBB A, R1
	JNZ A, LAB; JNZ - jump not zero. Переход к указанной метке, если содержимое аккумулятора A НЕ равно нулю
	MOV A, R1
	INC A

LAB
	NOP
	
	END
Вадим Мошев вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
зачем учить Pascal krot_zdes Свободное общение 52 31.05.2011 16:48
Зачем эта перменная (Delphi) reasons Помощь студентам 9 15.07.2010 22:22
Метки в Tbarseries (Delphi 7) Николай ПН Помощь студентам 0 31.03.2010 18:40
Что такое коды ASCII и зачем они?? Ларик Помощь студентам 2 27.01.2008 19:41
обновление в блоге - Ресурсы. Зачем они нужны. Pblog Обсуждение статей 0 27.05.2007 03:17