Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/40: Рейтинг темы: голосов - 40, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 3,044

Стандарты рисования алгоритмов

27.11.2015, 21:38. Показов 7511. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В данный момент занят непростым проектом. Потребовалось нарисовать алгоритм. Диаграммы состояний - это не то.
Подскажите, как правильно нарисовать в алгоритме следующее:
Фигура, в ней имя переменной-состояния.
Фигура, в ней название состояния.
Какие фигуры правильно по стандартам нужно использовать для переменной-состояния и названий состояний.


<Изображение удалено>
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
27.11.2015, 21:38
Ответы с готовыми решениями:

Надо придумать стандарты "Управление кокого либо устройства глазами". Напишите стандарты по вашей фантазии
Есть проект &quot;Управления устройства глазами&quot;. Пока без реализации. Надо придумать стандарты для него. Ну типа устройства Google Glass...

Объекты рисования: как вместо объекта рисования эллипса сделать линию
Подскажите как Принять размер клетки = 4 пиксела? И как вместо объекта рисованиея элипса линию сделать? Преобразование Масштабирование:...

Компонент для рисования (вывода) и рисования нескольких картинок / текстов по отдельности
Здраствуйте. К слову и весь ворос. 1. На каком компоненте лучше всего рисовать. На Image или есть еще TPaintBox. Формат картинок PNG 2....

19
0 / 0 / 0
Регистрация: 31.01.2013
Сообщений: 1,625
27.11.2015, 22:25
Алгоритм должен выглядеть вот так!

0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 3,044
27.11.2015, 22:29
Цитата Сообщение от yiv91
Алгоритм должен выглядеть вот так!
Если ты сам через несколько недель, месяцев, лет разберешься в собственном алгоритме... Если бы мне дали такой алгоритм, прибил бы на месте. Морально.
0
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 392
27.11.2015, 23:11
Цитата Сообщение от yiv91
Алгоритм должен выглядеть вот так!
Понравилось, как у вас нарисованы условные переходы. Стандартные ромбики мне никогда не нравились.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,864
27.11.2015, 23:12
yiv91, откуда такой чудесный пример?
0
0 / 0 / 0
Регистрация: 23.12.2012
Сообщений: 392
27.11.2015, 23:14
Цитата Сообщение от dymyurk1978
Если ты сам через несколько недель, месяцев, лет разберешься в собственном алгоритме... Если бы мне дали такой алгоритм, прибил бы на месте. Морально.
По сравнению с вашим рисунком (в котором имеется гигантская просто ошибка) это - произведение искусства.
0
0 / 0 / 0
Регистрация: 22.12.2010
Сообщений: 78
28.11.2015, 00:57
Кстати да, ромбики вообще не удобны и углы торчащие жрут кучу места, а так выходит компактнее и не менее, а даже, субъективно, более наглядно. Надо взять на вооружение.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,864
28.11.2015, 01:08
Зачем всё это брать на вооружение?
Если для себя - надо писать структурированные алгоритмы. Им для удобной записи достаточно традиционной программерской лесенки. Заодно и покомпактней будет, чем блок-схема. А если не писать структурированные алгоритмы - получается лютый пиздец вроде того, что на рисунке.
А если, как топикстартеру, надо по стандарту - то и делать по стандарту.
0
0 / 0 / 0
Регистрация: 31.01.2013
Сообщений: 1,625
28.11.2015, 02:46
Цитата Сообщение от oomomstir
yiv91, откуда такой чудесный пример?
Хм... Просто залез в папки с моей старой документации и выдернул первый попавшийся.
Алгоритмы я рисовал для того, чтобы их воплощать в железе, после чего они работали. В отличие от случая, когда пишешь прогу с чистого листа и на третий день понимаешь, что задача не решается потому, что не помещается целиком в голове.
А если сдавать преподу - то алгоритм не обязательно должен быть рабочий, главное красиво и правильно нарисованный.

PS. Оказывается, у меня и код сохранился. Это был терминал управления на 63 точки на полудуплексной линии связи типа RS232, на 51 камне.

Обратите внимание на ажурную, кружевную тонкость и прозрачность кода, пластичность отдельных частей композиции и в то же время суровую брутальность грозных завершающих аккордов.
:)
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
rab:            ; основной цикл программы
rab_a:   setb p_fyxed   ; считаем, что точка 0 сразу зафиксирована
rab_b:  mov phase, #0   ; считаем, что клавиши выдачи не нажимались
rab_c:   acall getkey   ; ввод с клавиатуры
push acc
clr c
subb a, #0ah   ; цифра 0-9 ?
pop acc
jnc rab_h   ; нет: 0ah и более - обработка служебных клавиш
rab_c2:   jnb p_fyxed, rab_d   ; продолжается набор адреса
rab_c3:   mov key0, #0   ; начало набора другого адреса
rab_c1: clr p_fyxed   ; начали нажимать цифры - хотят сменить адрес
rab_d:   mov key1,key0   ; была нажата цифра
mov key0, a   ; задвигаем в буфер
rab_e:   mov sym1, key1   ; сюда, чтобы индицировать
mov a, key1   ; символ в десятках 0?
jnz rab_g
rab_f:   mov sym1, #18h   ; вместо ведущего 0 отображаем пробел
rab_g:   mov sym0, key0   ; символы готовы для отображения
acall ind
sjmp rab_c
rab_h:   cjne a, #0dh, rab_h1   ; команда активизации D ?
sjmp rab_h2      ; да - уходим на активизацию точки
rab_h1:   jnb p_fyxed, rab_v   ; если нажимали цифры, то надо нажать D
; любая другая клавиша - сбрасываем в 0
rab_i:   cjne a, #0eh, rab_l   ; нет. это * ?
rab_j:   mov r2, phase      ; да, начало команды выдачи
cjne r2, #0, rab_b   ; если фаза не 0, а снова нажали *, сбрасываем
rab_k:   mov phase, #1      ; да, был 0 и нажата *. Теперь фаза 1.
sjmp rab_c
rab_l:   cjne a, #0ah, rab_o   ; это не *. Может, это A?
rab_m:   mov r2, phase      ; это A
cjne r2, #1, rab_b
rab_n:   mov phase, #2           ; и фаза была 1, значит, переходим в фазу 2
sjmp rab_c
rab_o:   cjne a, #0bh, rab_r   ; это не A. Может, это B?
pab_p:   mov r2, phase      ; это B
cjne r2, #2, rab_b
rab_q:   mov phase, #3           ; и фаза была 2, значит, переходим в фазу 3
sjmp rab_c
rab_r:   cjne a, #0ch, rab_x1   ; это не B. Если это и не C, проверим #.
rab_s:   mov r2, phase      ; если C и фаза была 3, настала пора выдачи
cjne r2, #3, rab_b   ; а если фаза не 3, сбрасываем
rab_t:   acall sompay      ; команда выдачи для POINT
sjmp rab_a
rab_h2:   setb p_fyxed      ; адрес зафиксирован
rab_u:   mov a, key1        ; вычисляем POINT как KEY1*10+KEY0
mov b, #10
mul ab              ; в A число десятков * 10
add a, key0      ; в A адрес точки
mov point, a      ; запоминаем
push acc
clr c
subb a, #40h      ; POINT меньше 64?
pop acc
jc rab_w      ; нормально - уходим активизировать точку
rab_v:   acall inderr      ; слишком большой! - обнуляем POINT
mov point, #0
mov key1, #0
mov key0, #0      ; чтобы не оставалась набранная ранее цифра
mov sym1, #18h
mov sym0, #0
acall ind         ; отображаем _0.
acall somact      ; выключаем все точки
ajmp rab_c      ; продолжаем работу
rab_w:   acall somact      ; активизируем точку POINT
sjmp rab_e      ; уходим на индикацию и далее снова ввод
rab_x1:   cjne a, #0fh, rab_x4   ; если код # не опознан, продолжаем
rab_x2:   acall getpass      ; было нажато # - набор пароля
jnz rab_x3
ajmp rab_v      ; в аккумуляторе 0 - пароль не опознан
rab_x3:   dec a
jz outstat              ; 1 - введен пароль для распечатки
dec a
jz risitstat      ; 2 - введен пароль для обнуления
rab_x4:   ajmp rab_c      ; код возврата не опознан - ошибка процессора
risitstat:
mov r2, #1      ; начинаем с точки 1 - двоичное число
mov r3, #1      ; десятичное число для индикации
mov r5, #63      ; всего 63 точки
res_1:   mov a, r3
push acc
anl a, #0f0h      ; старшая цифра на индикатор десятков
swap a
mov sym1, a
pop acc
anl a, #00fh      ; младшая цифра
mov sym0, a
acall ind      ; отображаем номер точки
mov r4, #5      ; передаем команду 5 раз для тех, кто в танке
res_2:   mov sbuf, r2      ; передать адрес точки
jnb ti, $
clr ti
mov sbuf, #0f4h      ; F4 команда обнулить статистику
jnb ti, $
clr ti
djnz r4, res_2
yms r2         ; следующая точка
mov a, r3
clr c
clr ac
add a, #1
da a
mov r3, a
mov a, #1
acall zadr      ; пауза 70 мс перед следующей точкой
djnz r5, res_1
ajmp rab_e      ; конец - высветить адрес точки из KEY1,0
;-) -----------------------------------------------------------------------
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,864
28.11.2015, 03:42
Нифига не понял. Картинка была в качестве примера того, как делать не надо (хотя пастафарианская церковь смотрит на неё с одобрением) или как?
0
0 / 0 / 0
Регистрация: 31.01.2013
Сообщений: 1,625
28.11.2015, 04:15
Картинка была как я делаю. Как надо или не надо делать, я не знаю. А каждый для себя решает сам, как ему надо.

(Многие вещи становятся стандартом только после того, как их авторы сделают себе имя многолетним трудом. Во время же этого самого труда их поливают грязью и тыкают носом в учебник. См. Дж.Лондон, "Мартин Иден").
0
0 / 0 / 0
Регистрация: 22.08.2009
Сообщений: 525
29.11.2015, 17:35
Цитата Сообщение от yiv91
Картинка была как я делаю. Как надо или не надо делать, я не знаю. А каждый для себя решает сам, как ему надо.
Но, может быть, прежде чем что-то решать, следовало бы хорошенько подумать. Сдается мне, что ваш код можно было бы упростить. Или нет?
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 3,044
29.11.2015, 17:50
Цитата Сообщение от Btosk Worryor
По сравнению с вашим рисунком (в котором имеется гигантская просто ошибка) это - произведение искусства.
Какая ошибка? Предложите вариант алгоритма конечного автомата. Не диаграмму состояний и переходов, а именно алгоритм. Чтобы каждое состояние было отдельной ветвью.
0
1 / 1 / 0
Регистрация: 25.01.2012
Сообщений: 492
29.11.2015, 17:53
Вам как по ГОСТу или как лучше?

а то могу посоветовать Дракон и соответственно программу "Дракон ИС", с соответствующей темой.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 3,044
29.11.2015, 18:06
Цитата Сообщение от MrYurom
...
И по ГОСТу и как лучше. Дракон не позволяет в полной мере реализовать КА, вложенные КА. Не вариант однозначно. Также Дракон не позволяет реализовать параллельные процессы. Он заточен только на зацикленность.
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 1,864
29.11.2015, 18:11
yiv91, не хотел обидеть, просто при виде путаницы переходов сразу в голове слова "spaghetti code" и желание упорядочить иконки - чтобы былы видна чёткая структура с циклами и if/switch. Тут упомянули ДРАКОН - вот он, к примеру, навязывает дисциплину при создании блок-схемы, и это хорошо; все современные ЯВУ также навязывают её.

А такие картинки норовят перерасти в


https://www.cyberforum.ru/savedimages/2015/11/29/nmmtubsjcb6rgcpfv.jpg

“When we understomd that slide, we’ll have won the war" (с)
0
0 / 0 / 0
Регистрация: 06.12.2016
Сообщений: 3,044
29.11.2015, 18:16
Цитата Сообщение от oomomstir
Тут упомянули ДРАКОН - вот он, к примеру, навязывает дисциплину при создании блок-схемы
Плюсую. При создании алгоритмов стараюсь поддерживаться правил Дракона.
0
0 / 0 / 0
Регистрация: 31.01.2013
Сообщений: 1,625
29.11.2015, 19:25
Цитата Сообщение от Bytt
Сдается мне, что ваш код можно было бы упростить. Или нет?
Возможно. У меня было очень мало времени, буквально считанные дни. Но я уложился. От момента озвучивания тех.задания до сдачи объекта прошло 1.5 месяца.
Разумеется, я понимаю, что мой рисунок выглядит не фонтан, и алгоритм примитивный. Но зато он делается 15 минут, еще полчаса уходит на кодинг, и отладка минимальная - через час оно начинает жить.
0
0 / 0 / 0
Регистрация: 26.04.2010
Сообщений: 1,445
29.11.2015, 21:42
Цитата Сообщение от dymyurk1978
Предложите вариант алгоритма конечного автомата. Не диаграмму состояний и переходов, а именно алгоритм. Чтобы каждое состояние было отдельной ветвью.
SFC
0
0 / 0 / 0
Регистрация: 17.10.2015
Сообщений: 49
21.12.2015, 10:36
Я время от времени Макконела "Совершенный код" почитываю. Про блок-схемы там ни слова, зато масса советов как избежать пи##ца в коде
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.12.2015, 10:36
Помогаю со студенческими работами здесь

Добавить функционал программы рисования: программа рисования, в которой не хватает функции "заливки"
uses GraphABC; const colors : array of Color = (clBlack, clYellow, clRed, clGreen); clrBox = 20; procedure DrawRects; ...

Лабораторная работа №17. Тема: «Разработка алгоритмов и программ с использованием комбинированных алгоритмов»
Задание для самостоятельного решения. Написать программу, которая при каждом запуске запрашивает число, месяц, время и количество...

Лабораторная работа №18. Тема: «Разработка алгоритмов и программ с использованием алгоритмов на графах»
Задание для самостоятельного решения Напишите программу для поиска минимального маршрута между двумя точками графа.

Лабораторная работа №18. Тема: «Разработка алгоритмов и программ с использованием алгоритмов на графах»
Задания для самостоятельного решения. 1. Написать рекурсивную процедуру для ввода с клавиатуры последовательности чисел (окончание ввода...

Теория Алгоритмов или Путеводитель по созданию простых и эффективных алгоритмов
Я начинаю изучать язык Си, но в целом представляю, что такое алгоритм; могу написать алгоритм несложной задачи с использованием простых...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru