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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 30.01.2015, 18:24   #1
EVILKRE
 
Регистрация: 30.01.2015
Сообщений: 5
По умолчанию Народ нужна помощь!

Доброго времени суток! Прошу помочь с пониманием следующей дилемы... Почему программа выдает ответ " 1 ", ведь условие if (a=true and b=true) не должно выполняться при ложных значениях обеих переменных ???

КОД


Код:
var
a,b:boolean;
begin
a:=false;
b:=false;


if (a=true and b=true) then begin
Writeln('1');
end;

if (a and b) then begin
Writeln('2');
end;


if (a=true) and (b=true) then begin
Writeln('3');
end;

if (a) and (b) then begin
Writeln('4');
end;

sleep(5000);
end.

Последний раз редактировалось ACE Valery; 30.01.2015 в 20:34.
EVILKRE вне форума
Старый 30.01.2015, 18:49   #2
Вадим Мошев

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

Цитата:
Доброго времени суток! Прошу помочь с пониманием следующей дилемы... Почему программа выдает ответ " 1 "
Это где она выдает такой ответ?
У меня Turbo Pascal отказался запускать такую программу, ругаясь на строчку
Код:
if (a=true and b=true) then begin
требуя закрывающую скобку сразу после b.

Здесь он читал выражения слева направо
1. a=true - это логическое выражение
2. Операция AND, операнд к который мы только что прочитали.
3. Переменная логического типа b.
++++++++++

Если убрать этот участок кода
Код:
if (a=true and b=true) then begin
Writeln('1');
end;
Программа не выведет вообще ничечго, что логично.

Заключайте составные логические выражения в скобки.
Вадим Мошев вне форума
Старый 30.01.2015, 19:04   #3
EVILKRE
 
Регистрация: 30.01.2015
Сообщений: 5
По умолчанию

Код:
if (a=true and b=true) then begin
требуя закрывающую скобку сразу после b.


Попробуйте запустить в DELPHI (7 - XE6). Ошибку выдавать не будет. Только вот ответ - "1" . Что делать и как это понять ?
EVILKRE вне форума
Старый 30.01.2015, 19:27   #4
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Код:
if (a=true and b=true) then begin
Наверно должно выглядеть как:
Код:
if (a=true) and (b=true) then begin
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума
Старый 30.01.2015, 19:27   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

a=true and b=true
Компилятор такое допускает в определенных ситуациях. Для следующей не допустит
Код:
var a,b: Integer;
if a=0 AND b=0 ...
По примеру c учетом приоритетов операций:

сначала: True and b => False
дальше: a=False => True
и, наконец: True=True => True
И, о счастье: Сообщение "1"

Делай так:

Код:
if (a=true) and (b=true) then ...
или еще лучше
if a and b then ...
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума
Старый 30.01.2015, 19:33   #6
Вадим Мошев

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

Егений
Код:
var a,b: Integer;
if a=0 AND b=0 ...
Тут будет ругань на несоответствие типов. даже удостоверяться не буду
Вадим Мошев вне форума
Старый 30.01.2015, 19:35   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
Тут будет ругань на несоответствие типов. даже удостоверяться не буду
А я это и написал. Ключевая фраза: Для следующей не допустит
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума
Старый 30.01.2015, 20:04   #8
EVILKRE
 
Регистрация: 30.01.2015
Сообщений: 5
По умолчанию

Всем спасибо! Гуд, теперь понятно
EVILKRE вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
народ нужна помошь в строках darvin17 Общие вопросы C/C++ 3 01.12.2009 21:07
Очень нужна помощь c матрицами, макросами в Excel. Заранее благодарен(поверьте, очень-очень нужна помощь) Farridjan Помощь студентам 1 03.07.2009 12:24