281 Востаннє редагувалося ProgramBandera (16.02.2020 16:31:57)

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

Підкажіть будь-ласка. Який компонент в Delphi 10.3 відповідає такому як на картинці компоненту MapleSoft 2019?
https://replace.org.ua/uploads/images/6671/6e1a307e00e2471141dbd8ce68514eb4.png

282

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

ProgramBandera написав:

Який компонент в Delphi 10.3 відповідає такому як на картинці компоненту MapleSoft 2019?

Ніякий.
Maple зроблений в основному на Java. І навіть в популярних Java-бібліотеках не завжди можна знайти компонент, який би мав подібну поведінку і відрисовку.

Але це не означає, що ви не можете використовувати подібні компоненти. Ви можете створити власні компоненти і потім додати їх на форму.

Подякували: ProgramBandera, koala, ostap34PHP, 221VOLT4

283

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

leofun01 написав:

Але це не означає, що ви не можете використовувати подібні компоненти. Ви можете створити власні компоненти і потім додати їх на форму.

Прийдеться щось пробувати. В Java вони і поле редагування розробили де дроби виводяться і редагуються. Шкода що в Delphi ніякого компонента немає для виведення математичних перетворень з дробами. Хоча б як у ворді конструктор формул якийсь був.

284

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

ProgramBandera написав:

Підкажіть будь-ласка. Який компонент в Delphi 10.3 відповідає такому як на картинці компоненту MapleSoft 2019?
https://replace.org.ua/uploads/images/6671/6e1a307e00e2471141dbd8ce68514eb4.png

TCategoryPanel буде так виглядати, якщо повісити йому на кнопки картинки з формулами.

ProgramBandera написав:
leofun01 написав:

Але це не означає, що ви не можете використовувати подібні компоненти. Ви можете створити власні компоненти і потім додати їх на форму.

Прийдеться щось пробувати. В Java вони і поле редагування розробили де дроби виводяться і редагуються. Шкода що в Delphi ніякого компонента немає для виведення математичних перетворень з дробами. Хоча б як у ворді конструктор формул якийсь був.

Просто шукати треба вміти. Ось безкоштовний варіант: QDSEquations, а ось платний: TRichView.

Подякували: ProgramBandera1

285

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

Torbins написав:

Просто шукати треба вміти. Ось безкоштовний варіант: QDSEquations, а ось платний: TRichView.

Дякую пане Torbins!!! Ато я вже почав ліпити компонент з двох Edit - чисельник і знаменник.

286

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

Torbins написав:

Просто шукати треба вміти. Ось безкоштовний варіант: QDSEquations, а ось платний: TRichView.

Ще буду вам дуже вдячний якщо ви підкажете докладно як встановити компонент QDSEquations в Delphi 10.3.

287

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

Серйозно ? Хочете в свій і без того роздутий код додати це і це ?

Подякували: 221VOLT1

288

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

leofun01 написав:

Серйозно ? Хочете в свій і без того роздутий код додати це і це ?

Пхе... Там де вісімсот тисяч рядків коду, *SORRY*  там поміститься іще 4000 рядків.  %)

289

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

ProgramBandera написав:
Torbins написав:

Просто шукати треба вміти. Ось безкоштовний варіант: QDSEquations, а ось платний: TRichView.

Ще буду вам дуже вдячний якщо ви підкажете докладно як встановити компонент QDSEquations в Delphi 10.3.

Заходите за посиланням, клацаєте по зеленій кнопочці, потім Download Zip. Вміст архіву розпаковуєте кудись, де він буде постійно зберігатися. Якщо у вас уже є набір компонентів JVCL, то можете покласти QDSEquations поруч з ним. Далі читаєте статтю: https://koder.kz/articles/podborka-delp … -2010.html або дивитеся відео з подібними назвами на ютубі. Перший крок завжди - прописати Library Path. В свіжих Делфі шлях буде такий: Tools > Options > Language > Delphi > Library. Потім вибираєте платформу, для якої хочете прописати шляхи. Якщо ваш проект розробляється під платформу Windows 32-bit, то логічно, що й нові компоненти ви захочете поставити на цю платформу. Коли відкриєте файл пакету, то там також переконайтеся, що обрано правильну платформу, перш ніж щось компілювати.

Подякували: ProgramBandera1

290

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

ProgramBandera написав:
leofun01 написав:

Серйозно ? Хочете в свій і без того роздутий код додати це і це ?

Пхе... Там де вісімсот тисяч рядків коду, *SORRY*  там поміститься іще 4000 рядків.  %)

Якщо у вас є ситуації, коли подібний код зустрічається більш ніж у двох місцях, то програму можна скоротити.

Подякували: ProgramBandera1

291 Востаннє редагувалося ProgramBandera (17.02.2020 22:25:07)

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

Torbins написав:

Якщо у вас є ситуації, коли подібний код зустрічається більш ніж у двох місцях, то програму можна скоротити.

О... так. Я зараз працюю над цим, посилено.
Вчиелі, до яких вже дійшла моя програма, почали висловлювати своє фе! Виявляється зараз правильно зводити все до однієї формули. Тобто якщо наприклад потрібно знайти густину речовини, то зараз не шукають спочатку по формулі об'єм, а потім підставивши знайдений об'єм в формулу густини знаходять саму густину, як колись ми робили на уроках. Зараз цей об'єм відшукується в основній формулі. Тому я почав вводити процедури та функції по математичних діях над дробами. І зразу виникла проблема. Прописав процедуру (Публічну) для знаходження найбільшого спільного дільника НСД і в мете при виконанні процедури вибиває помилку коли змінна а має менше значення як змінна b. Наприклад змінній а надається значення 42, а змінній b 105. Процедура виводить мені результат НСД = 21 та після цього вискакує ось це.

https://replace.org.ua/uploads/images/6671/efd87374b2d9e8027e5eb096fcfc5033.png

Коли навпаки змінній а надається більше значення 105, а змінній b 42 то все гаразд.
Я неправильно склав процедуру для алгоритму Евкліда?

Procedure TForm1.NSD(a,b: Extended);                                            // Найбільший спільний дільник
begin
 while a <> b do
  if a > b then
   a := a-b
  else
   b := b-a;
  RichEdit1.Lines.Add(VarToString('НСД = %.25g',a));
end;

292 Востаннє редагувалося topprogrammer (17.02.2020 22:44:48)

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

Краще перенести код в функцію і викликати її за необхідності. Можливо це вирішить проблему. 

function TForm1.NSD(a,b: Extended):Extended;
begin
    while b <> 0 do
        if a > b then
            a := a-b
        else
            b := b-a;

    NSD := a;  
end;
Подякували: ProgramBandera1

293

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

Знаєте, давно хотів вас запитати, але якось незручно було... яка кінцева мета всього цього? Як користуватися вашою програмою? Я так розумію, вона робитиме те, чому навчають учнів на уроках фізики. Але який у цьому сенс? Це - основи, професійним фізикам вона не потрібна; а учням треба самим навчитися виконувати ці дії, а не брати з програми результат.

Подякували: leofun01, Torbins, ostap34PHP3

294

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

koala написав:

Це - основи, професійним фізикам вона не потрібна; а учням треба самим навчитися виконувати ці дії, а не брати з програми результат.

Так проект не комерційний.
І якщо у учнів такий вчитель фізики як був у нас, то я шкодую що у мене не було програми в яку можна було б підглянути. Хоча тоді іще інтернету не було, да і комп'ютери були ЭЛЕКТРОНИКА УКНЦ. От і приходилось самому в бібліотеці вчитися.

295

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

Зараз можна навчати і навчатися онлайн https://www.youtube.com/watch?v=z8N-O7A6v8E.

Подякували: leofun01, ostap34PHP2

296

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

ProgramBandera написав:

...
І зразу виникла проблема. Прописав процедуру (Публічну) для знаходження найбільшого спільного дільника НСД і в мете при виконанні процедури вибиває помилку коли змінна а має менше значення як змінна b. Наприклад змінній а надається значення 42, а змінній b 105. Процедура виводить мені результат НСД = 21 та після цього вискакує ось це.

https://replace.org.ua/uploads/images/6671/efd87374b2d9e8027e5eb096fcfc5033.png

Коли навпаки змінній а надається більше значення 105, а змінній b 42 то все гаразд.
Я неправильно склав процедуру для алгоритму Евкліда?

Procedure TForm1.NSD(a,b: Extended);                                            // Найбільший спільний дільник
begin
 while a <> b do
  if a > b then
   a := a-b
  else
   b := b-a;
  RichEdit1.Lines.Add(VarToString('НСД = %.25g',a));
end;

Цього коду не достатньо, щоб робити якісь висновки. Треба дивитися як у вас зараз реалізована функція VarToString, та звідки ви викликаєте NSD.

297

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

Доброго дня панове! Бажаю усім 36,6.
Прохання до вас допомогти скласти функцію, з назвою FormulaInd, щоб при виводі тексту формули підставлялися числа до символьних позначок фізичних величин.

В мене наприклад є формула (символи можуть бути різні, а індекс символів іде від 0 до 6):
Fтяж = mg

В коді програми мені її порібно переписувати шість разів в семи процедурах.

1. RichEdit1.Lines.Add ('Fтяж = mg');         // тут 0 не прописується
2. RichEdit1.Lines.Add ('Fтяж1 = m1g1');    // тут до символів потрібно додати 1
3. RichEdit1.Lines.Add ('Fтяж2 = m2g2');    // тут до символів потрібно додати 2
4. RichEdit1.Lines.Add ('Fтяж3 = m3g3');    // тут до символів потрібно додати 3
5. RichEdit1.Lines.Add ('Fтяж4 = m4g4');    // тут до символів потрібно додати 4
6. RichEdit1.Lines.Add ('Fтяж5 = m5g5');    // тут до символів потрібно додати 5
7. RichEdit1.Lines.Add ('Fтяж6 = m6g6');    // тут до символів потрібно додати 6

Як створити таку функцію щоб її виклик був приблизно такий:

PVI: integer;                                                 // Physical value index - Індекс фізичного значення

RichEdit1.Lines.Add (FormulaInd('Fтяж = mg',[PVI]));

Коли PVI = 0 то виводилось: Fтяж = mg
А коли PVI в діапазоні від 1 до 6: Fтяж1 = m1g1 'Fтяж2 = m2g2 Fтяж3 = m3g3 'Fтяж4 = m4g4 Fтяж5 = m5g5 Fтяж6 = m6g6.

Я так розумію тут має застосовуватись цикл і процедура Insert, але ніде не знайшов нормального прикладу коду як це поєднати.

Допоможіть будь-ласка написати таку функцію!

298 Востаннє редагувалося koala (15.04.2020 19:19:32)

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

Це звичайний Format, але не певен, що ваша версія Delphi вже підтримує цю можливість.

Format('Fтяж%0:d = m%0:dg%0:d', [PVI])

%d, нагадаю, означає "десяткове число". А число між % та : - це індекс у масиві параметрів, починаючи з 0:

Format('%1:d %0:d',[1,2]) {виведе 2 1}
Подякували: ProgramBandera, leofun012

299 Востаннє редагувалося ProgramBandera (15.04.2020 20:14:25)

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

koala написав:

Це звичайний Format, але не певен, що ваша версія Delphi вже підтримує цю можливість.

Format('Fтяж%0:d = m%0:dg%0:d', [PVI])

%d, нагадаю, означає "десяткове число". А число між % та : - це індекс у масиві параметрів, починаючи з 0:

Format('%1:d %0:d',[1,2]) {виведе 2 1}

Я теж думав про це пане koala, але Format тут напевно не коректно. Пири PVI = 0 воно виведе Fтяж0 = m0g0, а потрібно Fтяж= mg.
Тобто мені прийдеться всерівно її два рази записувати
1. RichEdit1.Lines.Add ('Fтяж = mg');
2..7 RichEdit1.Lines.Add (Format('Fтяж%0:d = m%0:dg%0:d', [PVI]));
А хотілося б хочаб для всіх варіантів було одинаково і 0 не прописувало, якось так:

Виклик функції

RichEdit1.Lines.Add (FormulaInd('Fтяж%d = m%d*g%d',[PVI, PVI, PVI]));

300

Re: Програма розв'язування задач з фізики! Для учнів 7-го класу.

У вас, наскільки я пам'ятаю, вже була функція, що повертала число як стрічку, крім 0, де повертала пусту стрічку. Використовуйте її, щоб отримати другий параметр: ('Fтяж%0:d = m%1:dg%1:d', [PVI,f(PVI)]), де f - та функція. Ну, чи проголосіть нову функцію, теж не складно.