Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.10.15;
Скачать: [xml.tar.bz2];

Вниз

if else   Найти похожие ветки 

 
pqpqp   (2006-09-30 18:54) [0]

Глупый вопрос, в приведенном коде else работает для if x = 0, а как для первого  if x < 5 then сделать else. Без begin ... end не обойтись?
 x := 10;
 y := 10;
 if x < 5 then
 if x = 0 then y := 0
 else
 y := 5;


 
Dmitrij_K   (2006-09-30 18:59) [1]

 x := 10;
y := 10;
if x < 5 then
if x = 0 then y := 0 else
else
y := 5;


 
Anatoly Podgoretsky ©   (2006-09-30 19:09) [2]

А используй ты операторные скобки, что бы не было подобного рода проблем.


 
Vovan#1   (2006-09-30 19:16) [3]

Иногда помогает
[code]
x := 10;
y := 10;
if x >= 5 then
y := 5
 else
  if x = 0 then y := 0;
[/code]

А так да, из разряда Delphi suxx.


 
Kolan ©   (2006-09-30 19:19) [4]


> Без begin ... end не обойтись?

Нет.


 
TUser ©   (2006-09-30 21:29) [5]

> Нет.

запросто

label a, b;
begin
...
if x < 5 then goto a
if x = 0 then y := 0
goto b;
a: // else
y := 5;
b:
end;


 
Kolan ©   (2006-09-30 21:41) [6]


> TUser ©   (30.09.06 21:29) [5]

:)

 X := 10;
 Y := 10;
 if X < 5 then
 begin
   if X = 0 then
     Y := 0
 end
 else
   Y := 5;


 
palva ©   (2006-09-30 21:53) [7]

Dmitrij_K   (30.09.06 18:59) [1]
По-моему самый естественный вариант.


 
Kolan ©   (2006-09-30 22:06) [8]


> По-моему самый естественный вариант.

А он правильно работает? У меня ума не хватает понять его..

var
 X, Y: Integer;
begin
 x := 11;
y := 10;
if x < 5 then
 if x = 11 then
   y := 0
 else
   Y := 3
else
 y := 5;

ShowMessage(IntToStr(Y));
end;


Зачем тада if x = 11


 
palva ©   (2006-09-30 22:12) [9]

Между двумя else стоит пустой оператор. По правилам языка паскаль пустое место является оператором.


 
Kolan ©   (2006-09-30 22:16) [10]


> palva ©   (30.09.06 22:12) [9]

Знаю одно. Сам часто обжигался на том что условия срабатываюбт неверно только потому что я не поставил операторные скобки. Конкретные примеры не помню, но для себя правило выработал. Чуть сложне if ... then ... else я их ставлю :). И сё больше не ошибаюсь.


 
palva ©   (2006-09-30 22:20) [11]

Конечно, надо ставить. В некоторых корпоративных стандартах они просто обязательны. В некоторых языках (c, perl) вместо begin end используются {}. Так вот, в c они не обязательны, а в perl и, по-моему в c# обязательны, чтоб не было у программиста соблазна экономить на спичках.


 
TUser ©   (2006-09-30 23:45) [12]

> Так вот, в c они не обязательны

И, кстати, в паскале тоже, что не есть гуд. Тут привлекался я в качестве светлой головы для поиска ошибки. Считалось что-то не так. Было написано (на си)
if (...);
{
while (...)
 {
   ...
 }
}

Понятно, что точка-запятая поставлена на автопилоте и сделано это зря.
И паскаль аналогично будет в случае
while ... do;
А был бы обязателен непустой оператор (хотя бы {}) - не было бы такой проблемы.

Так что пустые операторы - все-таки нехорошо. Необходимости в них нет, а проблемы возникнуть могут.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.10.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.057 c
15-1158500782
databaser
2006-09-17 17:46
2006.10.15
Какую single user / local side / freeware ;) DB посоветуете?


2-1159263703
e_u_
2006-09-26 13:41
2006.10.15
структура


4-1149051439
Mamed
2006-05-31 08:57
2006.10.15
get Default mail Program


2-1159682879
одиндватри
2006-10-01 10:07
2006.10.15
операторные скобки


1-1157456812
dracula
2006-09-05 15:46
2006.10.15
Как сохранить компонент в регистре? А потом его загрузить.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский