|
Как ПРАВИЛЬНО программировать на С++, Вопросы по программированию на С++ для микроконтроллеров. |
|
|
|
 |
Ответов
|
Aug 19 2010, 14:40
|
Местный
  
Группа: Участник
Сообщений: 214
Регистрация: 22-03-10
Из: Саратов
Пользователь №: 56 123

|
Примеры есть у меня, есть и свой подход к программированию для систем с сильно ограниченными ресурсами на С++(на примере AVR). Будет свободное время - напишу статейку по этой теме (если будут желающие её читать  ). А так вкратце могу сказать, что программы на С++ получаются компактнее, быстрее и легче читаются аналогичных программ на Си.
|
|
|
|
|
Aug 20 2010, 08:37
|

Беспросветный оптимист
     
Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646

|
Цитата(777777 @ Aug 20 2010, 12:32)  Я, в принципе, охотно верю, но тем не менее не могу придумать, какие понятия в микроконтроллерных системах можно сделать классами. Да хоть какие угодно. Порт, например, чем вам не класс? УАРТ? АЦП? Таймеры? Есть физические данные, есть объекты в адресном пространстве, есть методы, работающие с этими данными и объектами. Почему бы не соединить вместе? Adc->Init(); Adc->StartConversion(); ... Uadc = Adc->GetResult();
--------------------
Программирование делится на системное и бессистемное. ©Моё :) — а для кого-то БГ — это Bill Gilbert =)
|
|
|
|
|
Aug 20 2010, 11:15
|

Профессионал
    
Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357

|
Цитата(MrYuran @ Aug 20 2010, 12:37)  Да хоть какие угодно. Порт, например, чем вам не класс? УАРТ? АЦП? Таймеры? Нет, это не классы. Это объекты, существующие в одном экземпляре. (Правда, в программировании есть понятие синглтона, но это все-таки экзотика). А класс - это в некий тип данных, как int или char. Можно создавать объекты таких типов в любом колчестве, они обладают некими свойствами. Примером класса может быть окно - можно создавать множество объектов такого класаа - окон с разными свойствами - размером, типом, - вызывать их методы с целью поменять их, выполнить какое-то действие - нарисовать на нем что-то и т.п. Можно например, как я писал в соседнем посте, создать класс кнопки и использовать его для обработки нажатий на кнопки, отличать длительное и короткое нажатие, выполнять полиморфно их обработку. Цитата(MrYuran @ Aug 20 2010, 12:37)  Есть физические данные, есть объекты в адресном пространстве, есть методы, работающие с этими данными и объектами. Почему бы не соединить вместе?
Adc->Init(); Adc->StartConversion(); ... Uadc = Adc->GetResult(); Это лишь видимость С++, в реальности это ничем не лучше вызова обычных функций. А от объектно-ориентированного программирования польза будет только если пользоваться всеми его особенностями - инкапсуляцией, наследованием, полиморфизмом. А для этого нужно весь проект рассматривать как поле для взаимодействия объектов, а не просто переделать проект на С++ потому что это модная фича.
Сообщение отредактировал 777777 - Aug 20 2010, 11:18
|
|
|
|
|
Aug 20 2010, 12:43
|

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

|
Цитата(777777 @ Aug 20 2010, 18:15)  Нет, это не классы. Это объекты, существующие в одном экземпляре. То, что классы нужно заводить только при возникновении необходимости во множественном (> 1) использовании объектов, - распространенный стереотип-заблуждение. Классы - это просто типы, определяемые пользователем, и использовать их имеет смысл во всех случаях, когда описание программных сущностей удобно воспринимать в виде законченных объектов, даже если такой объект в программе всего один. Классы, как типы, определяемые пользователем, позволяют программисту провести близкие аналогии между объектами реального мира и сущностями программы, что значительно облегчает процесс разработки, т.к. выводит логику программы на более высокий уровень абстракции (от низкоуровневого железа). К тому же, это обстоятельство позволяет в значительной мере формализовать процесс проектирования программы - т.е. составить проект ("рыбу") будущей программы из кубиков структурной схемы еще до написания первой строки кода. Кстати, на том же С очень удобно заводить в структуру объекты, относящиеся к одному и тому же (по смыслу) месту программы, даже если таких структур нужна всего одна.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
Сообщений в этой теме
Serega Doc Как ПРАВИЛЬНО программировать на С++ Jul 26 2010, 14:25 Serega Doc Это глупый вопрос который обсуждали миллион раз? Jul 27 2010, 06:43 Mahagam нет. как-то це-крест-крест не сильно прижился у эм... Jul 27 2010, 08:41 Dima_G Цитата(Mahagam @ Jul 27 2010, 15:41) нет.... Jul 27 2010, 08:48 AHTOXA Цитата(Serega Doc @ Jul 26 2010, 20:25) Г... Jul 27 2010, 08:53 Ink Цитата(AHTOXA @ Jul 27 2010, 12:53) Насле... Jul 29 2010, 12:50  Dima_G Цитата(Ink @ Jul 29 2010, 19:50) А не пок... Jul 29 2010, 13:15 Serega Doc Спасибо все заработало. Что бы не плодить тем буду... Jul 27 2010, 13:29 ReAl Ну оно "так и надо по теории". Сама флеш... Jul 27 2010, 17:31 neiver У меня есть некоторые интересные наработки на Си п... Jul 29 2010, 15:03 demiurg_spb Приведите для интереса asm листинг того, во что э... Jul 29 2010, 16:51 Dima_G Цитата(neiver @ Jul 29 2010, 22:03) У мен... Jul 30 2010, 05:56 neiver Для
Кодtypedef PinList<Pa1, Pa2, Pa3, Pb3, Pb... Jul 30 2010, 09:21 Ink ЦитатаОбъекты от статических членов не будут дубли... Aug 2 2010, 07:43 sergeeff ЦитатаНифига не понял.
Если вы посмотрите на sizeo... Aug 2 2010, 08:03 Mahagam программисты на Си обсуждают и решают проблемы кон... Aug 2 2010, 09:51 MrYuran Цитата(Mahagam @ Aug 2 2010, 13:51) прогр... Aug 2 2010, 09:57 sergeeff Цитата(Mahagam @ Aug 2 2010, 12:51) прогр... Aug 3 2010, 10:03 Ink ЦитатаЕсли вы посмотрите на sizeof(A) и наследуемы... Aug 3 2010, 07:08 Dima_G Цитата(Ink @ Aug 3 2010, 14:08) Это как т... Aug 3 2010, 13:16 halfdoom Цитата(Ink @ Aug 3 2010, 10:08) но когда ... Sep 7 2010, 09:21  Dima_G Цитата(halfdoom @ Sep 7 2010, 16:21) Вот ... Sep 7 2010, 09:40   halfdoom Цитата(Dima_G @ Sep 7 2010, 12:40) А в че... Sep 7 2010, 11:39 Mahagam я и смотрю широко. война с конструкциями языка (и ... Aug 3 2010, 07:53 sergeeff Цитата(Mahagam @ Aug 3 2010, 10:53) я и с... Aug 3 2010, 08:26 Mahagam где вы ратование за ассемблер увидели???? Aug 3 2010, 09:59 Mahagam и где я упоминал ассемблер???
поясняю - программер... Aug 3 2010, 11:15 sergeeff Цитата(Mahagam @ Aug 3 2010, 14:15) и где... Aug 3 2010, 11:48 Ink Цитата(Mahagam @ Aug 3 2010, 15:15) прогр... Aug 3 2010, 12:24 neiver Вы, видимо мало на С++ программировали...
На С++ ... Aug 3 2010, 11:29 Mahagam во налетели.
ещё раз. чисто наблюдения показывают... Aug 3 2010, 12:50 sergeeff Цитата(Mahagam @ Aug 3 2010, 15:50) во на... Aug 3 2010, 12:59  Mahagam QUOTE (sergeeff @ Aug 3 2010, 15:59) Учит... Aug 3 2010, 14:51 MrYuran Цитата(Mahagam @ Aug 3 2010, 16:50) во на... Aug 3 2010, 13:05 ReAl Цитата(Mahagam @ Aug 3 2010, 15:50) ещё р... Aug 3 2010, 14:54 Mahagam стандартов на языки понаделали давно. с появлением... Aug 3 2010, 16:13 MrYuran Цитата(Mahagam @ Aug 3 2010, 20:13) на пл... Aug 3 2010, 17:05  sergeeff Цитата(MrYuran @ Aug 3 2010, 20:05) Поэто... Aug 3 2010, 17:44   MrYuran Цитата(sergeeff @ Aug 3 2010, 21:44) С ег... Aug 3 2010, 18:12    sergeeff Цитата(MrYuran @ Aug 3 2010, 21:12) А что... Aug 3 2010, 18:32 ReAl Цитата(Mahagam @ Aug 3 2010, 19:13) станд... Aug 3 2010, 17:10 Savrik Управляеймый код, конечно, хорошо в своей области,... Aug 3 2010, 19:09 Mahagam ReAl
при чём тут ниша и контроллеры? если обсуждаю... Aug 4 2010, 07:49 sergeeff Цитата(Mahagam @ Aug 4 2010, 10:49) ReAl
... Aug 4 2010, 08:06 XVR Цитата(Mahagam @ Aug 4 2010, 11:49) ReAl
... Aug 11 2010, 09:20  alexvok Посоветуйте пажалуйста книгу
С++ с примерами для ... Aug 19 2010, 10:32   demiurg_spb Цитата(alexvok @ Aug 19 2010, 14:32) Посо... Aug 19 2010, 14:11   MrYuran Цитата(alexvok @ Aug 19 2010, 14:32) С++ ... Aug 23 2010, 07:33    xelax Цитата(MrYuran @ Aug 23 2010, 11:33) У ... Aug 25 2010, 08:38     MrYuran Цитата(xelax @ Aug 25 2010, 12:38) Я то н... Aug 25 2010, 08:48     DRUID3 Цитата(xelax @ Aug 25 2010, 11:38) Этап п... Sep 5 2010, 18:11      MrYuran Цитата(DRUID3 @ Sep 5 2010, 22:11) Хороша... Sep 6 2010, 11:34 Rst7 QUOTE (хотя я удивлялся — почему на "ДВК-2... Aug 4 2010, 08:15 Serega Doc Добрый день.
Неожиданно был удивлен что здесь из-з... Aug 5 2010, 04:10 Ink Цитата(Serega Doc @ Aug 5 2010, 08:10) Мо... Aug 5 2010, 06:34 neiver А чем собственно call не угодил? Хотите пару такто... Aug 5 2010, 07:21 Serega Doc Спасибо за рекомендации.
inline я активно использ... Aug 5 2010, 08:37    MrYuran Цитата(777777 @ Aug 20 2010, 15:15) Это л... Aug 20 2010, 11:39 ReAl Ну вот как раз сегодняшний пример.
ATmega48. Прог... Aug 21 2010, 18:24 777777 Цитата(ReAl @ Aug 21 2010, 22:24) Кстати,... Aug 24 2010, 11:21  ReAl Цитата(777777 @ Aug 24 2010, 14:21) Да эт... Aug 24 2010, 15:15 neiver Идея интересная. Я статью по этой теме пишу - ника... Aug 23 2010, 08:33 Andron_ по осени начал писать проект для сигнальника TI, р... Aug 24 2010, 14:10 ReAl Я бы сказал так — по сравнению с С язык С++ более ... Aug 25 2010, 11:19 dxp Цитата(ReAl @ Aug 25 2010, 18:19) Я бы ск... Aug 26 2010, 05:54 Waso Цитата(neiver @ Aug 19 2010, 21:40) Приме... Sep 3 2010, 05:35 sergeeff Цитата(Waso @ Sep 3 2010, 09:35) А как на... Sep 3 2010, 14:58 Waso В чем же она заключается, наивность-то? Sep 3 2010, 15:07 Harvester Цитата(Waso @ Sep 3 2010, 19:07) В чем же... Sep 7 2010, 11:27  MrYuran Цитата(Harvester @ Sep 7 2010, 15:27)
А ... Sep 7 2010, 11:44 sigmaN ЦитатаХорошая статья что-бы задуматься - а туда ли... Sep 6 2010, 20:52 neiver Цитата(sigmaN @ Sep 7 2010, 00:52) А вы н... Sep 7 2010, 08:32  DRUID3 offtop
Цитата(sigmaN @ Sep 6 2010, 23:52... Sep 7 2010, 14:57 SasaVitebsk Мне кажется, всётаки, что сравнение переходов ASM... Sep 7 2010, 10:20 one_man_show В своей практике стараюсь сделать примеры применен... Sep 7 2010, 10:54 sigmaN Блни, а зря оффтоп прикрыли.
Вот щас про Торвальд... Sep 7 2010, 23:01 Сергей Борщ Цитата(sigmaN @ Sep 8 2010, 02:01) Один м... Sep 8 2010, 06:16 halfdoom Цитата(sigmaN @ Sep 8 2010, 02:01) Прям 3... Sep 8 2010, 14:50 sigmaN Нет, точно пора завязывать, оффтоп же! Sep 8 2010, 09:13 neiver Господа/Товарищи/Эмбеддеры/Радио коты (нужное подч... Sep 9 2010, 15:30 MrYuran Цитата(neiver @ Sep 9 2010, 19:30) Господ... Sep 10 2010, 06:03 Сергей Борщ Цитата(neiver @ Sep 9 2010, 18:30) Констр... Sep 10 2010, 08:32  Сергей Борщ Подход замечательный. Обязательно использую в ближ... Sep 10 2010, 09:57   ReAl Цитата(Сергей Борщ @ Sep 10 2010, 12:57) ... Sep 10 2010, 11:43    halfdoom Цитата(ReAl @ Sep 10 2010, 15:43) p.s[0] ... Sep 11 2010, 05:54     ReAl Цитата(halfdoom @ Sep 11 2010, 08:54) Поз... Sep 11 2010, 07:27      halfdoom Цитата(ReAl @ Sep 11 2010, 10:27) Если бы... Sep 11 2010, 11:46     MrYuran Цитата(halfdoom @ Sep 11 2010, 09:54) Поз... Sep 11 2010, 08:39      halfdoom Цитата(MrYuran @ Sep 11 2010, 11:39) Ну т... Sep 11 2010, 12:11     dxp Цитата(halfdoom @ Sep 11 2010, 12:54) Поз... Sep 11 2010, 11:49 WHALE Кодvoid LCDwrite4(uint8_t value)
{
LDP ... Sep 10 2010, 09:55 BSVi Уже некоторое время пишу на плюсах в эмбеддед-прое... Sep 12 2010, 06:58 neiver Я исправил высказынные замечания и некоторые опеча... Sep 12 2010, 08:14 sigmaN Великолепная статья!
Самому очень понравилась... Sep 12 2010, 23:05
2 страниц
1 2 >
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|