Какой синтаксис вам больше нравится
|
| | |
Andrey_M | Дата: Пятница, 20 Сентября 2013, 16:20 | Сообщение # 41 |
старожил
Сейчас нет на сайте
| Цитата (PBPROG) Что вам не понравилось в присвоении 0 переменной done? То, что это происходит 5 раз на десятистрочном участке кода.
ЪЪЪЪ! Лучшая благодарность - плюс в репутацию :-)
|
|
| |
PBPROG | Дата: Пятница, 20 Сентября 2013, 16:37 | Сообщение # 42 |
постоянный участник
Сейчас нет на сайте
| Есть предложения как можно по другому выйти из цикла первого уровня, если ни разу не было выполнено условие внутри цикла второго уровня?
|
|
| |
Andrey_M | Дата: Пятница, 20 Сентября 2013, 16:44 | Сообщение # 43 |
старожил
Сейчас нет на сайте
| Цитата (PBPROG) Есть предложения как можно по другому выйти из цикла первого уровня, если ни разу не было выполнено условие внутри цикла второго уровня? exit
ЪЪЪЪ! Лучшая благодарность - плюс в репутацию :-)
|
|
| |
PBPROG | Дата: Пятница, 20 Сентября 2013, 16:53 | Сообщение # 44 |
постоянный участник
Сейчас нет на сайте
| Это если условие выполнено. Но здесь нужна проверка чтобы в цикле условие НИ РАЗУ не было выполнено. Переменная служит своеобразным флагом.
|
|
| |
Сибирский | Дата: Пятница, 20 Сентября 2013, 17:10 | Сообщение # 45 |
Javatar
Сейчас нет на сайте
| PBPROG, мне кажется, или вы написали неправильно? Работать-то оно будет, но ваш алгоритм полная фигня Добавлено (20.09.2013, 17:10) --------------------------------------------- Это какой-то пузырек, оптимизированный, да не оптимизированный
|
|
| |
PBPROG | Дата: Пятница, 20 Сентября 2013, 17:16 | Сообщение # 46 |
постоянный участник
Сейчас нет на сайте
| Да это пузырек, но не я его писал. Взял первый попавшийся код на форуме.
|
|
| |
noname | Дата: Пятница, 20 Сентября 2013, 17:57 | Сообщение # 47 |
заслуженный участник
Сейчас нет на сайте
| Цитата (PBPROG) Посмотрите на процедуру сортировки массива. ну, и не к такому можно привыкнуть. хотя лично меня перспектива писать лишние буковки не привлекает.
лучше я после закрывающей скобки напишу коммент, точно и ясно поясняющий, что мы закрываем, там где этот коммент нужен.
а в этом вашем бэйсике получается, что если будет идти подряд 10 концов if, то мне придётся написать 10 раз подряд EndIf, а потом ещё и поясняющий коммент.
что ещё меня настораживает- так это отсутствие разделителей в конце строк. можно ли написать несколько операторов одной строкой? удобно бывает сделать в одну строку присваивания нескольким локальным переменным.
ну и необходимость заранее объявлять всякие i - это тоже жесть. в C++ объявил i в цикле, использовал и забыл- она будет существовать только в пределах цикла.
Цитата (Andrey_M) То, что это происходит 5 раз на десятистрочном участке кода. изменять флаг в условии внутри цикла- обычное дело. а вам не мешало бы ознакомиться с популярными алгоритмами, чтобы не удивляться подобным приёмам. вот, в данном случае, вы видели сортировку методом пузырька.
Цитата (PBPROG) Переменная служит своеобразным флагом. а чего у вас флаг не булевский?
и зачем вы переменные объявляете как Static? ваша же функция не пользуется результатами предыдущих выполнений функции.
Добавлено (20.09.2013, 17:55) --------------------------------------------- Цитата (Andrey_M) Вот почему я считаю делфи/паскаль понятным языком. Потому что выйти из блока exitом логичнее, чем возвращать значение 0 программе... зато в C есть нормальный return. и везде где надо завершить функцию- пишем одно и тоже- return. причём компилятор проверит, чтобы вы поcле return указали корректное значение того, что надо возвращать. всё предельно чётко и ясно. есть и exit, но он предназначен для выхода из программы вообще.
а что имеем в Delphi: функция завершается по End, но может завершиться и по Exit. а что в каком из случаев функция вернёт- ищите в коде. забыли перед очередным выходом присвоить нужное значение переменной Result? - ваши проблемы. тут вам компилятор вам не помощник.
Добавлено (20.09.2013, 17:57) --------------------------------------------- Цитата (Сибирский) Это какой-то пузырек, оптимизированный, да не оптимизированный совершенно обычный нормальный пузырёк.
все правила форумной игры Дуэль Программистов
Сообщение отредактировал noname - Пятница, 20 Сентября 2013, 18:02 |
|
| |
TheAce | Дата: Пятница, 20 Сентября 2013, 17:58 | Сообщение # 48 |
Pain is Pleasure
Сейчас нет на сайте
| Цитата (Andrey_M) Вот почему я считаю делфи/паскаль понятным языком. Потому что выйти из блока exitом логичнее, чем возвращать значение 0 программе... гхкм...
function addition(a:int; b:int):int begin addition := a+b; end;
int addition(int a, int b) { return a+b; }
И кто там что-то говорит про "понятность"?
The End [3D][TPS]
Сообщение отредактировал TheAce - Четверг, 03 Октября 2013, 19:09 |
|
| |
noname | Дата: Пятница, 20 Сентября 2013, 18:21 | Сообщение # 49 |
заслуженный участник
Сейчас нет на сайте
| Цитата (PBPROG) Да это пузырек, но не я его писал. Взял первый попавшийся код на форуме. ну тогда вопросы по коду- не к вам. я вообще думаю, что мои вопросы к этому коду связаны с ограничениями и неудобствами PureBasic.Добавлено (20.09.2013, 18:01) ---------------------------------------------
Цитата (TheAce) function addition(int a, int b):int { addition := a+b; } а, точно. ведь вместо Result может быть использовано ещё и имя функции. вообще жесть. остальное что я думаю по этому поводу- написал выше.Добавлено (20.09.2013, 18:21) ---------------------------------------------
Цитата (noname) что ещё меня настораживает- так это отсутствие разделителей в конце строк. можно ли написать несколько операторов одной строкой? удобно бывает сделать в одну строку присваивания нескольким локальным переменным. ну или наоборот- бывает удобно перенести кусок длинной строки на следующую строку.
все правила форумной игры Дуэль Программистов
|
|
| |
PBPROG | Дата: Пятница, 20 Сентября 2013, 18:43 | Сообщение # 50 |
постоянный участник
Сейчас нет на сайте
| Цитата (noname) хотя лично меня перспектива писать лишние буковки не привлекает. лучше я после закрывающей скобки напишу коммент, точно и ясно поясняющий, что мы закрываем, там где этот коммент нужен. В IDE есть автодополнение и достаточно ввести первые символы и выбрать в списке требуемое ключевое слово. Комметны это тоже "буковки" и если их писать для каждой (или почти каждой) закрывающей скобки, то количество буковок может быть не малым. И для комментов нет автодополнения.
Цитата (noname) что ещё меня настораживает- так это отсутствие разделителей в конце строк. можно ли написать несколько операторов одной строкой? Двоеточие - разделитель строки.
Цитата (noname) ну и необходимость заранее объявлять всякие i - это тоже жесть. Нет их не нужно заранее объявлять. Но в данном случае, они объявлены статическими переменными (понятия не имею почему). Строку "Static len, done, i" можно исключить из кода без потери его функциональности.
Цитата (noname) и зачем вы переменные объявляете как Static? ваша же функция не пользуется результатами предыдущих выполнений функции. Код не мой и как писал выше, перемеренные не обязательно должны быть статическими. Разница в том, что статические переменные, имеют постоянные адреса, а не хранятся в стеке текущего потока.
Цитата (noname) а чего у вас флаг не булевский? В данном случае, это не имеет большого значения. Тем более что переменная не может иметь размер 1 бит.Добавлено (20.09.2013, 18:43) ---------------------------------------------
Цитата (noname) ну или наоборот- бывает удобно перенести кусок длинной строки на следующую строку. Это тоже можно. Например эта конструкция будет нормально компилироваться и правильно работать.Код hWnd = CreateWindowEx_(0, WindowClass, "Окно", #WS_SYSMENU | #WS_MINIMIZEBOX, 0, 0, 200, 120, 0, 0, 0, 0)
|
|
| |
Сибирский | Дата: Пятница, 20 Сентября 2013, 18:45 | Сообщение # 51 |
Javatar
Сейчас нет на сайте
| А мне кажется, или автор решил развести холивар?
|
|
| |
Andrey_M | Дата: Пятница, 20 Сентября 2013, 19:01 | Сообщение # 52 |
старожил
Сейчас нет на сайте
| Цитата (noname) зато в C есть нормальный return. и везде где надо завершить функцию- пишем одно и тоже- return. причём компилятор проверит, чтобы вы поcле return указали корректное значение того, что надо возвращать. всё предельно чётко и ясно. есть и exit, но он предназначен для выхода из программы вообще. ???? Офигеть, логично: завершить функцию - пишем return. Причём с нудным компилятором, которому важно, что именно возвращать. И ещё показывать это как достоинство... стыдоба.
Цитата (PBPROG) В данном случае, это не имеет большого значения. Тем более что переменная не может иметь размер 1 бит. Ага, есть разница, переменная однобайтовая или 64-байтная?
ЪЪЪЪ! Лучшая благодарность - плюс в репутацию :-)
|
|
| |
noname | Дата: Пятница, 20 Сентября 2013, 19:02 | Сообщение # 53 |
заслуженный участник
Сейчас нет на сайте
| PBPROG, почитал немного про PureBasic. в-общем, ничего особо страшного не заметил.
Цитата (PBPROG) Разница в том, что статические переменные, имеют постоянные адреса, а не хранятся в стеке текущего потока. вот, чтобы понять, нужно ли это в данном алгоритме нужно формулировать разницу в терминах алгоритма, а не реализации. в данном случае смысла нет, ибо значения оставшиеся после предыдущего вызова функции не используются(затираются новыми).
Цитата (PBPROG) В данном случае, это не имеет большого значения. Тем более что переменная не может иметь размер 1 бит. в данном случае переменная по-умолчанию будет типа Long и занимать 4 байта, но это не важно. такие мелочи никто не ловит. экономить имеет смысл на больших массивах или структурах.
на C++ бы нормалный проггер объявил бы флаг как bool. и это даёт доп инфу, о том, как эта переменная будет использоваться в алгоритме. не потому что это важно, а потому что всё равно переменную нужно как-то объявить. в этом смысле C строже.
а в PureBasic вообще нет булевских переменных %)) не, ну чё- можно и без них. зато в бэйсике работа со строками удобнее.
вообще хороший нормалный бэйсик- удобная вещь.
надо бы как-нить изучить отличия Visual Basic 6 от Pure Basic.
все правила форумной игры Дуэль Программистов
|
|
| |
PBPROG | Дата: Пятница, 20 Сентября 2013, 19:15 | Сообщение # 54 |
постоянный участник
Сейчас нет на сайте
| Цитата (Andrey_M) Ага, есть разница, переменная однобайтовая или 64-байтная? Простите, какой проц нативно поддерживает 64-байтные переменные?
Цитата (noname) а в PureBasic вообще нет булевских переменных Это не вызывает затруднений, ведь как писал выше, проц нативно не поддерживает однобитовые переменные. Переменную можно объявить однобайтовой и использовать как булевую.
|
|
| |
noname | Дата: Пятница, 20 Сентября 2013, 19:29 | Сообщение # 55 |
заслуженный участник
Сейчас нет на сайте
| Цитата (Andrey_M) Офигеть, логично: завершить функцию - пишем return. Причём с нудным компилятором, которому важно, что именно возвращать. И ещё показывать это как достоинство... да, завершать функцию всегда одним и тем же оператором return- действительно логичнее, чем иметь для этих же целей End, Exit, Result и имя переменной совпадающее с именем функции.
явно указать одним оператором, что функция возвращает, вместо того, что бы использовать оператор Exit, до которого ещё надо занести значение в какую-то переменную.. ну вот представь- читаешь ты чужую программу. нашёл Exit. как теперь понять, что функция вернёт? для этого надо сначала выполнить поиск по ключевому слову Result, а потом ещё по имени функции, чтобы понять, что именно в эту переменную будет занесено последним.
и возможность дать компилятору отловить хоть какие-то ошибки- никогда не лишняя.
Добавлено (20.09.2013, 19:29) --------------------------------------------- Цитата (PBPROG) Это не вызывает затруднений, ведь как писал выше, проц нативно не поддерживает однобитовые переменные. Переменную можно объявить однобайтовой и использовать как булевую. да, я понял- затруднений не вызывает. но вы бы читали сообщение перед тем как отвечать. дело, в данном случае, не в байтах.
но, да- вопрос не принципиальный. то есть- не стоит спора.
все правила форумной игры Дуэль Программистов
Сообщение отредактировал noname - Пятница, 20 Сентября 2013, 19:33 |
|
| |
TheAce | Дата: Пятница, 20 Сентября 2013, 19:35 | Сообщение # 56 |
Pain is Pleasure
Сейчас нет на сайте
| Цитата (Andrey_M) Причём с нудным компилятором, которому важно, что именно возвращать. И ещё показывать это как достоинство... стыдоба. Если один компилятор сует тебя рылом прямо в твою ошибку - это хороший компилятор. Если другому компилятору насрать - это плохой, мать его, компилятор. Чуешь разницу?
The End [3D][TPS]
|
|
| |
Сибирский | Дата: Среда, 02 Октября 2013, 18:38 | Сообщение # 57 |
Javatar
Сейчас нет на сайте
| Andrey_M, вот ты реально глупый совсем. Ничего не смыслишь, но всем свое мнение пытаешься рассказать. Зачем? Все поняли, что ты конченный быдлокодер и перспектив у тебя нет...
|
|
| |
|