Как представить цикл с оператором «continue» из C на диаграмме действий PlantUML - PullRequest
0 голосов
/ 31 октября 2019

Мне нужно преобразовать приведенный ниже код C в диаграмму активности с помощью PlantUML.

Что такое хорошее решение для реализации оператора continue из кода ниже?

    void function_1(){
    int a = 0;
    int b =0;
      for (int i; i < 8; i++)
      {
        if (i < 2)
        {
           continue;
        }
        if (i > 4)
        {
            a = 1;
        }           
        else
        {
           b = 2;
        }
      }
    }

Ответы [ 2 ]

1 голос
/ 31 октября 2019

Независимо от преобразования кода на другой язык или нет, я бы оптимизировал его следующим образом, в первую очередь:

void function_1(){
int a = 0;
int b =0;
  for (int i=0; i < 8; i++)
  {
    if (i > 4)
    {
        a = 1;
    }           
    else if ( i >= 2 )
    {
       b = 2;
    }
    else
    {
        /* - nothing to do */
        /* - this statement is here as proof that we do not want to handle
        /* other cases, as opposed to just forgetting about them */
        /* - it can be used in the future for extenion, as needed */
    }
  }
}
0 голосов
/ 01 ноября 2019

Я не знаю C, но мне кажется, что один из способов представления вашей логики в PlantUML будет следующим:

start
while (i < 8 ?)
  if (i > 4 ?) then (yes)
      :a = 1;
  else (no)
      if (i >= 2 ?) then (yes)
      :b = 2;
      else (no)
      endif
  endif
 endwhile (no)
:Carry out the next task;
end

Задача «Выполнить следующую задачу» является заполнителем. Его следует заменить тем, что ваше приложение должно делать дальше.

Что дает следующую диаграмму :

enter image description here

...