|
|
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
JeStonesoftwarerВы правы. Офигенная прелесть Паскаля (точнее, дельфы, как его современного представителя) в исключительной информативности кода, ... Это все субъективно. Для меня, например, ... Вы не совсем правы. Здесь есть три составляющих. Во-первых, согласен, субъективная - уровня "мне больше/меньше нравятся фигурные скобки чем begin/end". Во-вторых, привычка; наработанная практика восприятия кода на определённом языке, его типовых приёмов итп. И в-третьих таки объективная, порождённая (не)соответствием подходов и средств языка задаче. Чтобы увидеть, что объективная составляющая точно существует.. ну давайте возьмём, например, какой-нибудь сложный, но воспринимаемый SQL-запрос, и представим себе, как будет выглядеть делающий то же самое код на plain C. Так вот, я говорю именно об объективной составляющей. При этом, поскольку мне нравится и Си как таковой, и Паскаль как таковой, полагаю, что не вношу в оценку большой субъективности. В каждом из них есть то, что мне нравится, и то, что не нравится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 10:09 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
SashaMercuryПервая часть вашего примера, на языке Си, будет выглядеть следующим образом Саш, я привёл пример функции без параметров. Не надо переделывать постановку, это недостойно. SashaMercuryНе вижу какой-то красоты в том что вы привели, код Си красивее. Я привёл пример мест, в которых Си требует кучу мешающих восприятию круглых скобок. Судя по тому, что Вы начинаете менять постановку задачи и говорить о чём-то другом, свой тезис про скобки я обосновал достаточно убедительно. SashaMercuryМне кажется, что символов будет больше, Наверное. А мы экономим символы? Тогда лучше всего использовать однобуквенные идентификаторы, да и вообще перейти работать на APL. SashaMercuryПриведите пожалуйста аналог следующего кода Си на Паскале Без проблем. Код: pascal 1. Кстати, и здесь скобок меньше, чем в Вашем варианте (что неудивительно). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 10:14 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
SashaMercuryКстати, как вы думаете, что лучше, := для присваивания, и = для сравнения, либо = для присваивания, и == для сравнения ? Безразлично. Я спокойно работаю и с тем, и с другим, и вперемешку. SashaMercuryУ нас два фактора, частота появления оператора, и читабельность. Неверно. Основной фактор, куда более важный, чем оба названных - вероятность ошибиться, использовав одно вместо другого. С этой точки зрения :=, пожалуй, лучше. Лично я никогда так не ошибался и не очень понимаю, как ошибаются другие. Но судя по тому, что в компиляторы пихают варнинги на присваивания в условиях, проблема довольно актуальна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 10:18 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
softwarer Саш, я привёл пример функции без параметров. Не надо переделывать постановку, это недостойно. не понял задумки, тут вы правы softwarer Код: pascal 1. а вот тут уже вы переделываете постановку, оригинал был с присваиванием в условии :) Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 10:28 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
Dima TmaytonВот достаточно частый пример который я объясняю своим девелоперам. Код: plaintext 1. 2. 3. 4. 5. А если так: Код: plaintext 1. 2. Тогда оба твоих варианта дают 0 Так правильно работает Код: plaintext 1. Верно. Этот пример требует пояснений. Я выношу его на собеседование. Задача рисования ProgressBar часто актуальна. При этом надо помнить о переполнениях разрядной сетки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 10:40 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
Есть и обратный случай. Максимальное число заявок к примеру MAX_CNT может быть меньше 100 штук. В этом случае целочисленное деление даст сильно "грубый" результат. Опять константа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 10:50 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
maytonЕсть и обратный случай. Максимальное число заявок к примеру MAX_CNT может быть меньше 100 штук. В этом случае целочисленное деление даст сильно "грубый" результат. Опять константа. Универсального решения нет. Надо проверять значение MAX_CNT и считать тем или иным способом. Хотя можно перевести в double и тогда все три способа подойдут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 11:29 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
Так универсально: Код: sql 1. Кстати почему ты считаешь некорректно Код: plaintext 1. умножение и деление имеют одинаковый приоритет, т.е. будет выполнено так Код: plaintext 1. по крайней мере для MSVC это одно и тоже Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 11:41 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
Dima TУниверсального решения нет. Надо проверять значение MAX_CNT и считать тем или иным способом Либо приводить к какому-нибудь заведомо достаточному типу. Либо нормировать (типа if (max_cnt > max_int/100) { max_cnt /= 100; progress /= 100;} ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 12:12 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
SashaMercuryа вот тут уже вы переделываете постановку, оригинал был с присваиванием в условии :) Вы ещё скажите, что постановка требует использовать функцию getc :) Сишные операции - присваивание, запятая, тернарная - безусловно, относятся к достоинствам языка. Но как видите, в Вашем примере она используется как ненужная заплата на недостаток дизайна стандартной библиотеки :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 12:15 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
Dima T, хм... гдеж я этот приоритет-то взял. Из каких языков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 12:29 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
maytonDima T, хм... гдеж я этот приоритет-то взял. Из каких языков. хз, везде вроде слева направо вычисляется могу только предположить что изначально было Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 12:37 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
Думаю да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 13:18 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
softwarerSashaMercuryа вот тут уже вы переделываете постановку, оригинал был с присваиванием в условии :) Вы ещё скажите, что постановка требует использовать функцию getc :) Сишные операции - присваивание, запятая, тернарная - безусловно, относятся к достоинствам языка. Но как видите, в Вашем примере она используется как ненужная заплата на недостаток дизайна стандартной библиотеки :) softwarer Код: pascal 1. Функция Eof(stream) равносильна getc()+ungetc() верно ? Т.е. берём символ из потока, проверяем его, и кладём его обратно(в том смысле, что указатель в потоке перемещается обратно или как-то иначе, но по смыслу аналогично ). Возвращает результат проверки. Или ошибаюсь ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 13:20 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
Dima T, расcтроил Марка :D не стыдно ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 13:22 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
SashaMercuryФункция Eof(stream) равносильна getc()+ungetc() верно ? Т.е. берём символ из потока, проверяем его, и кладём его обратно(в том смысле, что указатель в потоке перемещается обратно или как-то иначе, но по смыслу аналогично ). Возвращает результат проверки. Или ошибаюсь ? Это квантовый эффект бро! Чтобы "взглянуть" на EOF файла нужно "поток изменить". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 13:23 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
mayton, есть такой язык, в котором приоритет * и / различаются, но не помню какой..где-то читал, что-ли. Даже не знаю откуда у меня эта информация в голове, не помню ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 13:24 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
SashaMercuryDima T, расcтроил Марка :D не стыдно ;) Да ничего не стыдно. Всё норм. Нельзя быть докой во всём. Голова лопнет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 13:25 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
SashaMercuryФункция Eof(stream) равносильна getc()+ungetc() верно ? По результату - да, по реализации - нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 13:25 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
maytonSashaMercuryФункция Eof(stream) равносильна getc()+ungetc() верно ? Т.е. берём символ из потока, проверяем его, и кладём его обратно(в том смысле, что указатель в потоке перемещается обратно или как-то иначе, но по смыслу аналогично ). Возвращает результат проверки. Или ошибаюсь ? Это квантовый эффект бро! Чтобы "взглянуть" на EOF файла нужно "поток изменить". кто-то перечитал Ткань космоса, или посмотрел Интерстеллар на днях Так я правильно рассуждал, или нет ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 13:26 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
softwarer, а как по реализации ? Расскажите пожалуйста ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 13:27 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
maytonДа ничего не стыдно. Всё норм. Нельзя быть докой во всём. Голова лопнет. Нельзя, конечно. Но я в какой-то момент обзавёлся привычкой проверять то, что я выношу на люди, и в частности задачи для собеседований. Времени тратится немного, а вот пользы прилично. Особенно когда открываешь для себя что-то новое :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 13:28 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
maytonSashaMercuryDima T, расcтроил Марка :D не стыдно ;) Да ничего не стыдно. Всё норм. Нельзя быть докой во всём. Голова лопнет. "расстроил" в том плане, что теперь кому-то придется вспоминать язык, к которому пример выше будет актуален Раз уж привел пример, то нужно довести его до конца ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 13:29 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
SashaMercurymaytonпропущено... Это квантовый эффект бро! Чтобы "взглянуть" на EOF файла нужно "поток изменить". кто-то перечитал Ткань космоса, или посмотрел Интерстеллар на днях Так я правильно рассуждал, или нет ? Ни то не другое не смотрел и не читал. По поводу функций читаючих "текстовые строки" или "символы". Ну... они скорее всего являются фасадом для fopen/fread/fclose/fseek, или open/read/close. В любом случае надо сначала что-то вычитать. Удариться об "ограничитель" и потом принять решение о выходе из цикла. А делать это через while(.) или do{..} while уже кому как удобнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 13:34 |
|
||
|
Использование приоритетности операторов или скобки
|
|||
|---|---|---|---|
|
#18+
SashaMercuryа как по реализации ? Расскажите пожалуйста Язык сам по себе этого не специфицирует. В борландовых реализациях операции опираются на buffered reader, то есть логику можно примерно описать так: if buffer_empty then read_next_buffer; result := buffer_empty or text_file and current_char^ = ^Z; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.12.2014, 13:35 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=38824557&tid=1341143]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
137ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 199ms |
| total: | 409ms |

| 0 / 0 |
