Библиотека Рефераты Курсовые Дипломы Поиск
Библиотека Рефераты Курсовые Дипломы Поиск
сделать стартовой добавить в избранное
Кефирный гриб на сайте www.za4et.net.ru

Компьютеры, Программирование Компьютеры, Программирование     Программное обеспечение Программное обеспечение

Эффективное использование STL и шаблонов

Фонарь садовый «Тюльпан».
Дачные фонари на солнечных батареях были сделаны с использованием технологии аккумулирования солнечной энергии. Уличные светильники для
106 руб
Раздел: Уличное освещение
Брелок LED "Лампочка" классическая.
Брелок работает в двух автоматических режимах и горит в разных цветовых гаммах. Материал: металл, акрил. Для работы нужны 3 батарейки
131 руб
Раздел: Металлические брелоки
Совок большой.
Длина 21,5 см. Расцветка в ассортименте, без возможности выбора.
21 руб
Раздел: Совки

Сергей Сацкий Введение С помощью конечных автоматов (далее просто автомат) можно успешно решать обширный класс задач. Это обстоятельство подмечено давно, поэтому в литературе по проектированию программного обеспечения часто приводятся рассуждения на тему применения автоматов (). Однако в процессе моделирования автомат рассматривается с более высокого уровня, нежели это делается в момент его реализации с использованием конкретного языка программирования. Последний раз журнал C / C User’s Jour al обращался к проблеме проектирования конечных автоматов (Fi i e S a e Machi e) в майском выпуске 2000 года (). В этом номере была напечатана статья Дэвида Лафренье (David Lafre iere), где автор описывал использованный им подход. С тех пор прошло много времени, и в данной статье будет сделана попытка применить другой подход к проектированию конечного автомата с учетом современных тенденций в проектировании программного обеспечения. Для удобства рассмотрим простой пример, который будет использоваться далее. Допустим, что необходимо определить, является ли входная последовательность символов целым числом, допустимым идентификатором, или недопустимой строкой. Под допустимыми идентификаторами будем понимать такие идентификаторы, которые начинаются с буквы и далее содержат буквы и "/", или цифры. Автомат, который поможет решить задачу, показан на рисунке 1. На рисунке используется нотация UML (U ified Modeli g La guage).   Рисунок 1. Автомат, позволяющий выяснить, что представляет собой входная строка. Следует отметить, что различные источники наделяют подобный автомат различными атрибутами. Чемпионом по их количеству, наверное, является UML (). Здесь можно найти отложенные события (deferred eve s), внутренние переходы (i er al ra si io s), параметризованные триггеры событий (eve riggers wi h parame ers), дополнительные условия переходов (guard co di io s), входные функции (e ry ac io ), выходные функции (exi ac io ), события, генерируемые по таймеру ( ime eve s) и т.д. Однако здесь мы для простоты изложения опустим дополнительные атрибуты (к некоторым из них мы вернемся позже) и сосредоточимся на простой модели, где есть состояния, события и переходы между состояниями. На данный момент все, что мы имеем – это наглядная и удобная для внесения изменений модель. Как теперь перейти от нее к коду на языке С ? Самый простой из способов реализации – это набор операторов if в том или ином виде. Например: swi ch ( Curre S a e ) {   case S a e1: if ( Curre Eve == Eve 1 )                {                  . . .                }                if ( Curre Eve == Eve 2 )                {                  . . .                }                . . .   case S a e2: . . . Не слишком наглядно, не так ли? А теперь представим себе, что мы имеем десятки событий и десятки состояний. Такой код просматривать трудно. Особенно тяжкие проблемы возникают при сопровождении кода, когда к нему надо вернуться через несколько месяцев и внести исправления. Другая возможная реализация состоит в наборе функций, каждая из которых представляет собой состояние. Такая функция сможет возвратить указатель на ту функцию, которая соответствует новому состоянию автомата.

Такая реализация также не облегчает поддержку кода. Подойдем к проблеме немного с другой стороны. Картинка – это хорошо, но в исходном виде она никаким образом не может быть перенесена в исходный текст. Значит, даже, если решение будет найдено, то это будет нечто промежуточное между картинкой и обычным текстом. Подход к реализации автомата Таким промежуточным вариантом представления автомата может быть таблица. Этот способ известен давно, например . Составим таблицу переходов для нашего автомата (таблица 1). События / состояния Пусто число идентификатор недопустимая строка буква идентификатор недопустимая строка идентификатор недопустимая строка цифра Число число идентификатор недопустимая строка Таблица 1. Здесь в первой строке перечислены возможные состояния, а в первом столбце – возможные события. На пересечениях указаны состояния, в которые должен осуществиться переход. Представление автомата в виде таблицы гораздо нагляднее, чем “размазанное” представление того же автомата в виде условных операторов или функций переходов. Таблицу уже можно попытаться переложить на код. Предположим, что удалось переложить таблицу на код. Каким бы хотелось видеть этот код? Сформулируем требования к нему (): Описание автомата (читай – таблица) должно быть сконцентрировано в одном месте. Это даст легкость чтения, понимания и модификации автомата. Представление автомата должно быть типобезопасным. Не должно быть ограничений на количество состояний и событий. События и состояния хотелось бы представить в виде абстрактных типов, определяемых пользователем. По возможности, автомат хотелось бы сделать гибким и легко расширяемым. По возможности, хотелось бы проверять описание автомата. По возможности, хотелось бы исключить неправильное использование автомата. Требования 1 и 7 означают, что все описание автомата хорошо бы поместить в конструктор. В конструкторе же надо проверять правильность описания – требование 6. class SFi i eS a eMachi e {     public:         SFi i eS a eMachi e( &l ;описание автомата> );         . . .     priva e:         SFi i eS a eMachi e(); }; Требование 4 означает, что нужно использовать шаблон, параметрами которого будут типы события и состояния. empla e &l ;class SS a e, class SEve > class SFi i eS a eMachi e {   . . . }; Требование 2 означает, что не должно использоваться никаких небезопасных операций вида rei erpre cas . О требовании 5 поговорим позже, а сейчас обсудим требование 3. В общем случае количество возможных состояний (то есть количество столбцов в таблице) неизвестно. Неизвестно также и количество событий (то есть количество строк в таблице). Получается, что у конструктора класса, который будет представлять собой автомат, переменное количество аргументов. С первого взгляда кажется, что эту проблему легко решить с помощью функций языка C va arg(), va copy(), va e d() и va s ar () (). Однако, не все так просто. Для этих функций обязательно нужно предусмотреть признаки окончания списков, а у нас количество элементов в строках и столбцах неизвестно. Размерность же задавать нежелательно. Кроме того, эти функции работают гарантированно только для POD (Plai Old Da a), а для произвольных типов возможны неприятности.

Подойдем с другой стороны. Напишем, каким хотелось бы видеть конструктор автомата: SFi i eS a eMachi e    A(                           &l ;Стартовое состояние>,                           &l ;Список состояний>,                           &l ;Список переходов для состояний>                         ); При таком вызове конструктора путем форматирования текста, набранного моноширинным шрифтом, описанию автомата удастся придать вид таблицы. Пофантазируем: SFi i eS a eMachi e    A(                           “emp y”,                           “emp y”,      “ umber”,  “ide ifier”, “u k ow ”,                le er,    “ide ifier”, “u k ow ”, “ide ifier”, “u k ow ”,                digi ,     “ umber”,     “ umber”,  “ide ifier”, “u k ow ”                         ); Со стартовым состоянием все просто: это всего лишь объект класса, представляющего состояние. Со списком состояний и тем более со списком переходов дело сложнее. Перечислить состояния через запятую не удастся. Более того, для SFi i eS a eMachi e было бы удобно иметь фиксированное количество аргументов. Оказывается, это возможно. Ведь мы можем создать временные объекты, каждый из которых будет заниматься своим списком. SFi i eS a eMachi e(                      co s SS a e &   S ar S a e,                      SS a esLis Proxy( &l ;список состояний> ),                      S ra si io sProxy( &l ;список переходов для события 1> ),                      S ra si io sProxy( &l ;список переходов для события 2> ),                      . . .                    ); Рассмотрим список состояний. Здесь остается та же проблема – неопределенное количество состояний. Помочь в ее решении может перегрузка операторов и конструктор по умолчанию. Перечислить аргументы через запятую все равно не удалось бы, но вместо запятой подошел бы и другой разделитель. Таким разделителем может быть &l ;&l ;, то есть обработку списка состояний можно записать так: SS a esLis Proxy() &l ;&l ; “emp y” &l ;&l ; “ umber” &l ;&l ; “ide ifier” &l ;&l ; “u k ow ” Перегруженный opera or&l ;&l ; для SS a esLis Proxy проверит, что среди состояний нет повторяющихся, а кроме того обеспечит типобезопасность для состояний. Переменное количество состояний при такой записи тоже не проблема. Конструктор для SFi i eS a eMachi e теперь можно записать так: SFi i eS a eMachi e( co s SS a e &   S ar S a e,        (SS a esLis Proxy() &l ;&l ; “emp y” &l ;&l ; “ umber” &l ;&l ; “ide ifier” &l ;&l ; “u k ow ”),         S ra si io sProxy( &l ;список переходов для события 1> )         S ra si io sProxy( &l ;список переходов для события 2> ),                      . . .                    ); Аналогичным образом поступим со списком переходов для одного события. Отличие будет лишь в том, что каждый список переходов имеет еще один атрибут – событие, для которого описываются переходы. Конструктор S ra si io sProxy будет принимать один аргумент: событие, а перегруженный opera or&l ;&l ; будет принимать состояния. S ra si io sProxy( le er ) &l ;&l ; “ide ifier” &l ;&l ; “u k ow ” &l ;&l ; “ide ifier” &l ;&l ; “u k ow ” Вернемся к конструктору автомата.

Рекомендации этих разделов должны быть не только изучены, но и практически реализованы в виде инструктивно-методических документов, разработанных в библиотеке. Эффективность алфавитнопредметного указателя в конечном счете зависит от организации работы, обеспеченности методической и технологической документацией. Авторский коллектив приносит искреннюю признательность за ценные советы и помощь В. А. Альтшуллеру и В. А. Мишину, а также всем библиотекарям, оказавшим содействие в подготовке пособия. Авторы сознают, что некоторые положения пособия могут носить дискуссионный характер. Все замечания и предложения будут приняты с благодарностью. Наш адрес: 101000, Москва, Центр, пр. Калинина, 3. Государственная библиотека СССР имени В. И. Ленина. Отдел систематических и предметных каталогов. ВВЕДЕНИЕ Проблеме составления и ведения алфавитно-предметного указателя (АПУ) к систематическому каталогу (СК) посвящено немало страниц в монографиях, учебных и практических пособиях, статей в журналах. Такое внимание объясняется прежде всего ролью указателя как аппарата, обеспечивающего эффективность использования СК в библиотеке, облегчающего поиск литературы по определенной теме, проблеме, предмету

1. Топливо. Его виды и характеристика. Области эффективного использования. Топливный баланс страны

2. Эффективность использования нестандартных спортивных сооружений в ВУЗах, школах

3. Анализ состояния и эффективности использования основных средств предприятия (на примере ОАО "Газпром-Кран")

4. Технико-экономический анализ. Анализ состава и движения рабочей силы и эффективности использования рабочего времени

5. Анализ эффективности использования основоного капитала на Молодечненском заводе металлоконструкций

6. Иностранные инвестиции в РФ: структура, направления и эффективность использования
7. Развитие методов эффективного использования каналов связи
8. Эффективность использования капиталов предприятия (на примере автотранспортного предприятия)

9. Повышение эффективности использования вычислительной техники в процессе обучения

10. Экологическая оценка эффективности использования осадка сточных вод в качестве удобрений

11. Анализ эффективности использования основных фондов

12. Анализ производства и эффективности использования кормов

13. Пути повышения эффективности использования оборотных средств торгового предприятия

14. Эффективность использования оборотных средств предприятия

15. Иностранные инвестиции в РФ: структура, направления и эффективность использования

16. Земельная реформа в России и эффективность использования земельных угодий ОПХ Белоусовское

Набор для творчества "Ткацкий станок".
Не знаете, чем занять своего ребенка? Кажется, что малыш перепробовал уже все виды игр? Необычный набор для творчества "Ткацкий
378 руб
Раздел: Прочее
Мобиль музыкальный "Зоопарк" (2 режима).
Музыкальная подвеска предназначена для размещения над детской кроваткой. Мобиль - это одна из первых игрушек для новорожденных и
1100 руб
Раздел: Мобили
Багетная рама "Jasmine" (цвет - светло-коричневый + золотой), 30х40 см.
Багетные рамы предназначены для оформления картин, вышивок и фотографий. Оформленное изделие всегда становится более выразительным и
558 руб
Раздел: Размер 40x50

17. Учет и анализ состояния и эффективности использования основных средств в современных условиях

18. Анализ эффективности использования рынка ценных бумаг в Республике Беларусь

19. Анализ эффективности использования машинно-тракторного парка предприятия и обоснование основных направлений ее повышения (на примере ЗАО "Имени Ильича" Ленинградского района Краснодарского края)

20. Деловая игра "Эффективность использования машинно-тракторного парка"

21. Пути повышения эффективности использования трудовых ресурсов в РСУП "Родина"

22. Урожайность районированных сортов яровой пшеницы в зависимости от погодных условий и эффективность использования различной уборочной техники в производственных условиях
23. Экономическая эффективность использования земельных угодий в ООО "Агрофирма"
24. Экономическая эффективность использования земли и резервы ее повышения

25. Эффективность использования основных фондов государственного унитарного сельскохозяйственного предприятия "Элитное"

26. Организация финансов предприятия дорожного хозяйства, выявление резервов и путей повышения эффективности использования финансовых ресурсов

27. Эффективность использования основных средств на ООО "Фазис"

28. Анализ эффективности использования основных средств на ЗАО "Вольво-Восток"

29. Анализ эффективности использования основных средств фирмы

30. Оценка экономической эффективности использования информационных технологий в медицине

31. Инновации как средство эффективного использования потенциала фирмы

32. Учет расчетов с персоналом по оплате труда и анализ эффективности использования средств на оплату труда в торговой организации

Сковорода чугунная с деревянной ручкой 2505/25, 25 см.
Диаметр: 25 см. Чугунная сковорода с деревянной ручкой. Обладает высокой теплопроводностью, несравнимой износостойкостью, устойчивостью к
648 руб
Раздел: Сковороды чугунные
Альбом для пастели "Pastel", А2, 20 листов.
Формат: А2. Количество листов: 20. Плотность бумаги: 300 г/м2. Блок: синий. Твердая подложка.
429 руб
Раздел: 14-24 листа
Бутылочка для кормления "Avent" Natural (260 мл).
Уникальная эргономичная форма позволяет комфортно держать бутылочку в любом положении. Инновационный двойной клапан эффективно снижает
481 руб
Раздел: Бутылочки

33. Эффективность использования рабочего времени на предприятии рабочими. (На примере ОАО "БРТ")

34. Эффективность использования трудовых ресурсов в организациях потребительской кооперации

35. Исследование эффективности использования домашних заданий в процессе физического воспитания

36. Повышение эффективности использования оборотных средств ДЭУ №66 РУП "Минскавтодор-Центр"

37. Цифровая защита фидеров контактной сети постоянного тока ЦЗАФ-3,3 кВ, эффективность использования, выбор уставок в границах Тайгинской дистанции электроснабжения

38. Анализ эффективности использования основных фондов
39. Способы сравнения в анализе хозяйственной деятельности. Эффективность использования капитала предприятия
40. Финансовые ресурсы предприятия их формирование и эффективное использование

41. Анализ использования фонда заработной платы и мероприятия по его эффективному использованию

42. Анализ производственно-хозяйственной деятельности и эффективности использования оборотных средств на ОАО "Мотовело"

43. Анализ эффективного использования материальных ресурсов

44. Анализ эффективности использования материальных ресурсов

45. Анализ эффективности использования оборотных средств и пути ее повышения на примере ОАО "Яранский комбинат молочных продуктов"

46. Анализ эффективности использования основных производственных фондов

47. Анализ эффективности использования основных средств на примере ООО "Производственная фирма "Прайд"

48. Анализ эффективности использования основных фондов в СХПК "ХХХ"

Мягкая магнитная мозаика "Забавные животные", 4+, 5 цветов.
Мягкие бархатистые детальки пяти ярких цветов и разнообразных форм и размеров с обратной стороны снабжены плоским магнитным слоем. В
379 руб
Раздел: Магнитная
Пакеты фасовочные в евроупаковке, 25х40 см (1000 штук), 10 мкм.
Пакеты фасовочные из пищевого полиэтилена низкого давления, используется для фасовки, хранения и перевозки пищевых и непищевых
481 руб
Раздел: Пакеты для продуктов
Планшет для пастелей "Бабочка" А3, 20 листов.
Планшет для пастелей "Бабочка" на жесткой подложке - незаменимый помощник художника. Благодаря жесткому основанию, бумага на
320 руб
Раздел: Папки для акварелей, рисования

49. Анализ эффективности использования трудовых ресурсов

50. Анализ эффективности использования фонда заработной платы

51. Исследование эффективности использования основных фондов на предприятии пищевой промышленности

52. Основные показатели, используемые при анализе эффективности использования заработной платы на торговом предприятии

53. Основные фонды, их формирование и эффективность использования

54. Оценка показателей движения и эффективного использования основных производственных фондов (на примере ООО "Бэхетле")
55. Оценка эффективности использования основных средств на предприятии
56. Повышение эффективности использования основных фондов в РУП ГЗСМ "Гомсельмаш"

57. Производственная мощность предприятия, эффективность использования оборотных средств

58. Статистико-экономический анализ эффективности использования производственных ресурсов по группе предприятий

59. Экономико-статистический анализ эффективности использования трудовых ресурсов на предприятии ОАО "Ново-Вятка"

60. Экономическая эффективность использования оборотных средств

61. Эффективность использования капитала строительной организации

62. Эффективность использования оборотных активов

63. Эффективность использования основных производственных фондов предприятия

64. Эффективность использования основных фондов

Фоторамка С31-004 Alparaisa "Family" на 4 фотографии, 46,5x38 см (темно-золотой).
Размеры рамки: 46,5х38x2,5 cм. Размеры фото: - 15х10 см, 2 штуки, - 10х15 см, 1 штука, - 18x13 см, 1 штука. Фоторамка-коллаж для 4
622 руб
Раздел: Мультирамки
Кружка фарфоровая "Морская волна", 375 мл.
Кружка. Объем: 375 мл. Материал: фарфор.
342 руб
Раздел: Кружки
Корзина "Плетенка" с крышкой, 35х29х17,5 см (белая).
Материал: пластик. Ширина: 29 см. Длина: 35 см. Высота: 17,5 см. Цвет: белый.
329 руб
Раздел: Корзины для стеллажей

65. Эффективность использования основных фондов

66. Эффективность использования основных фондов предприятия и её влияние на финансовые результаты (на примере ОАО "Смоленская городская типография")

67. Эффективность использования ресурсов и затрат

68. Эффективность использования трудовых ресурсов на предприятии

69. Анализ состояния и оценка эффективности использования заработной платы

70. Состояние основных фондов: состав, структура и показатели эффективного использования на примере ООО "Молоко"
71. Использование рекламы в INTERNET и её эффективность
72. Вопросы повышения экономической эффективности деятельности предприятия с использованием информационных технологий

73. Метод выделения единичных вызванных потенциалов из электроэнцефалограммы без использования шаблона

74. Основные средства производства и эффективность их использования

75. Использование принципа финансовой пирамиды для организации эффективного предприятия

76. Земельные ресурсы и эффективность их использования (на примере СПК Агрофирма "Родина")

77. Обоснование экономической эффективности производства и использования биогумуса в садоводстве (на примере ЗАО АФ "Сальский сад" Сальского района Ростовской области)

78. Оборотные средства предприятия и рост эффективности их использования

79. Учет денежных средств в кассе и на счетах предприятия, анализ наличия и эффективности их использования

80. Учет основных средств и анализ эффективности их использования

Кружка фарфоровая "FIFA 2018. Забивака. Россия", 480 мл.
Объем: 480 мл. Материал: фарфор.
389 руб
Раздел: Кружки, посуда
Асборн - карточки. 100 занимательных игр в путешествиях.
Увлекательный набор «100 занимательных игр в путешествиях» создан специально для маленьких путешественников! В наборе ты найдешь
493 руб
Раздел: География, путешествия
Чайник заварочный из нержавеющей стали "Super Kristal", 0,65 л.
Заварочный чайник из высококачественной нержавеющей стали прекрасно подходит для заваривания чая. Чайник снабжен удобной металлической
576 руб
Раздел: Чайники заварочные

81. Учет основных средств и анализ эффективности их использования

82. Учет собственного капитала и анализ эффективности его использования

83. Повышение эффективности логистической деятельности предприятия на основе использования информационных технологий

84. Использование современных методов оценки рыночных рисков для принятия эффективных управленческих решений

85. Персонал предприятия и пути увеличения эффективности его использования

86. Экономическая сущность и эффективные пути использования франчайзинга в современной России
87. Основные фонды автотранспортного предприятия и повышение эффективности их использования
88. Анализ обеспеченности предприятия основными средствами, материальными ресурсами; эффективность их использования

89. Кадры предприятия и эффективность их использования на примере предприятия ПКБ «Море»

90. Оборотные средства организации и эффективность их использования

91. Основные направления развития реформ в РФ и возможности использования опыта зарубежных стран в становлении эффективной рыночной экономики

92. Основные средства предприятия. Показатели эффективности их использования

93. Основные фонды организации и эффективность их использования

94. Оценка эффективности почтового отделения через использование финансовых и нефинансовых показателей

95. Потенциал предприятия: основной, оборотный, переменный. Эффективность их использования.

96. Экономическая эффективность внешних инвестиций (Ekon. Effektivnostvn vneshn. investichii v progrechii Azerbaydjanskoy Ekonomiki v obraze Grajdanskoy Aviachii)

Лото "Животные".
Лото "Животные" развивает память, внимательность, мелкую моторику рук, помогает развивать устную речь малышей, и дает начальные
1079 руб
Раздел: Лото детское
Каталка Glory "Утка" музыкальная (фиолетовая).
Катание на каталке принесет вашему ребенку массу удовольствия и впечатлений. Эта модель очень легкая, но достаточно крепкая, поскольку
606 руб
Раздел: Каталки
Одноразовые впитывающие пеленки "Molinea Plus" (20 штук, 90х180 см).
Одноразовые впитывающие пеленки "MoliNea Plus L" предназначены для дополнительной защиты постельного белья и других
900 руб
Раздел: Пелёнки

97. Грибы и их использование

98. БАД к пище и их использование в бодибилдинге

99. Организация и порядок использования в бою мотопехотной (пехотной, танковой) (бригады армий вероятного противника)


Поиск Рефератов на сайте za4eti.ru Вы студент, и у Вас нет времени на выполнение письменных работ (рефератов, курсовых и дипломов)? Мы сможем Вам в этом помочь. Возможно, Вам подойдет что-то из ПЕРЕЧНЯ ПРЕДМЕТОВ И ДИСЦИПЛИН, ПО КОТОРЫМ ВЫПОЛНЯЮТСЯ РЕФЕРАТЫ, КУРСОВЫЕ И ДИПЛОМНЫЕ РАБОТЫ. 
Вы можете поискать нужную Вам работу в КОЛЛЕКЦИИ ГОТОВЫХ РЕФЕРАТОВ, КУРСОВЫХ И ДИПЛОМНЫХ РАБОТ, выполненных преподавателями московских ВУЗов за период более чем 10-летней работы. Эти работы Вы можете бесплатно СКАЧАТЬ.