Страница 3 из 10

Re: В паскале остро не хватает операторов &, &&, | и ||

СообщениеДобавлено: 18.04.2017 10:00:32
Лекс Айрин
чтобы оно не воспринималось "а не вот так" есть приоритеты... т. е сначала выполняются сравнения a>0 и b>0, а когда подобные условия закончатся, вот тогда идет булева операция and.

vitaly_l писал(а):а вот здесь скобок нет:

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

Re: В паскале остро не хватает операторов &, &&, | и ||

СообщениеДобавлено: 18.04.2017 10:10:36
Awkward
...А ещё, потом этот извращённый код не будет компилироваться, например, в дельфи, если нужен будет код для разных компиляторов. И вообще, это будет уже не паскаль.
Не надо извращать и усложнять компилятор и язык!

Re: В паскале остро не хватает операторов &, &&, | и ||

СообщениеДобавлено: 18.04.2017 10:23:23
vitaly_l
Лекс Айрин писал(а):Никогда не стоит так писать, если не охота проблем. Конечно, компилятор может быть это и переварит, но программист может плюнуть и перейти на брейнфак... типа "если нет разницы, то..."

Ты явно гонишь туфту. Я просто на примерах объяснил, что: "искомое" - уже заложено в Паскале. Просто нужно ясно понимать что именно там происходит и для чего там ставят скобки.

Re: В паскале остро не хватает операторов &, &&, | и ||

СообщениеДобавлено: 18.04.2017 10:26:41
SSerge
Awkward писал(а):И вообще, это будет уже не паскаль


Нынешняя практическая версия де-факто давно уже не паскаль; причем для всех существующих компиляторов.

Re: В паскале остро не хватает операторов &, &&, | и ||

СообщениеДобавлено: 18.04.2017 10:55:37
Лекс Айрин
vitaly_l писал(а): Просто нужно ясно понимать что именно там происходит и для чего там ставят скобки.


Я тебя, возможно, удивлю, но чаще всего они ставятся для программиста.

vitaly_l писал(а):Ты явно гонишь туфту.


Попробуй скомпилировать свой "пример". Хотя, с учетом заимствований из С и иже с ним, этот код может и собраться... но тогда я буду плохо думать о разработчиках.

Re: В паскале остро не хватает операторов &, &&, | и ||

СообщениеДобавлено: 18.04.2017 11:08:53
vitaly_l
Лекс Айрин писал(а):тогда я буду плохо думать о разработчиках.

Собирается без проблем, т.к. скобки там явно ненужны. И разработчики - всё правильно сделали.
Лекс Айрин писал(а):чаще всего они ставятся для программиста.

очередной флуд от Лекса и Айрина.

Re: В паскале остро не хватает операторов &, &&, | и ||

СообщениеДобавлено: 18.04.2017 12:00:31
Лекс Айрин
vitaly_l писал(а):Собирается без проблем, т.к. скобки там явно ненужны.


Не в скобках дело.

Re: В паскале остро не хватает операторов &, &&, | и ||

СообщениеДобавлено: 18.04.2017 12:42:36
Cheb
Что я наделал! Изображение

Re: В паскале остро не хватает операторов &, &&, | и ||

СообщениеДобавлено: 18.04.2017 12:48:18
Лекс Айрин
Cheb, всего лишь вызвал очередной холивар на тему какой язык лучше.

Re: В паскале остро не хватает операторов &, &&, | и ||

СообщениеДобавлено: 18.04.2017 16:59:56
vitaly_l
Лекс Айрин писал(а):чтобы оно не воспринималось "а не вот так" есть приоритеты... т. е сначала выполняются сравнения a>0 и b>0, а когда подобные условия закончатся, вот тогда идет булева операция and.

флудеры: Лекс и Айрин - внесли заведомо ложные данные в решение и миллиарды программистов поверив флудерам - ошиблись, потому что доверились их ложным утверждениям про приоритеты. В итоге, падали самолёты и взрывались атомные станции. И только флудеры: Лекс и Айрин - ехидно улыбались мониторам несчастных программистов. Но атомные станции всё взрывались и взрывались, а с неба падали прошлогодние снежинки :wink:

Re: В паскале остро не хватает операторов &, &&, | и ||

СообщениеДобавлено: 18.04.2017 17:58:25
Лекс Айрин
Что же это за программисты, которые не проверяют написанное собой? Это уже профнепригодность.

Re: В паскале остро не хватает операторов &, &&, | и ||

СообщениеДобавлено: 18.04.2017 18:45:42
pupsik
Что я наделал!
затронули "художников"... Где то на 7-ой + странице остановится.

По поводу темы: лазарь выбрал позицию совместимости с борландом. А вот что далее будет: как вила ляжут...

п.с.
Что то слишком все хотят модернизации и побольше плюх. Только какая из этого польза? Со "своей стороны" - вроде польза. Только вот польза у каждого разная..

Re: В паскале остро не хватает операторов &, &&, | и ||

СообщениеДобавлено: 18.04.2017 19:16:39
Awkward
pupsik писал(а):Что то слишком все хотят модернизации и побольше плюх

Да уж, от позиции Вирта это сильно отличается. В язык вводится всё больше и больше изменеий, из-за которых сам язык усложняется, порой чрезмерно (И неоправанно).

Re: В паскале остро не хватает операторов &, &&, | и ||

СообщениеДобавлено: 19.04.2017 06:57:12
sign
SSerge писал(а):
sign писал(а):Всякие свистелки и перделки жаждут внести прибежавшие в Паскаль со всяких дурдомо-языков.
Этот дурдом в голове они жаждут привнести в Паскаль. :mrgreen:


Да, истинный паскалист должен пользоваться исключительно изначальной версией языка, предложенный Виртом, и отвергнуть с негодованием все гнусные привнесенности извне, типа объектов любого вида, строк, резиновых массивов и всякой похабщины, под которой можно понимать всякие неканоничные функци asin, acos, tanh. :D
А так то руководитель бывший борландовского паскаля спятил и в сумашествии своем создал ужасающее -- си шарп. Потому что над паскалем надругаться не дали. :mrgreen:

Всё должно быть разумно, потому я ваши претензии отвергаю с негодованием!
Жизнь не стоит на месте, всё развивается, в том числе и Паскаль!
Но!
Не нужно пихать лишние сущности.
Предлагаемые операторы (&, &&, | и ||) не вносят ничего нового в сам язык. Но увеличивают шансы на то, что программист наплодит, незаметно для себя, кучу трудно находимых ошибок, которых бы не было, будь соответствующее выражение грамотно структурировано скобками.

Добавлено спустя 14 минут 14 секунд:
vitaly_l писал(а):
Лекс Айрин писал(а):Кстати, в условии (a > 0 and b) > 0 нет смысла ставить скобки в этих местах... боюсь, что компилятор скажет "Упс!"

Так об этом и речь!!! Скобки ставятся, исключительно для того чтобы выражение:
Код: Выделить всё
if a > 0 and b > 0 then

понималось компилятором, вот так:
Код: Выделить всё
if (a > 0) and (b > 0) then

а не вот так:
Код: Выделить всё
if (a > 0 and b) > 0 then

Скобки нужны не компилятору, а человеку.
Один фиг, компилятор будет запихивать всё в стек, т.е. строить обратную польскую запись.
Код: Выделить всё
if (a > 0) and (b > 0) then => a 0 > b 0 > and

if a > 0 && b > 0 then => a 0 > b 0 > &&


Добавлено спустя 4 минуты 56 секунд:
vitaly_l писал(а):
Лекс Айрин писал(а):тогда я буду плохо думать о разработчиках.

Собирается без проблем, т.к. скобки там явно ненужны. И разработчики - всё правильно сделали.
Лекс Айрин писал(а):чаще всего они ставятся для программиста.

очередной флуд от Лекса и Айрина.

Что собирается баз проблем?

Изображение

Re: В паскале остро не хватает операторов &, &&, | и ||

СообщениеДобавлено: 19.04.2017 09:49:16
скалогрыз
Код: Выделить всё
var
  a,b : integer;
begin
  if a > 0 and b > 0 then

внимательно смотрим список приоритетов
видим - что у оператора "and" приоритет выше, чем у оператора сравнивания, по-этому выражение выше, оператор видит, как
Код: Выделить всё
var
  a,b : integer;
begin
  if (a > (0 and b)) > 0 then

т.к. и 0 и b это тип INTEGER, то результат его работы, это INTEGER.
и получаем выражение:
Код: Выделить всё
  if (a > NNN) > 0 then

,где NNN - это некое число.

(a > xxx) - это операция сравнения, результат которой это BOOLEAN
Код: Выделить всё
  if (a > xxx) > 0 then

дальнейшая обработка операции привоидт нас к выражению:
Код: Выделить всё
  if (BBB > 0) then

где BBB это булеан (true или false).
Boolean, нельзя сравнивать на больше или меньше с integer-ом. Как результат получаем сообщение от компилятора: Operator is not overloaded "ShortInt" and "Boolean".

А вот теперь можно вернутся к первому посту от Cheba.
И кстати, попускать слюни на Си/Си++, где такие вещи можно! (т.к. boolean типа там нет... ну или не было, но по факту, им не очень руководствуются)

Ваш, КО!

ЗЫ: в Си такое вот выражение
Код: Выделить всё
  if (a > 0 && b > 0)

язык поймёт имеено как
Код: Выделить всё
  if ((a > 0) && (b > 0))

так-как приоритет сравнивания выше, чем Логическое И ... а вы говорите Паскаль!!!
Внемите Дожу, он плохого не посоветует.

Ещё раз, Ваш КО!