Язык Дракон?
Язык Дракон?
Alexcryk, а чем вас не устраивает procmon? Если в фильтре указать одну программу он и будет показывать все что она делает, с файлами и в реестре.
САНЯ, Пролетарии всех стран соединяйтесь!
У нас аналитик на одной выставке заинтересовался системой от Боша, которая умеет в частности нечто подобное. Система массово используется, в основном для разработки автомобильных ЭБУ и подобных систем управления.
Там можно рисовать графические блоки, соединяя их линиями, можно описывать то же самое текстом на каком-то своём языке, можно писать вставки на С. На выходе генерятся сишные исходники. Как нам говорили их представители, многие разработчики, в основном - старшего поколения предпочитают именно графический редактор.
Если вдруг интересно - могу найти название.
∇·D = ρ
∇·B = 0
∇xE = – ∂B/∂t
∇xH = j + ∂D/∂t
© J. C. Maxwell, O. Heaviside
https://www.litres.ru/kris-kasperski...odnyh-tekstov/
Мозгами
---------- Сообщение добавлено 12:45 ---------- Предыдущее сообщение было 12:38 ----------
Прикидываю, сколько надо мышевозить, чтоб получить 20к строк хорошего сишного кода...
Мышевозить неплохо для ПЛК, но даже там можно писать на текстовых языках.
Не, я понимаю, что под рутинные дела нормальные люди пишут кодогенератор, поскольку это тупо быстрей и надежней, а в сопровождении вообще праздник. Но сишный кодогенератор с граф вводом это уже имхо перебор.
WBR, Michael.
Цель расчетов - понимание, а не числа (с) Хемминг.
Там, как я понял, внутри части блоков, которые соединяют стрелочками, уже инкапсулировано Н-ное количество сишных вставок, плюс естественно библиотеки под конкретную аппаратную платформу.
Нет.
---------- Сообщение добавлено 14:09 ---------- Предыдущее сообщение было 14:07 ----------
https://www.etas.com/en/products/ascet-developer.php
Это дочка Боша, как я понял.
∇·D = ρ
∇·B = 0
∇xE = – ∂B/∂t
∇xH = j + ∂D/∂t
© J. C. Maxwell, O. Heaviside
В интернете вы можете быть кем угодно. Странно, что многие предпочитают быть идиотами.
Как жаль, что тупость не причиняет боль ее носителю.
Качества кода в смысле сопровождаемости там вообще не нужно, т. к. если вынуть шашку и начать править сгенерированный сишный код, то провернуть его назад в исходник (который на их высокоуровневом языке) и диаграммы - невозможно.
Качество в смысле надёжности - это как раз о выстреливании себе в ногу, ага.
Качество в смысле эффективности там не на высоте, как минимум, из-за избыточных проверок в угоду надёжности. Но при хорошем сишном компиляторе - наверное, всё будет не очень страшно
∇·D = ρ
∇·B = 0
∇xE = – ∂B/∂t
∇xH = j + ∂D/∂t
© J. C. Maxwell, O. Heaviside
Еще такая порнуха есть http://www.getchip.net/posts/sreda-p...rithm-builder/
Это Асм для всяких Тинек, в графической обертке и без миллиона рябящих в глазах jmp
---------- Сообщение добавлено 18:50 ---------- Предыдущее сообщение было 18:41 ----------
ЗЫ: кому там Асма насыпать? Вот, правда для 8битной тиньки, зато закомменчено по самые помидоры, иначе сам не понимал уже через две строчки, что двумя строками назад было мною написано
Первый и пока последний блин. В одно место его
Скрытый текст
Код:==================================================================== ; Main.asm file generated by New Project wizard ; ; Created: Вт янв 23 2018 ; Processor: ATtiny13 ; Compiler: AVRASM (Proteus) ;==================================================================== ;==================================================================== ; DEFINITIONS .def Temp1=R16 .def ACWstatus=R17 ;состояние полуволны в сети +- .def ACWcounter=R18 ;счетчик для проверки состояния, нужен для малой задержки от точки перехода (NOTE!) .equ _ACWC=0x03 ;длина счетчика (зависит от частоты процессора) .def AC3Counter=R19 ;счетчик полуволн .equ _AC3C=0x03 ;0x03 - три полуволны (м.б. 5,7, и т.д. нечетное число, если вентилятор потянет) (NOTE!) .def OSOCounter=R20 ;счетчик для импульса в оптосемистор .equ _OSO=0x02 ;длина импульса (зависит от частоты процессора) .def OSOn=R21 ;признак включения ноги оптосемистора .def PortBstatus=R22 ;регистр данных со входа .def HiVeloc=R23 ;Вкл высокую скорость .def LoVeloc=R24 ;Вкл низкую скорость .def BtnCounter=R25 ;счетчик длительности нажатия кнопки (10мс на ед.) .equ _BSC=0x05 ;длина счетчика короткого нажатия кнопки (10мс на ед.) .equ _BLC=0x80 ;длина счетчика длинного нажатия кнопки (10мс на ед.) .equ _TCh=0x10 ;длина счетчика временного включения Zh (10мс*256*3 = 7,68сек на ед.) .equ _TCl=0xff ;младший байт, нужен для мигания светодиодом и его правильного включения-выключения (NOTE!) ;==================================================================== ;==================================================================== ; VARIABLES ;==================================================================== ;==================================================================== ; RESET and INTERRUPT VECTORS ;==================================================================== ; Reset Vector rjmp Init ;==================================================================== ; CODE SEGMENT ;==================================================================== Init: ; Write your code here ; назначение портов: nnrOLL~B ldi PortBstatus, 0b00011100 ; грузим признак выхода out DDRB, PortBstatus ; в регистр управления ldi PortBstatus, 0b11110001 ; грузим признак "активности" out PortB, PortBstatus ; в регистр входа clr ACWstatus ldi ACWcounter, _ACWC ldi AC3Counter, _AC3C ldi OSOCounter, _OSO clr OSOn clr HiVeloc clr LoVeloc Main: in PortBstatus, PinB ;читаем входы bst PortBstatus, 1 ;запоминаем состояние ДАТЧИКА ПЕРЕХОДА НУЛЯ clr Temp1 ;чистим Temp1 bld Temp1, 0 ;запись бита в Temp1 cp ACWstatus, Temp1 ;сравниваем новое состояние с бывшим brne IfNotEq ;ЕСЛИ не равны ldi ACWcounter, _ACWC ;если ничего не поменялось, или помеха, то сброс счетчика rjmp NextMain ;поехали дальше IfNotEq: ;=====================ВЫПОЛНЯЕТСЯ несколько раз В РАЙОНЕ ПЕРЕХОДА ЧЕРЕЗ НОЛЬ СЕТЕВОГО НАПРЯЖЕНИЯ=============================== dec ACWCounter ;если поменялось, убавляем счетчик breq SetPins ;если счетчик перехода досчитал, то поехали работать (переход через ноль состоялся) rjmp NextMain ;а если нет, то идем в самый низ ;=======================================================ВЫПОЛНЯЕТСЯ ОДИН РАЗ В ПОЛПЕРИОДА СЕТЕВОГО НАПРЯЖЕНИЯ======================================================= SetPins: ;==================УСТАНАВЛИВАЕМ НОГИ ОПТОПАРЫ И СВЕТОДИОДОВ=================== mov ACWstatus, Temp1 ;меняем статус полуволны cbr PortBstatus, 0b00000010 ;сбрасываем бит по входу датчика перехода - чтоб не привязать "подтягивающий" резистор (NOTE!) sbr PortBstatus, 0b00000001 ;устанавливаем бит по входу кнопки - чтоб не отключить "подтягивающий" резистор (NOTE!) bst Zl, 4 ;чекаем 4-й бит младшего разряда для мигания красным СД bld PortBstatus, 2 ;записываем bst LoVeloc, 0 ;чекаем регистр медленной скорости для включения зеленого СД bld PortBstatus, 3 ;записываем bst OSOn, 0 ;чекаем надо ли включить оптосимистор bld PortBstatus, 4 ;записываем ldi Temp1, 0b00010000 eor PortBstatus, Temp1 ;инвертируем 4 бит, потому что у нас на ноге включение - это 0 out PortB, PortBstatus ;ВКЛЮЧАЕМ НОГИ КОНТРОЛЛЕРА cpi OSOn, 0x00 ;проверяем надо ли включить оптосимистор breq HiVelCheck ;если не надо, то идем сразу дергать ногами, а если надо, то: ldi OSOn, 0x00 ;сбрасываем признак импульса ldi OSOCounter, _OSO ;устанавливаем счетчик включения импульса HiVelCheck: ;=============ПРОВЕРКА ВКЛЮЧЕНИЯ БЫСТРОЙ СКОРОСТИ============== or OSOn, HiVeloc ;ЭТА СТРОЧКА ЗАМЕНЯЕТ ТРИ СТРОКИ НИЖЕ ; cpi HiVeloc, 0x00 ;ПРОВЕРЯЕМ ВКЛ быстрой скорости ; breq BtnCheck ;если не надо, то проходим мимо ; ldi OSOn, 0x01 ;а ЕСЛИ НАДО, то установить признак включения оптопары BtnCheck: ;==================================ПРОВЕРКА НАЖАТИЯ КНОПКИ=================================== in PortBstatus, PinB ;читаем входы bst PortBstatus, 0 ;состояние кнопки clr Temp1 bld Temp1, 0 ;записываем в Temp1 cpi Temp1, 0x00 ;===ПРОВЕРКА НАЖАТИЯ КНОПКИ (Temp1=0)============ brne IfBtnOff ;если не нажата, то пропустим дальнейшие действия inc BtnCounter ;если нажата увеличиваем счетчик cpi BtnCounter, _BLC ;==============ПРОВЕРКА НА ДЛИННОЕ НАЖАТИЕ============= breq BtnIsLong cpi BtnCounter, _BLC+2 ;====проверка на перебор счетчика==== brne ThirdSWCheck dec BtnCounter ;вертаем обратно rjmp ThirdSWCheck ;ИДЕМ ЧЕКАТЬ ТРЕТЬЮ ПОЛУВОЛНУ BtnIsLong: ;=================================ОБРАБОТКА ДЛИННОГО НАЖАТИЯ================================= ldi Temp1, 0x01 eor LoVeloc, Temp1 ;реверс состояния нулевого бита breq ThirdSWCheck ;если установился 0, то прочь cpi HiVeloc, 0x00 brne ThirdSWCheck ;если уже крутится, то прочь ldi HiVeloc, 0x01 ;Устанавливаем быструю скорость ldi Zh, 0x01 ;и устанавливаем временный счетчик на чуть-чуть >.< ldi Zl, 0x80 ;для того чтобы вентилятор на низкой скорости гарантированно раскрутился (NOTE!) rjmp ThirdSWCheck IfBtnOff: ;=================================ОБРАБОТКА ОТПУЩЕНОЙ КНОПКИ================================= cpi BtnCounter, _BSC ;проверка на короткое нажатие brlo BtnIsOff ;если недосчитали счетчик короткого то нах cpi BtnCounter, _BLC ;проверка на длинное нажатие brsh BtnIsOff ;если песчитали то тоже нах BtnIsShort: ;=================================ОБРАБОТКА КОРОТКОГО НАЖАТИЯ================================ cpi Zh, 0x00 ;Чекаем счетчик временного ВКЛ breq ContCheck ;идем проверять как там с постоянным ВКЛ ldi Zh, 0x00 ;иначе делаем постоянно ВКЛ ldi Zl, _TCl rjmp BtnIsOff ContCheck: ;==============ПРОВЕРЯЕМ ПОСТОЯННОЕ ВКЛЮЧЕНИЕ============== cpi HiVeloc, 0x00 ;Чекаем счетчик постоянного ВКЛ breq TimeOn ;если было ВЫКЛ, то пошли ВКЛ временно, clr HiVeloc ;а если было ВКЛ, то ВЫКЛ clr Zl rjmp BtnIsOff TimeOn: ;==============ОРГАНИЗУЕМ ВРЕМЕННОЕ ВКЛЮЧЕНИЕ============== ldi HiVeloc, 0x01 ;Устанавливаем быструю скорость ldi Zh, _TCh ;и устанавливаем счетчик ldi Zl, _TCl BtnIsOff: ;===============КНОПКУ ОТПУСТИЛО ОКОНЧАТЕЛЬНО=============== clr BtnCounter ThirdSWCheck: ;=================================СЧИТАЕМ ПОЛУВОЛНЫ, ЖДЕМ ТРЕТЬЮ============================= dec AC3Counter ;убавляем счетчик трех полуволн breq ThirdSWNOW ;если полуволна третья, то идем работать rjmp NextMain ;поехали в главный цикл дальше ;vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv ВЫПОЛНЯЕТСЯ РАЗ В ТРИ ПОЛУПЕРИОДА СЕТЕВОГО НАПРЯЖЕНИЯ vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv ThirdSWNOW: ldi AC3Counter, _AC3C ;запускаем счетчик полуволн заново, or OSOn, LoVeloc ;ЭТА СТРОЧКА ЗАМЕНЯЕТ ТРИ СТРОКИ НИЖЕ ; cpi LoVeloc, 0x00 ;проверить включение низкой скорости ; breq NextMain ; ldi OSOn, 0x01 ;установить признак включения оптопары ;=============ДЕКРЕМНТ СЧЕТЧИКА ВРЕМННОГО ВКЛЮЧЕНИЯ============ cpi Zh, 0x00 ;проверим счетчик на ноль breq NextMain ;если ноль, то пропустим вычитание sbiw Zh:Zl, 1 ;вычитаем cpi Zh, 0x00 ;опять проверяем на ноль brne NextMain ;если не ноль уходим clr HiVeloc ;если ноль сбрасываем ХиВелос clr Zl ;и младший байт счетчика, чтоб не светить диодом ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^(КОНЕЦ)^ВЫПОЛНЯЕТСЯ РАЗ В ТРИ ПОЛУПЕРИОДА СЕТЕВОГО НАПРЯЖЕНИЯ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^(КОНЕЦ)^ВЫПОЛНЯЕТСЯ ОДИН РАЗ В ПОЛПЕРИОДА СЕТЕВОГО НАПРЯЖЕНИЯ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ NextMain: ;======================ПРОДОЛЖЕНИЕ ОСНОВНОГО ЦИКЛА================================== cpi OSOCounter, 0x00 ;=======проверяем счетчик оптопары=========== breq EndMain ;пропускаем если ноль dec OSOCounter ;уменьшаем если не ноль brne EndMain ;пропускаем если не досчитали до нуля sbr PortBstatus, 0b00010001 ;Здесь установка ноги оптосимистора в АДЫН !!!!!!!!!!!!!!!!!!!!!!!!! cbr PortBstatus, 0b00000010 out PortB, PortBstatus EndMain: rjmp Main ;====================================================================[свернуть]
Денис
устраивает, я просто подумал что есть что-то еще более глобальное (оно наверное есть просто не знаю что это еще) см. ниже.
+1
ну это само собой, я имел ввиду инструменты позволяющие сделать точный клон закрытой (проприетарной) программы в исходнике.
а суть вот в чем. пару месяцев назад наткнулся на интересный любительский проект Xash3D, как я понял из описания, человек, каким-то образом сделал собственную копию движка игры (с исходниками), якобы просто изучая поведение исполнительного файла и библиотек движка проприетарной игрушки (valve Half-Life).
Поиграв в этот проект - я заметил одну странную вещь: все "баги" присутствующие в оригинале оказались и в копии. То есть человек, получается сделал клон даже не зная алгоритмов работы первоисточника?
Ну в том смысле это не просто анализ внешней работы программы и самостоятельная разработка алгоритмов (мозгом!) выполняющая аналогичный результат, а какая машинная декомпиляция?
Зачем я это написал? Я вот заметил интересный факт. Линуксовый проект Open Office, лет д-цать уже как разрабатывается, а корректно работать с документами Ворда (.doc и .docx) так и не могут сделать (по крайней мере раньше). А вот какая-то китайская фирма с ходу выпустила продукт который сходу практически на 100% умеет работать со всеми форматами MS Office, это который нынче WPS Office, который раньше был KingSoft.
Это мистика, совпадение или крутая декомпиляция?
как вариант "выдернул" исполнительную часть движка, той же IDA Pro, но на это способны только программисты с черным поясом
---------- Сообщение добавлено 23:05 ---------- Предыдущее сообщение было 23:04 ----------
не просто крутая декомпиляция, одиночке такое не осилить
_________________
Евгений
Тут вопрос новичковый возник: Объясните, пожалуйста, доходчиво, что такое в компьютерном понимании означает термин "Отладка" (Debug)?
Может я просто не правильно толкую вложенный смысл, потому что по-русски как бы отладка синоним слову наладка, то есть проверка или настройка...
а тут вроде выходит что отладка как-то связана с понятием сборка (билд). или как мне понимать еще название книги Касперского "Отладка без исходников"?
---------- Сообщение добавлено 23:20 ---------- Предыдущее сообщение было 23:18 ----------
maxssau, спасибо за пояснение про IDA Pro, как я понял, то мой вопрос видимо идет к вопросу о так называемом "дизассеблировании" кода закрытой программы что и является вариантом анализа работы, а не просто анализ внешних проявлений работы программы, я правильно понял?
Для этого надо прочитать эту книгу. И только потом думать про сравнительно сложные задачи - типа выдирания движка игрухи. Для понимания процессов как такое делать надо иметь хотя-бы начальный опыт и знания.
Ответ на этот вопрос надо искать в юридической области, она крутизну опенсорса ограничивает. Бо называться оно будет не разработали, а скомуниздили и есно результат с судебными исками. Оно линуксоидам надо? Оно им вообще надо - делать серьезную совместимость с MS?
Если написать как есть, то ему тоже могут иск влепить, а оно ему надо?
Хочешь узнать про настоящий анализ - иди работать учеником вирусного аналитика. Только это не фан, бо хочешь или не хочешь - а серьезно анализируй тоннами в сутки, при этом твой противник приложит максимум усилий, чтобы помешать.
WBR, Michael.
Цель расчетов - понимание, а не числа (с) Хемминг.
Золотые слова! Спасибо!
Извини, знаешь, как то за пару часов я не успел приобрести (качнуть пиратку) и от корки до корки изучить.
(ну в плане я просто задал вопрос на опережение )
Совершенно верно. я за этим и завел данную ветку.
что бы иметь начальный опыт нужно иметь начальные ориентиры в этой деятельности, а не имея их, вся информация воспринимается как фрагментарные куски нипойми чего
Я ж в самых начальных постах просил показать где искать основы... ну так называемую "точку сборки" от которой хоть бы было бы понятно в каких направлениях двигать и что с чем связано а с чем нет.
ИМХО, если это не понятно мне, то последующее вообще.
Спасибо! я так и предполагал что видимо в этом и заключается ключевой момент.
Достаточно даже пары десятков страниц, для понимания чумовой провокации в названии.
Покупать смысла нет, Крис не был фанатом копирайта, да и думаю с неба улыбнется, если от его книг читатель поумнеет. Этот автор стоит того, чтобы прочитать все, что он написал. Нынче уже наверняка есть(однозначно должно быть) место, где все его труды собраны.
Тут как в боксе, не только теория, но и практика обязательна и в количестве, иначе битая морда и даже непонятно как. Простого и быстрого пути нет, читать, думать, кодить, цикл повторить многократно.
WBR, Michael.
Цель расчетов - понимание, а не числа (с) Хемминг.
кстати, совсем забыл, некоторые из игровых движков вообще бесплатные, по моему Unreal Engine бесплатный. поэтому и
халва кстати на движке первого Quake сделана, если поискать, может где и есть исходные коды. баги в этих играх одни и те же, чего стоит прохождение half life за 20 минут, благодаря этим "багам"
---------- Сообщение добавлено 08:59 ---------- Предыдущее сообщение было 08:40 ----------
GoldSRC движок у халвы называется
---------- Сообщение добавлено 11:34 ---------- Предыдущее сообщение было 08:59 ----------
что то мне самому интересно стало, вобщем немного погуглив нашел исходники GoldSRC, так что декомпилировать и вставлять хуки не придется
https://github.com/ValveSoftware/halflife
_________________
Евгений
Отлаживать программу - значит избавлять программу от лажи (с)
Обычно подразумевается пошаговое выполнение с возможностью просматривать состояние переменных и т. п. Чтобы можно было такое делать - обычно нужна специальная отладочная сборка (build) программы.
Если такой сборки нет - остаётся только возможность отлаживать не видя исходника, а только дизассемблированный код. А отлаживать, видя строки исходного кода - гораздо проще.
Последний раз редактировалось Meta|_; 23.04.2019 в 11:47.
∇·D = ρ
∇·B = 0
∇xE = – ∂B/∂t
∇xH = j + ∂D/∂t
© J. C. Maxwell, O. Heaviside
Всем снова привет! Прочел вот "букварь" по C#, когда читал то думал, что все понятно, а когда прочел и попробовал сделать что-то сам то сел в полную "лужу" .
в общем, цели у меня поменялись, я не хочу быть программистом супер-пупер, а хочу быть просто недо-программистом.
в общем, мои цели сузились до просто написания окон которые бы выполняли тупо какие-либо виндовые скрипты...
но и с этим у меня теперь полная непонятка.
В "букваре" дан хороший совет - использовать пример программы как шаблон для написания чего-то своего...
но чего? крестиков-ноликов? разработки алгоритма афуительного видеокодека? мне это в общем, не первое ни второе не надо.
про написание драйверов - я конечно погорячился.
но как писать обычные окошки не требующие сложных алгоритмов?, я так и не вкурил.
в визуал студио там множество менюшек со всякими опциями их просто до фига. но как спрашивается просто сделать кнопку которая бы при нажатии выполняла бы какую-нибудь просто виндовую команду типа щоутдаун???? - я так и не разобрался... даже хотя бы просто привязать к кнопке команду "закрыть окно"???????????.
совет "почитай справку" это конечно правильно, но выглядит как: "сходи в Ленинку и перечитай там всё, если хочешь узнать как прибить гвоздь" - звучит, мягко говоря, как издевка....
---------- Сообщение добавлено 03.05.2019 в 00:08 ---------- Предыдущее сообщение было 02.05.2019 в 23:54 ----------
подскажите, может быть есть какие-либо статьи о том как быстро делать проги в визуал студио имея только общие представления о классах, объектах, действиях, и пр. ??? не втыкая там о том как мне ужать код в 1кБ и запустить его на 486 проце без тормозов... ну то есть безо всяких там тонкостей для "черного пояса"... я даже больше уверен в том, что такое есть, но просто я не знаю или не правильно спрашиваю (как испорченный телефон) об этом.
---------- Сообщение добавлено 00:34 ---------- Предыдущее сообщение было 00:08 ----------
блиииннн. напрашивается аналогия с Микро-Кап и учебникам по нему. начинал читать - ничего не понятно от слова "совсем". там все начинается тоже с мегазаумностей и со сферических коней... реально мозг просто в перегрузке... а на деле там все оказалось гораздо проще если начать с анализа готовой схемы усилка - что там в этой проге банально есть только три "бибикалки" и нчего сложного, а вот "база" типа куда идет ток и что при этом происходит уже пришли потом, когда напользовался "бибикалками" вдоволь...
С программированием разве не так может быть если сперва натыкаться просто делать прикладные проги а не курить теорию со сферических коней, о которых вообще понимания нету совсем?????
Oткрываем студию выбираем тип проекта windows forms app --> указываем папку и имя кликаем ОК, Студия сгенерит форму. Кликаем View -> Toolbox - > Common controls -> Button добавляем кнопку на форму. Ригхт цлик на кнопке -> Properties -> даём осознанное имя (я предпочитаю с префиксами типа btn или cmd). Дабл кликаем на кнопке студия сгенерит обработчик нажатия и перекинет в фаил кода
пишем там к примеру
System.Diagnostics.Process.Start(@"C:\Windows\notepad.exe");
или
System.Diagnostics.Process.Start("C:\\Windows\\notepad.exe");
Клацаем F5 .... profit
В интернете вы можете быть кем угодно. Странно, что многие предпочитают быть идиотами.
Как жаль, что тупость не причиняет боль ее носителю.
В "обычных окошках", даже если писать на голом вин32 апи, нет никаких сложных алгоритмов. Вагон кода - есть, но он туп как валенок. Выше давал ссылки на книжки 90ых, где вся теория оконных приложений.
Учиться программировать алгоритмы на окошках - имхо пустая трата времени. Лучше написать несколько программок на командной строке.
Простой калькулятор выражений со скобочками. Калькулятор в обратной польской нотации. Задачки чуть сложней - берем и измеряем сотню старых транзисторов .Надо автоматический разгруппировать их в кварты и пары. Добавить понятия грейда и их стоимость. Найти алгоритм разбиения в группы, дающий максимальную прибыль(к примеру две пары высокого грейда или кварта более низкого грейда - найти кто выгодней). Изменить условие задачи, на разбивку из миллиона транзисторов, понять что при этом усложнилось.
Взять файл сверловки, добавить свойства станка и рассчитать время сверления и длину пути траектории перемещения инструмента. Проверить на оптимальность длины пути - если не оптимален, то выдать новый файл с оптимальным. Добавить енулевую вероятность сбоя координаты кривого любительского станочка и написать разбивку алгоритма сверления на не только на минимизацию пути, но и на минимизацию ошибки - отверстия принадлежащие одному компоненту сверлить атомарно, но при этом минимизировать длину пути. Добавить разную стоимость и скорость координат Х и У, задачу повторить.
Приложение с окошками - да хоть простой калькулятор для начала. Потом слепить базу данных компонентов, где лежат какие детальки и поиск по оным. Добавить отчеты - например сколько денег было потрачено на закупку резисторов в 2013году. Добавить понятие проектов и применимости компонентов оных - тогда можно расширить базу данных до макета складского учета.
Если все это сложно - можно примитивы какие лепить, например расчет номинала резистора по цвету полосок, кликая в полоски в окошке.
Я в свое время писал много разной нужной мне фигни, поскольку написать самому быстрей, чем искать готовое. Вывод на принтер "миллиметровки" в дюймовой сетке, так чтобы эта сетка действительно была дюймовой, а не как получилось. Много лет платы разводил карандашом на бумаге, поэтому актуально было. Или к примеру нужно набрать некую большую емкость с неким ESR и габаритами и срочно. Забиваем в исходник габариты, стоимость, параметры пачки кондеров с ближайшей лавки и находим оптимальные решения. Или другая задача - нужно на работе тестировать некий интерфейс, была синтезирована топология сложной резисторной цепи. Потом была написана прога с расчетом, в нее добавлен ряд по е24, и за ряд последовательных приближений было сведено
к более простой топологии с ровно одним переключением(реле стоит сильно дороже резисторов, да и время тестирования уменьшается), но с уложением в допуск. Однажды быстро накатал кинематический симулятор - в текстовом виде задается кинематическая цепь из маховиков, пассиков, осей и скорость вращения одной из оси, на выходе отчет со скоростями всех осей и их частотами первых трех гармоник. Для теоретического анализа спектров детонации разных мафонов и сравнения с ушами...
Можно мульен осмысленных задач придумать, но если писать проги делающие неведомую хрень, аля учебник - то и правда ничего не ясно, поскольку нет цели. У профи други задачи, там надо много теории и понимания зачем и как и почему, потому для профи учебники толстые и скучные.
WBR, Michael.
Цель расчетов - понимание, а не числа (с) Хемминг.
Социальные закладки