Модераторы: Се ля ви
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> UML с нуля, подходит ли для построения алгоритмом? 
:(
    Опции темы
DragonFire
Дата 17.4.2009, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 14.8.2005
Где: Москва

Репутация: нет
Всего: 9



День добрый всем.

Вопрос такой - необходимо построить графическое представление алгоритма, простое и стандартное. 
Поставил Visio, создал Activity diagram и попытался нарисовать простенькую блок схему.
Споткнулся на отображении цикла. Такое чувство что диограммы деятельности не подходят для таких задач. Другие варианты диаграмм также просмотрел, но ничего подходящего не нашел.

Вот и возник вопрос - а UML ли мне нужен?


--------------------
PM MAIL ICQ   Вверх
deniva
Дата 17.4.2009, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 24.5.2007

Репутация: 2
Всего: 2



Диаграмма выбрана верно. Циклы можно по разному показать.

Свою задачу опишите.
PM MAIL   Вверх
DragonFire
Дата 17.4.2009, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 14.8.2005
Где: Москва

Репутация: нет
Всего: 9



Вот простой пример алгоритма, который необходимо описать:
Алгоритм:
Код

Инициализация параметров
Цикл foreach - перебираем доступные логики
  Задание параметров
  Обновление статус-информации
  Цикл while
     Задание параметров
     Цикл for
        Генерация модели 1
        Получение параметра
        Проверка условия
        Генерация модели 2
        Получение параметра
        Проверка условия
      Два дополнительных условия
      Обновление статус-информации
   Вывод результатов для конкретной логики
Конец алгоритма

А так это выглядит в коде, если необходимо.
Код

            double RealErr,errH1,errH2,cA,QH;
            foreach (TakeEstimate Estimate in Estimates)
            {
                RealErr = 1; errH1 = 0; errH2 = 0; cA = 0.001; QH = 0;
                UpdateStatus("Проверка гипотиз: " + Estimate.GetTitle());
                while (Math.Abs(RealErr - Alpha) > Alpha/10)
                {
                    errH1 = 0;
                    errH2 = 0;
                    pBar.Value=0;
                    pBar.Maximum = N*N-1;
                    for (int i = 0; i < N*N; i++)
                    {                        
                        Model.Generate(H1, E, Sizet);
                        QH = Estimate.Calculate(Model);
                        if (QH - H1 > cA) errH1++;
                        Model.Generate(H2, E, Sizet);
                        QH = Estimate.Calculate(Model);
                        if (QH - H2 > cA) errH2++;
                        pBar.Increment(1);
                        Application.DoEvents();
                    }
                    if (rb1.Checked) RealErr = errH1 / (N * N);
                    if (rb2.Checked) RealErr = errH2 / (N * N);
                    UpdateStatus("Проверка гипотиз: " + Estimate.GetTitle() + " Err=" + RealErr.ToString() + "   dX=" + cA.ToString());

                    if (RealErr > Alpha)
                        cA += (Alpha) * Math.Abs(Math.Abs(RealErr - Alpha) - Alpha / 10);
                    else
                        cA -= (Alpha) * Math.Abs(Math.Abs(RealErr - Alpha) - Alpha / 10);
                }
                dataGridView1.Rows.Add(Estimate.GetTitle(), errH1 / (N * N), errH2 / (N * N));
                pBarAll.Increment(4);
                Application.DoEvents();
            }



--------------------
PM MAIL ICQ   Вверх
DragonFire
Дата 18.4.2009, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 14.8.2005
Где: Москва

Репутация: нет
Всего: 9



Если по текущему алгоритму ответить однозначно сложно - подскажите как реализовывать простейшие циклы правильно, или хотя бы где про этом почитать...


--------------------
PM MAIL ICQ   Вверх
ida
Дата 22.4.2009, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


замужем
****


Профиль
Группа: Завсегдатай
Сообщений: 2277
Регистрация: 14.5.2002
Где: Санкт-Петербург

Репутация: 6
Всего: 58



Условие прекращения цикла поставьте, и все ОК.
Графически это выглядит следующим образом:
действие
действие
действие
проверка условия (ромбик)

в этом месте происходит ветвление алгоритма - у вас будет столько веток, сколько вариантов действия может быть.
Если задаете проверку в виде верно-неверно, то две ветки, если используете диапазоны значений или конкретные значения - то по числу диапазонов или значений (+ ветка, соответствующая значению "ни одно из перечисленного" - иначе исключительная ситуация).
Ветки, выходящие из цикла, ведете к следующему по порядку действию после завершения цикла.
Если условия выхода из цикла не достигнуто, то соответствующую этой ситуации ветку заводите обратно в начало цикла (на диаграмме).
Условия пишутся словами в квадратных скобках над каждой веткой (линией, идущей от ромбика).

На пальцах объяснила, если непонятно, попробую показать пример.

Это сообщение отредактировал(а) ida - 22.4.2009, 18:00
PM WWW   Вверх
DragonFire
Дата 23.4.2009, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 725
Регистрация: 14.8.2005
Где: Москва

Репутация: нет
Всего: 9



ida, Более или менее понятно, спасибо ! smile


--------------------
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Системный анализ, проектирование и UML"
Се ля ви

Форум "Системный анализ, проектирование и UML" предназначен для обсуждения вопросов, так или иначе связанных с этапами жизненного цикла автоматизированных (программных, информационных, автоматических) систем:

• предпроектные обследования объектов автоматизации;

• разработка концепции создания систем;

• моделирование бизнес-процессов (в т.ч. на UML);

• проектирование архитектуры систем;

• управление проектами;

• управление качеством;

• CASE-средства;

• реинжиниринг.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Се ля ви.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Системный анализ, проектирование и UML | Следующая тема »


 




[ Время генерации скрипта: 0.0584 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.