A2 & Oberon GOOGLE trans to English      Помощь      Поиск      Пользователи  Файловый архив


 Страниц (2): « 1 [2]   

> Без описания
neuf
Отправлено: 30 Ноября, 2008 - 12:39:04
Post Id


Junior Member


Покинул форум
Сообщений всего: 63
Дата рег-ции: Авг. 2008  
Откуда: Калуш, Ивано-Франковская обл., Украина
Репутация: 0




А в книгах пишут вот так Закатив глазки :
Тип SET обозначает множество, элементы которых - целые в диапазоне от 0 до небольшого числа, обычно 31 или 63. ( В Активном Обероне 31, по-моему)
Пусть, например, даны переменные
VAR r, s, t: SET;
вожможные присваивания
r:={5}; s:={x,y..z}; t:={}
Здесь значение, присваиваемое r - множество, содержащее одиночный элемент 5; t присваивается пустое множество и s присаиваются элементы x, y, y+1......z-1,z.
Операции над множествами
+ объединение
- разность (x - y = x * (-y))
* пересечение
/ симметрическая разность множеств (x / y = (x-y) + (y-x))
Эти операции применимы к операндам типа SET и дают результат типа SET. Одноместный "минус" обозначает дополнение x, то есть -x это множество целых между 0 и MAX(SET), которые не являются элементами x. Операции с множествами не ассоциативны ((a+b)-c # a+(b-c)). Конструктор множества задает значение множества списком элементов, заключенным в фигурные скобки. Элементы должны быть целыми в диапазоне 0..MAX(SET). Диапазон a..b обозначает все целые числа в интервале [a, b].
 
 Top
BohdanT Администратор
Отправлено: 30 Ноября, 2008 - 13:13:03
Post Id



Super Member


Покинул форум
Сообщений всего: 606
Дата рег-ции: Июль 2008  
Откуда: Киев, Украина
Репутация: 2




neuf пишет:
А в книгах пишут вот так Закатив глазки :


Согласен, со всем.
Множества абсолютно идентичны логическим операторам.
В принципе неплохая альтернатива, даже не альтернатива а реализация.
И мне кажеться что если бы сделали привязку к битности было бы здорово.
т.е.
x:BYTE SET; (*8-бит*)

x: DWORD SET; (*64-бит*)

а так иногда 32 бита - много, а иногда мало Улыбка
Это я заодно про AVR думаю, там такое часто нужно Подмигивание
 
 Top
lit-uriy Супермодератор
Отправлено: 30 Ноября, 2008 - 13:18:22
Post Id


Advanced Member


Покинул форум
Сообщений всего: 298
Дата рег-ции: Нояб. 2008  
Откуда: Тюмень / Новосибирск
Репутация: 0




BohdanT пишет:
Это я заодно про AVR думаю, там такое часто нужно
а как насчет типа BOOLEAN для AVR, тоже один байт? А?!
 
 Top
BohdanT Администратор
Отправлено: 30 Ноября, 2008 - 13:35:42
Post Id



Super Member


Покинул форум
Сообщений всего: 606
Дата рег-ции: Июль 2008  
Откуда: Киев, Украина
Репутация: 2




lit-uriy пишет:
а как насчет типа BOOLEAN для AVR, тоже один байт?

А как в Си это решается? Улыбка
 
 Top
lit-uriy Супермодератор
Отправлено: 30 Ноября, 2008 - 13:47:52
Post Id


Advanced Member


Покинул форум
Сообщений всего: 298
Дата рег-ции: Нояб. 2008  
Откуда: Тюмень / Новосибирск
Репутация: 0




BohdanT пишет:
А как в Си это решается?
в самом языке Си нет типа bool, но он такой тип создан в STL (стандартная библиотека шаблонов), если я ничего не путаю. Но есть разновидность структур (RECORD, в Обероне), называемая битовое поле:

struct {
unsigned char f0:1; // 1 бит
unsigned char f1:2; // 2 бита
unsigned char f2:1; // 1 бит
unsigned char f3:2; // 2 бита
unsigned char f4:1; // 1 бит
unsigned char f5:1; // 1 бит
}mybfield;


я обычно делаю объединение:

//шаблон структуры флажков
union flag
{
unsigned char flags ;
struct {
unsigned char f0:1;
unsigned char f1:1;
unsigned char f2:1;
unsigned char f3:1;
unsigned char f4:1;
unsigned char f5:1;
unsigned char f6:1;
unsigned char f7:1;
};
};

тогда можно обращатся либо сразу к целому байту (если его например надо куда-то передать), либо побитно
(Добавление)
лучшеб чтобы булевый тип был и представлял для AVR'ок один бит, т.к. AVR'ки распологают специальным набором команд бля битвоых манипуляций, даже предусмотрено место для временного шранения битового значения Бит t и соответсвующие команды для сохранения/извлечения его
 
 Top
BohdanT Администратор
Отправлено: 30 Ноября, 2008 - 15:59:05
Post Id



Super Member


Покинул форум
Сообщений всего: 606
Дата рег-ции: Июль 2008  
Откуда: Киев, Украина
Репутация: 2




STL - это ж Си++ Улыбка

lit-uriy пишет:
лучшеб чтобы булевый тип был и представлял для AVR'ок один бит, т.к. AVR'ки распологают специальным набором команд бля битвоых манипуляций, даже предусмотрено место для временного шранения битового значения Бит t и соответсвующие команды для сохранения/извлечения его

Ну это нужно в компиляторе делать, язык не причем
 
 Top
lit-uriy Супермодератор
Отправлено: 30 Ноября, 2008 - 17:30:09
Post Id


Advanced Member


Покинул форум
Сообщений всего: 298
Дата рег-ции: Нояб. 2008  
Откуда: Тюмень / Новосибирск
Репутация: 0




BohdanT пишет:
Ну это нужно в компиляторе делать, язык не причем
угу
 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0, скрытых: 0)
« Общеe »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Locations of visitors to this page
[Valid RSS]

RSS

Valid CSS!


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0329]     [ Gzipped ]