Версия, подходяща за принтиране
Кликни тук, за да видиш темата в оригиналният и вид
BG Development Форуми > Visual Basic > Програма за лесно и бързо изписване на формули


Публикувано от: Антон Яначков 24-05-2021, 09:50
Честит празник на българската писменост!
Минало е повече от хилядолетие как пишем на родния си език, но в ерата на компютрите се появяват нови и нови предизвикателства. Едно от тях е сложното и трудното изписване на математични, физични и химични формули в дигиталните документи. Пандемията от Ковид и наложеното дистанционно обучение, показаха сериозни проблеми при опит да се преподават точни науки, защото изписване на формули на компютър е трудно, бавно и трудоемко деяние. Преди време направих опит да облекча процеса на изписване на формули, чрез допълнително приложение, което да работи съвместно с Jamboard на Google, но резултат не беше удовлетворителен.
Ето защо реших да напиша програма, която да работи самостоятелно и която да позволява изписаните в нея формули с лекота да се прехвърлят в други различни приложения, като Word, Excel и т.н. Опитах се да съвместя редактор на формули и калкулатор в едно приложение. Според мен се получи задоволително. На този линк може да види крайния резултат.

http://formula.bivaood.com/


Публикувано от: sailer 24-05-2021, 10:13
Хващането на грешки нещо не се е получило добре, никаква идея какво се е объркало а се случи след първия клик. https://imgur.com/a/UU3Ew2Z

Публикувано от: Антон Яначков 24-05-2021, 11:29
QUOTE (sailer @ 24-05-2021, 10:13)
Хващането на грешки нещо не се е получило добре, никаква идея какво се е объркало а се случи след първия клик. https://imgur.com/a/UU3Ew2Z

На каква операционна система даде тази грешка?
За да мога да се ориентирам в каква посока да търся грешката, пробвай да отвориш програмата и директно да започнеш да пишеш с клавиатурата без да кликаш. Тоест интересуваме дали грешката е генерирана от събитието клик или е нещо по-глобално?

Публикувано от: code2 24-05-2021, 18:29
Яначков програмата ти прави изображение с формулата - така ли работи.

Иначе ако на мен ми потрябва формула като картинка, то първо си я пиша на добре известния сред научната общност tex формат: "{-b \pm \sqrt{b^2 -4ac}\over 2a}". След това търся формулата в google, като единствената ми цел е да препиша кодировката на горната формула на в URL формат. В случая получаваме това: "%7B-b+%5Cpm+%5Csqrt%7Bb%5E2+-4ac%7D%5Cover+2a%7D". На практика става дума за прости субституции, но които не могат да се помнят наизуст: "{" --> "%7B", "}" --> "%7D", "\" --> "%5C", "^" --> "%5E", " " --> "+". Накрая този израз го поставям например след "formdata" в url-то по-долу:

http://biostatisticien.eu/cgi-bin/mimetex.cgi?formdata=%7B-b+%5Cpm+%5Csqrt%7Bb%5E2+-4ac%7D%5Cover+2a%7D

и отваряйки получаваме картинка с формулата. Всъщност не изглежда много добре (леко е ръбата), защото все пак говорим за продукта mimetex, който е разработен за последно в 2007 година!

Публикувано от: Антон Яначков 24-05-2021, 19:09
QUOTE (code2 @ 24-05-2021, 18:29)
Яначков програмата ти прави изображение с формулата - така ли работи.

Иначе ако на мен ми потрябва формула като картинка, то първо си я пиша на добре известния сред научната общност tex формат: "{-b \pm \sqrt{b^2 -4ac}\over 2a}". След това търся формулата в google, като единствената ми цел е да препиша кодировката на горната формула на в URL формат. В случая получаваме това: "%7B-b+%5Cpm+%5Csqrt%7Bb%5E2+-4ac%7D%5Cover+2a%7D". На практика става дума за прости субституции, но които не могат да се помнят наизуст: "{" --> "%7B", "}" --> "%7D", "\" --> "%5C", "^" --> "%5E", " " --> "+". Накрая този израз го поставям например след "formdata" в url-то по-долу:

http://biostatisticien.eu/cgi-bin/mimetex.cgi?formdata=%7B-b+%5Cpm+%5Csqrt%7Bb%5E2+-4ac%7D%5Cover+2a%7D

и отваряйки получаваме картинка с формулата. Всъщност не изглежда много добре (леко е ръбата), защото все пак говорим за продукта mimetex, който е разработен за последно в 2007 година!

Да, програмата реално сглобява формулата с комбинации от обектите Label и Image, разположени по подходящ начин, след което при изтегляне с мишката снима оградената област и я праща в Clipboard за пействане в друго приложение. При записване на съдържанието на страницата прави текстов файл с необходимата информация, за да може да я възстанови при отваряне на този файл. Следващата възможност, която имам като идея за усъвършенстване е: тази информация записана, като текст да може да се ползва директно в интернет страници. За целта трябва да напиша една функция (може би на Javascript ), която по информацията от текста да сглобява формулата примерно в div. Подобно на това, което ти описваш. Пишеш формулата в редактора и взимаш от него текстовата информация, която слагаш в тага div, а визуализацията си я прави заложена в интернет страницата Javascript функция на клиентската машина. Не знам дали описах достатъчно ясно нещата, но това е идеята, с която още дори не съм експериментирал, но никога не е късно да си поиграя. До този момент усилията ми бяха насочени в посока да докарам нещата до там, че при писане на формула да бъде всичко много просто, лесно и бързо, като нищо да не се налага да помниш. Формулата да се сгобява от символи с горен или долен индекс и дробна черта.

Публикувано от: ici 24-05-2021, 19:35
https://plantuml.com/ascii-math

Публикувано от: SuN 24-05-2021, 22:39
Ако ти се занимава, може да направиш и демонстрация как се изготвя примерно контролно с 3 до 5 задачи с текст и формули, а документа да е готов за директно принтиране (или запазване като картинка, ако човек няма пряк достъп до принтер).

Публикувано от: Антон Яначков 25-05-2021, 20:52
QUOTE (SuN @ 24-05-2021, 22:39)
Ако ти се занимава, може да направиш и демонстрация как се изготвя примерно контролно с 3 до 5 задачи с текст и формули, а документа да е готов за директно принтиране (или запазване като картинка, ако човек няма пряк достъп до принтер).

Sun, нямам никакво свободно време, а отделно аз не ставам за ютубър. Когато записвам клипче, аз го правя без предварителна подготовка и говоря каквото ми хрумне, а след това се възмущавам от себе си. Мразя да записвам клипчета, но чрез тях действително се придобива по-ясна представа за какво иде реч.

За контролно е най-лесно да се напишат математичните изрази или формули в този редактор и да се пейстнат директно в Word, след което да се принтира директно.

За курсова работа е много по добре да се ползва не Word, a Excel, защото той позволява при смяна на входните данни, да се преизчисли целият проект или задача, като за предаване и принтиране екселският документ се презаписва в PDF. Съвременните офиси това упражнение го правят с две кликания. Точно тази хватка я показах на един колега, който учи в момента магистратура и той много бързо усети магията на Еxcel. Обясних му набързо как се работи с Excel, дадох му коментираната програма за формули и след 2 седмици той ме среща в машинна зала и при здрависване ми бута пачка пари в ръката. На въпроса какво е това, той ми отговари, че това е дарение от доволни студенти от неговата група, на които той сметнал курсовите задачи по описания метод. Върнах му парите, като му казах, че за моите знания аз не съм плащал и няма как да взема пари, но ако иска може да плати хостинга, домейна и сертификата, който плащам всяка година, защото там лежат безплатните сборници по програмиране, по физика и точно там ще лежи и програмата за писане на формули. В крайна сметка така и стана, колегата плати за една година разходите за хостинг ( а моя хостинг е от скъпите ), домейн и сертификат, като каза че изхарчил само 1/4 от дарената му сума. Така тази програма още преди да я завърша заработи маса пари при това абсолютно неочаквано за мен.

Публикувано от: SuN 25-05-2021, 21:23
QUOTE
За курсова работа е много по добре да се ползва не Word, a Excel, защото той позволява при смяна на входните данни, да се преизчисли целият проект или задача, като за предаване и принтиране екселският документ се презаписва в PDF.

Твоята програма не поддържа ли такъв режим на работата? Видях, че смята разни прости изрази, но не очаквах да я противопоставиш по такъв начин с ексела.

Иначе не знам до колко е удачно, но ми хрумва, че формулите може да се записват като CSV и да се вмъкват в Ексел за по-сериозните сметки. icon_smile.gif А ако се размечтаем сериозно, защо не се добави възможност да се пишат разширения на VB от потребителя?

Иначе ми харесва как символите за умножение и деление са като от (българското) училище по подразбиране.

Публикувано от: Антон Яначков 26-05-2021, 08:09
QUOTE (SuN @ 25-05-2021, 21:23)
Твоята програма не поддържа ли такъв режим на работата? Видях, че смята разни прости изрази, но не очаквах да я противопоставиш по такъв начин с ексела.

Програмата поддържа и пресмята математични операции - събиране, изваждане, умножение, делене, степенуване, коренуване, десетичен логаритъм, натурален логаритъм, логаритъм при произволна основа и всички тригонометрични функции в това число аркуси. Може с лекота да сметне всякакъв математичен израз, колкото и да е сложен и дълъг, но макар да замества калкулатор, все пак тя не е програмируен калкулатор, какъвто реално се явява Excel.

Имах хрумване да я развия в тази посока, но така и не го реализирах. Примерно пишеш I1=5[A] и ако напишеш формула в която да се среща I1, то при изтегляне на формулата, програмата да замести I1 с 5 и да сметне израза. В момента това не е реализирано, но с добавяне на няколко реда сорс, може да стане факт.

Аз не само, че не противопоставям програмата на Excel, a точно обратно, смятам че тя може да бъде добро допълнение към него. Excel е върховна програма и няма как да се мери този прост редактор ( калкулатор ) с възможностите на Excel.

Публикувано от: Антон Яначков 26-05-2021, 08:22
QUOTE (SuN @ 25-05-2021, 21:23)
icon_smile.gif А ако се размечтаем сериозно, защо не се добави възможност да се пишат разширения на VB от потребителя?

На страницата на програмата се намира линк както към програмата, така и към проекта на програмата. Всеки, който иска може да я променя и да добавя каквито му хрумне функционалности и разширения, стига да може разбира се. Лично аз се съмнявам, че на някой ще му хрумне подобно нещо, защото само след седмица време това ще бъде дори извън моите възможности. Причината е, че програмата е достатъчно сложна и когато човек забрави как са реализирани различните функционалности, трасирането и проследяването на кода става практически невъзможна задача.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)