?

Log in

No account? Create an account
About,,,
C++, уроки, Программирование
a_1a


Дополнительная информация о сайте...
Нужно руководство для быстрого и результативного старта – “Если я прочитаю это, то у меня точно получится”.
Я искренне надеюсь, что этот сайт поможет вам сделать больше, чем первый успешный шаг в программировании. Несмотря на неизбежную субъективность точки зрения на некоторые вопросы, в том числе при выборе языка программирования C++, мы должны добиться желаемого результата.
Сразу отмечу, что не ставлю своей целью составить справочник или полное руководство по предмету. А намерен создать условия для преодоления психологического барьера перед началом изучения программирования для новичка. Так же постараюсь рассмотреть некоторые интересные решения для стандартных задач в программировании.
Ещё один важный момент – это не отрываться от сути процессов, которыми собираемся программно управлять. То есть не просто – “держи руль и едь хорошо”, а на чём рули хорошо? На самолёте, мотоцикле или подводной лодке? Обязательно нужно видеть программирование с точки зрения архитектуры компьютера.
Случай самовнушения. "У меня нет способностей к языкам программирования" - самый распространённый его вариант. Но фокус в том, что такой самообман разрушается всего одним фактом. Любой, кто в состоянии осознанно установить время срабатывания будильника или пользоваться "микроволновкой", может научиться программировать.
Что является самым сложным для того, кто собрался сделать первый шаг в программировании?
Правильно, вы не угадаете!
Самым сложным шагом является первое впечатление (через него многим не удаётся переступить) от среды разработки - интерфейса компилятора или IDE. Назовите это как угодно, но суть не изменится.
Все эти кнопки, надписи (термины) и главное, почему первый и якобы самый простой пример программы состоит из множества файлов?
На этом, как правило, и заканчивается знакомство с программированием для большинства решившихся.
В лучшем случае человек забрасывает мысли о программировании на несколько лет.
В самой выгодной ситуации окажется тот, у кого есть рядом программист или энтузиаст,
который уже сделал первый шаг и готов порадоваться тому, как всё просто, вместе с Вами.
Если Вы читаете эти строки, то значит проходите первый этап без проблем!
Оглавление:
Показать оглавление...Collapse )

Обмен, через общий (разделяемый) сегмент данных в dll
C++, уроки, Программирование
a_1a


На картинке выше изображены две разные программы,- консольное и Windows-приложение.
Обе эти программы подключили одну dll-библиотеку и через неё могут обмениваться данными.
Точнее сказать, в dll есть массив int Common_array[100]; в разделяемом сегменте данных ( Shared memory ).



С помощью подобного решения два процесса могут моментально обмениватьсь данными.
Этот практический пример позволит Вам с минимальными временными затратами решить проблему передачи данных в Вашем конкретном случае.

Готовые исполняемые (exe-файлы) консольной и Windows-программ я положил в папку dll-проекта. Для простого поиска и подключения dll-библиотеки.

Примечание: 1) Библиотека dll создавалась,как Си (не C++) проект.
                           Для C++ проекта макрос DLLIMPORT нужно бутет переопределить так :
                         
                       2) Windows-программу нужно запустить первой для демонстрации обмена.
                       3) В этом примере очень много интересного, если внимательно разберёте код.

Скачать этот пример.
 

TabControl ( закладки )
C++, уроки, Программирование
a_1a
На основе минимального Windows-проекта сделаем элемент управления Tab Control



Скачать проект

Теперь выносим код создания и управления закладками в отдельные функции.



Скачать проект
Tags:

WinLego-18
C++, уроки, Программирование
a_1a
Всё, что есть на данный момент. Появился первый автономный Lego-модуль "ScreenSaver_1"
Tags:

Lego-модуль ScreenSaver_1
C++, уроки, Программирование
a_1a
Эта экранная заставка стала полностью автономным модулем. К примеру, Вы можете взять любой Windows-проект (минимальный или нет) и подключить её.
Интерфейс для подключения простой и очевидный:



В архиве находятся три файла (заголовочный, реализации и объектный).
Эти файлы должны иметь фиксированный путь, для простого доступа к ним, при подключении:
C:\\dllBridge\\le_Go\\ScreenSavers\\ScrSaver_1.h
C:\\dllBridge\\le_Go\\ScreenSavers\\ScrSaver_1.cpp
C:\\dllBridge\\le_Go\\ScreenSavers\\ScrSaver_1.o
То есть, на диске C:\ должна быть папка dllBridge, в которой будут храниться файлы проекта WinLego, минимального Windows-проекта. И другие важные файлы, которые имеют отношение к указанным проектам.

Минимальный 5-й Windows-проект вместе с  подключенной экранной заставкой скачать...

4-й вариант минимального проекта под Windows
C++, уроки, Программирование
a_1a
Не прошло и пол-года с момента публикации третьего варианта минимального проекта.
В новой версии внешний функционал оставлен неизменным. Изменилась структура проекта. Немногочисленные. но важные исправления. Проект стал более структурированным.



В архиве есть exe-файл (если вдруг у Вас не скачана среда разработки).
Скачать...

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



Допустим, у нас есть пример рисования в Windows-окне с использованием буфера в памяти. Весь код в этом примере находится в одном файле. Пока проект относительно небольшой мы можем продолжать его совершенствовать. Чтобы работать с проектом, в котором более чем 2000 строк, нам придётся подумать о масштабируемости проекта. И здесь на помощь приходит структурированный-минимальный Windows-проект.
-----------------------------------------------------------------------------------------
Теперь, после преобразования однофайлового проекта в многофайловый (с заранее продуманной конфигурацией) нам будет проще его модифицировать сейчас и в будущем.



Скачать многофайловый проект.

P.S. Если Вы внимательно рассмортрите преобразования этих проектов, то освоите:
1) Принцип программирования для  Windows
2) Как разделять проект на файлы
То есть, самое-самое главное !!!
Tags:

Dev_Cpp_5_11_portable + SFML_2.2
C++, уроки, Программирование
a_1a
Чем новее, тем лучше.

Версия 22 апреля:  https://yadi.sk/d/pwVT0HXszh_W2w

Содержит две версии GCC компилятора: MinGW GCC 4.6.2  (32 bit)
и TDM-GCC 4.9.2 (32/64 bit)

Билиотека SFML 2.2 используется совместно с TDM-GCC 4.9.2 (32 bit)
Библиотека BGI ( Borland Graphics Interface )  подключена к MinGW GCC 4.6.2  (32 bit)



Версия 21 апреля:   https://yadi.sk/d/OFSKu7RHLYminQ

Версия 20 апреля:  https://yadi.sk/d/r4C0MvQdeZdqiQ

Пример...
Tags:

Очередной простой пример работы с Queue в WinLego
C++, уроки, Программирование
a_1a


Текст этого примера будет храниться здесь ( C:\dllBridge\ForWinLego\HELP\Examples.cpp )



Поиск содержимого q [ i ] в порядке возрастания будет происходить очень быстро. Класс Queue запоминает последний найденный элемент. Если следующий индекс старше предыдущего по значению i , то поиск происходит от предыдущего найденного элемента, а не с начала очереди. И напомню, что сам алгоритм "весит" около 3х Килобайт. А exe-файл на базе WinLego занимает около 55 Килобайт.

Функции __SET() && __GET() для установки сеанса связи с программой по её номеру.
C++, уроки, Программирование
a_1a
Статья в стадии исправления.....
1) Из вызывающей программы мы обращаемся к нужной программе по её номеру с помощью объекта класса    ProgAsPart    SetScreenSav(-940);
В приведённом ниже примере, мы обращаемся к программе с номером  -940.
Программа (-940) это диалог для настройки параметров ScreenSaver(а). Диалог по сути является отдельной программой с уникальным номером (в диапазоне от -2 147 483 647 до 2 147 483 647). Зная номер вызывающей программы ( Transit[0][2] = ProgramNumber; ), диалог передаст настройки именно (вызывающей) программе с номером, который хранится в ProgramNumber (по запросу функции __GET() ).

В красном прямоугольнике показан вызов диалога (фактически запуск отдельной программы, которая может быть написана не только на С++) и запуск таймера №5 .






А теперь опрос далога до тех пор пока он не будет завершён. Тогда таймер №5 будет уничтожен и опрос прекратится.



Если сессия связи установлена (номер программы получателя совпадает и сессия совпадает ), то её можно разбить на две стадии :
1) До сообщения о завершении сессии.                 (выше на рисунке case 1)
2) В момент сообщения о завершении сессии.     (выше на рисунке case 2)



Скачать проект

Использование функций __SET() и LDIR()
C++, уроки, Программирование
a_1a
На примере управления газовой горелкой можно понять, как использовать, указанные в заголовке, функции.





Ниже показан код консольного приложения. При температуре ниже 30 горелка включается, а при температуре выше 70 градусов  выключается.
Общение происходит, через dllBridge.dll.  Данные передаются в элементах массива Transit[11][100]. Содержимое этого массива можно просматривать и редактировать с помощью программы UniMons.exe. Для взаимодействия с программой "Thermometr" нам нужно знать её номер (-949).
Функция __SET(int NumberProg, int Adr, int N); в первом параметре использует номер программы.
Второй папраметр выбирает элемент в нулевом столбце массива Transit[11][100]  ( от 1-го до 99 элемента включительно).
Третий парамет int N это значение, которое мы отправляем в программу № -949 (Thermometr.exe).

Программе Thermometr не нужно знать номер программы. которая ей управляет. В элементе массива Transit[0][1] она видит цифру 1 если требуется включить горелку и видит цифру 2 если нужно выключить газовую горелку.



Код консольной программы проверяет подключение dllBridge.dll
Затем проверяет включена ли программа Thermometr, (пытается отправить ей число). Ответ (-102) говорит о том, что программа Thermometr не найдена (не запущена).
После того, как dll загружена и программа Thermometr включена проверяется два параметра, это температура и состояние датчика пламени (0 или 1).
Функция LDIR() читает из программы -949 из первого столбца 10 переменных ( от Transit[1][0] до Transit[1][9] ). В этих элементах массива содержится информация о текущей температуре и состоянии датчика пламени.
Ниже показан пример управления газовой горелкой из проекта WinLego.





Скачать весь проект.