Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 11.08.2015, 13:25
dimavit dimavit вне форума
Прохожий
 
Регистрация: 09.05.2012
Сообщения: 3
Репутация: 10
По умолчанию Использование оператора Case - Basic vs Pascal

Столкнулся с проблемой, которая очень просто решается на любом другом языке. Нужно написать код, использующий координаты двух точек A(x1; y1) и B(x2; y2). Например, на бейсико подобном языке все выглядит логично и просто:
Код:
x1 = Random(500)
y1 = Random(500)
x2 = Random(500)
y2 = Random(500)
DeltaX = x2 - x1
DeltaY = y2 - y1
x =0
y = 0
STEP = 10

Select
  Case (DeltaX = 0) And (DeltaY = 0)
      x := x1;
      y := y1;
  Case DeltaX = 0
      x = x1
      y = y1 + STEP
  Case DeltaY = 0
      y = y1
      x = x1 + STEP
  Case else
      //Здесь размещается основной код
EndSelect

Неужели, для того, чтобы сделать то же самое на Паскале необходимо написать такого монстра:

Код:
begin
  Randomize;
  x1 := Random(500);
  y1 := Random(500);
  x2 := Random(500);
  y2 := Random(500);
  DeltaX := x2 - x1;
  DeltaY := y2 - y1;
  x :=0;
  y := 0;

  If (DeltaX = 0) And (DeltaY = 0) then  //3
  begin
    x := x1;
    y := y1;
  end
  else
  begin
    If DeltaX = 0 then                   //2
    begin
      x := x1;
      y := y1 + STEP;
    end
    else
    begin
      If DeltaY = 0 Then                 //1
      begin
        y := y1;
        x := x1 + STEP;
      end
      else
      begin
        //Здесь размещается основной код
      end                                //1
    end                                  //2
  end;                                   //3

end;

end.
Ответить с цитированием
  #2  
Старый 11.08.2015, 13:55
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
  If (DeltaX = 0) And (DeltaY = 0) then
  begin
    x := x1;
    y := y1;
  end else If DeltaX = 0 then
  begin
    x := x1;
    y := y1 + STEP;
  end else If DeltaY = 0 Then
  begin
    y := y1;
    x := x1 + STEP;
  end else
  begin
    //Здесь размещается основной код
  end
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #3  
Старый 11.08.2015, 15:05
dimavit dimavit вне форума
Прохожий
 
Регистрация: 09.05.2012
Сообщения: 3
Репутация: 10
По умолчанию

Цитата:
Сообщение от NumLock
Код:
  If (DeltaX = 0) And (DeltaY = 0) then
  begin
    x := x1;
    y := y1;
  end else If DeltaX = 0 then
  begin
    x := x1;
    y := y1 + STEP;
  end else If DeltaY = 0 Then
  begin
    y := y1;
    x := x1 + STEP;
  end else
  begin
    //Здесь размещается основной код
  end
Да, согласен, но уж больно запутано получается по сравнению с логичной и легко читаемой структурой Select Case, которой в Паскале, увы, нет.
Ответить с цитированием
  #4  
Старый 11.08.2015, 16:13
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

можно не программировать на Pascal есть же Java и Python
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 16:18.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter