(no subject)
то что ты сейчас пытаешься сделать (использовать ассемблер в программах на Delphi) — ошибка. Генетическая. Российская. Всей образовательной системы страны. Таких преподов надо увольнять сразу же. Если выжигать эту дурь из мозгов каленым железом не получается. Правильно им копейки платят. Они это заслужили.
http://lurkmore.ru/Pascal#.D0.9F.D1.80.D0.B8.D0.BC.D0.B5.D1.80.D1.8B_.D0.9F.D0.A0.D0.90.D0.92.D0.94.D0.AB_.D0.BF.D1.80.D0.BE_Delphi
А я говорил!
http://lurkmore.ru/Pascal#.D0.9F.D1.80.D0.B8.D0.BC.D0.B5.D1.80.D1.8B_.D0.9F.D0.A0.D0.90.D0.92.D0.94.D0.AB_.D0.BF.D1.80.D0.BE_Delphi
А я говорил!
no subject
Потому как если в функции вначале два вложенных цикла, а после них ещё что-то делается, то это явный признак того, что задачу надо декомпозировать.
no subject
no subject
Другие варианты решения этой проблемы — помещение вложенных циклов в отдельную процедуру и использование команды досрочного выхода из процедуры, а в языках с поддержкой исключений — генерацию исключения, обработчик которого располагается за пределами циклов. Однако подобные решения могут снижать производительность, в особенности если этот участок кода вызывается многократно (поскольку и вызовы процедур, и операторы работы с исключениями транслируются далеко не в одну машинную инструкцию).
no subject
> Однако подобные решения могут снижать производительность, в особенности если этот участок кода вызывается многократно (поскольку и вызовы процедур, и операторы работы с исключениями транслируются далеко не в одну машинную инструкцию).
Инлайн!
Или, к примеру, посмотри на хаскел и осознай что вот ЭТО хуйзнаетшо компилируется в вообще хуй проссышь ассемблерную кашу - но работает, сцуко, быстро и решительно.
no subject
А вот throw - да, там вообще какая-то дикая херь в ассемблере генерится. Так что исключения стоит использовать для действительно исключительных ситуаций.
no subject
String str = "четотам";
try
{
int temp = (int)str;
}
catch(ArgumentException e)
И вуаля.
no subject
no subject
no subject
no subject
no subject
no subject
no subject
no subject
а в случае return мы получаем несколько семантически несвязных концовок
no subject
Смысл существования функции - вернуть результат. Она его возвращает. В зависимости от разных условий, результат может возвращаться разный.
def mod(a):
if a > 0:
return a
else:
return -a
Ну давай на стеке поднимать int res, присваивать его в двадцати местах делать, а потом извращаться с готой либо управляющими конструкциями чтобы оказаться в конце и вернуть res. Правда, где этот res образовался потом хуй отследишь, но кого это волнует, лишь бы ретурнили его в одном месте.
Бывает конечно, иногда, что надо не просто ретурн а ещё и финалайзить, снимать мутексы какие-нибудь и всё такое. Решается return finalize([мойтекущийрезультат]). Где финалайз - ЛОКАЛЬНАЯ субфункция.
no subject
но с точки зрения "расовой чистоты" return нарушает линейность flow , вместе со всем комплексом проблем goto - т.е. в последующем сопровождении ведет к ошибкам исполнителя
no subject
ретурн это не какой-то там обходной путь для решения какой-то там конкретной проблемы - ретурн это, именно смысл функции. Она возвращает значение. И нет совершенно, вообще, никакой проблемы его возвращать из многих мест.
Давай, взорву мозг :
def myfunc(a,b):
return someotherfunc
myfunc(a,b)(args)
Расскажи про линейность флоу, неподдерживаемый спагетти и ошибки исполнителя %)
(no subject)
(no subject)
(no subject)
no subject
no subject
и где такое дают?Какие, в жопу, блоксхемы? На блок-схеме вот это говно совершенно идентично вот этой питонятине:
def test(a):
if a > 30:
print "a>30"
elif a > 20:
print "A>20"
elif a > 10:
print "A>10"
else:
print "A TOO SMALL!"
return False
# maybe something more
print "DONE"
no subject
no subject
no subject
no subject
no subject
no subject
Дорогой двачик, есть одна scheme....
SICP читал?:)