Category Archives: программирование

Разработка игры на С++, Qt

game_screens

Написал ремейк небольшой логической игрушки — «Полный квадрат». Код показался мне достаточно интересным чтобы описать на блоге. По сюжету игры, ёжик перемещается по лабиринту из облаков. Ходить ёж умеет только по вертикали и горизонтали, а начав движение идет до тех пор, пока не упрется в пустоту (пройденные облака исчезают), край… Read more »

Блок-схемы алгоритмов. ГОСТ. Примеры

insertsort_flowchart

Схема — это абстракция какого-либо процесса или системы, наглядно отображающая наиболее значимые части. Схемы широко применяются с древних времен до настоящего времени — чертежи древних пирамид, карты земель, принципиальные электрические схемы. Очевидно, древние мореплаватели хотели обмениваться картами и поэтому выработали единую систему обозначений и правил их выполнения. Аналогичные соглашения выработаны… Read more »

Способы обработки XML в Qt — Stream, SAX, DOM

Screenshot_of_the_schedule_currency

Многие сталкивались с XML-документами и знают что это такое, ведь стандарт рассматриваемого языка разметки опубликован в далеком 1998 году. Язык XML используется во многих областях, но чаще всего для передачи информации через Internet — не случайно стандарт разработан Консорциумом Всемирной паутины (W3C) [1]. Очень много информации в этом мире записано… Read more »

Многопоточный сервер Qt. Пул потоков. Паттерн Decorator

рис. 3 decorator implementation

В предыдущей статье [1] была рассмотрена работа с сокетами в библиотеке Qt. Наш сервер сетевого чата работал в одном потоке. Задача текущей статьи — описание многопоточного сервера. Однако, если сервер просто принимает сообщение и передает его всем подключенным клиентам — распараллеливать нечего и потоки не особо нужны. В связи с… Read more »

Работа с сетью в Qt. Сокеты. Паттерн Adapter

рис. 5 диаграмма классов сетевого чата

В статье показана работа с сетью на примере очень простого сетевого чата, а также описан никак не связанный с сетью шаблон проектирования адаптер (adapter, wrapper, обертка). Несмотря на то, что наш чат максимально прост (он не позволяет передавать файлы и оффлайн-сообщения, не хранит историю, передает сообщения не шифрованными и т.д.),… Read more »

Функциональное программирование и обработка изображений

Под интригующим названием статьи скрывается обзор и небольшой мануал по языку программирования, встроенному в nip2. Есть весьма популярная в узких кругах утилита обработки изображений, называемая VIPS [1]. Утилита кроссплатформенная и используется для обработки очень больших изображений. Состоит она из двух частей — библиотеки libvips и утилиты с графическим интерфейсом nip2…. Read more »

Cистема плагинов Qt, построение графиков и Qt Script

рис. 1 снимок окна программы

Очень обзорная статья, описывает вершки некоторых интересных элементов библиотеки Qt. Речь идет про: библиотеку Qwt, позволяющую строить графики, гистограммы, круговые (и другие) диаграммы; систему плагинов библиотеки Qt, предназначенную для предоставления возможности модульного расширения программы; Qt Script — язык, позволяющий, как и система плагинов, дополнять программу, но не требующий компиляции (плагина)…. Read more »

Решение логических задач на Prolog

рис. 6 дерево решения задачи о волке, козе и капусте

Заказать решение задачи на Prolog или попросить помощь Язык пролог начал зарождаться в далеком 1879 году, точнее в этом году известный ученый Людвиг Фреге предложил исчисление предикатов, которое лежит в основе логического программирования. Фреге был не только математиком, но и философом (как и большинство других известных ученых своего времени). В… Read more »

Графы. Поиск в ширину и глубину на Prolog

рис. 2 обход графа в ширину

Заказать решение задачи на Prolog или попросить помощь В статье описываются: алгоритмы обхода графа в глубину и в ширину; представление графов на языке Prolog; реализация алгоритмов обхода графа на языке Prolog.

Параллельные задачи (tasks) OpenMP

рис. 4 диграммы загрузки процессора. быстрая сортировка. OpenMP

В предыдущей статье был рассмотрен параллельный цикл, однако, в OpenMP есть и другие средства распараллеливания. В настоящей статье на примере быстрой сортировки рассмотрены параллельные задачи (tasks). Затем, описаны параллельные задачи OpenMP. В конце статьи показано распараллеливание быстрой сортировки с использованием механизма задач OpenMP.

Библиотека OpenMP. Параллельный цикл

Статья ориентирована на тех, кто не знаком с библиотекой OpenMP, но хотел бы познакомиться. OpenMP — не просто библиотека параллельного программирования, но и стандарт, официально поддерживаемый для языков Си, C++ и Fortran (а неофициально и для других языков, Free Pascal, например [1]). Работает OpenMP только на архитектурах с общей памятью…. Read more »

Шаблон проектирования Prototype. Примеры

рис. 3 диаграмма классов после имплементации шаблона "Прототип"

Напомню, что в прошлый раз мы написали программу, которая содержала тулбар с геометрическими фигурами и поле, на которое эти фигуры добавлялись. Для каждой фигуры был определен отдельный класс, поэтому для добавления нового типа фигуры требовалось бы перекомпилировать программу. Шаблон проектирования «Прототип» решает эту проблему, позволяя порождать новые типы объектов во… Read more »