реклама на сайте
подробности

 
 
> Как спроектировать программу?, В каком виде записать алгоритм
Slash
сообщение Dec 23 2010, 09:35
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 202
Регистрация: 10-04-05
Из: Санкт-Петербург
Пользователь №: 4 011



Здравствуйте!

Пишу программы на языке С для МК небольшие по объему, процесс написания - снизу вверх.
Пишу сумбурно, сначала рождаются отдельные функции, потом из них конструирую основной алгоритм.
Надоело, т.к. это все в муках рождается, забываю что куда откуда. Долго допиливаю, что получилось.
В программе несколько параллельных задач, которые работают по своим событиям - таймерам, внешним прерываниям.

Кто нибудь пишет программы по всем правилам - составление алгоритма, а потом просто его кодирование?
Сколько времени занимает разработка алгоритма, в каком виде его делаете?
Есть какой-нибудь критерий сложности программы, когда пора переходить на RTOS?

Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
dxp
сообщение Dec 24 2010, 04:48
Сообщение #2


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(Slash @ Dec 23 2010, 18:35) *
Пишу программы на языке С для МК небольшие по объему, процесс написания - снизу вверх.
Пишу сумбурно, сначала рождаются отдельные функции, потом из них конструирую основной алгоритм.
Надоело, т.к. это все в муках рождается, забываю что куда откуда. Долго допиливаю, что получилось.
В программе несколько параллельных задач, которые работают по своим событиям - таймерам, внешним прерываниям.

Никакой способ - ни нисходящего проектирования, ни восходящего, не является однозначно лучшим. Эффективность достигается при сбалансированном использовании обоих. В двух словах: все, что ясно представляется на уровне архитектуры программы, можно и нужно сразу обозначить в виде модулей/объектов - наполнение их можно будет сделать потом. Остальное (что ясно не представляется) придется делать "снизу-вверх". По мере заполнения этой части, будет появляться и понимание по недостающим частям на уровне архитектуры. Такой вот итеративный процесс.

Цитата(Slash @ Dec 23 2010, 18:35) *
Кто нибудь пишет программы по всем правилам - составление алгоритма, а потом просто его кодирование?

Это все зависит от... Все индивидуально. В предельном случае доводилось рисовать структурную схему программы - квадратики (модули) и стрелки (связи). Такая схема очень хорошо потом описывается на С++: квадратики - классы, стрелки - public функции-члены классов.

Цитата(Slash @ Dec 23 2010, 18:35) *
Есть какой-нибудь критерий сложности программы, когда пора переходить на RTOS?

Если используемая платформа без проблем тянет целевую задачу и RTOS, то применять имеет смысл всегда. ОС дает возможность использовать формализованный подход при описании потока выполнения программы, упрощая этот процесс. И с портабельностью получше получается. Все это, конечно, при наличие определенного background'а в теме RTOS.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Dec 24 2010, 08:41
Сообщение #3


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Я использую такой принцип: что в данный момент проще и быстрее сделать то и делаю.
Таким образом сложные или не совсем понятные моменты варятся в голове в фоне и,
в конце-концов, они тоже становятся простыми и понятными.
Так я достигаю максимальной производительности. Для кого-то это может и неприемлемо.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Dec 24 2010, 09:17
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Считаю себя достаточно опытным, чтобы не заниматься алгоритмами, но потом переписываю структуру модулей/уровней пока все не уляжется "правильно".
Так же, как имена переменных - если не помню, как назвал, переименую sm.gif
Понятно, что вначале движение и снизу (от портов) и сверху(цикл), но создать промежуточные "слои" логично и понятно не сразу получается.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
_Bill
сообщение Dec 28 2010, 01:54
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 416
Регистрация: 18-04-06
Из: Челябинск
Пользователь №: 16 219



Цитата(Dog Pawlowa @ Dec 24 2010, 16:17) *
Считаю себя достаточно опытным, чтобы не заниматься алгоритмами, но потом переписываю структуру модулей/уровней пока все не уляжется "правильно".
Так же, как имена переменных - если не помню, как назвал, переименую sm.gif
Понятно, что вначале движение и снизу (от портов) и сверху(цикл), но создать промежуточные "слои" логично и понятно не сразу получается.

Я тоже примерно так и делаю. Начинаю снизу - с программных модулей интерфейсов (АЦП, SPI, UART и т.д.). На этом этапе все хорошо укладывается и легко тестируется. Одновременно сверху пишу головную программу с ее бесконечным циклом, в который постепенно включаю функции среднего уровня. А вообще, перво-наперво я определяю структуры данных, с которыми будет работать программа, и описываю символические константы.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th July 2025 - 08:08
Рейтинг@Mail.ru


Страница сгенерированна за 0.01368 секунд с 7
ELECTRONIX ©2004-2016