• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Elementy języka C++ potrzebne do napisania programu do reakcji chemicznych

Object Storage Arubacloud
+1 głos
494 wizyt
pytanie zadane 18 stycznia 2018 w C i C++ przez Adamk Nowicjusz (210 p.)

Witam, ostatnio naszła mnie myśl żeby napisać w C++ program do reakcji z chemii. Przykładowo: 

(podany przez użytkownika kwas) + (podana zasada) = wynik

Przeczytałem, że najlepiej jest uczyć się programowania poznając to co potrzebne, znam jakieś podstawy, więc tu rodzi się moje pytanie: Jakie elementy języka C++ będą mi potrzebne do napisania takiego programu? Program ma przeprowadzać reakcje (sprawdzając najpierw warunek czy dana reakcja w ogóle zachodzi i np. tabelę rozpuszczalności) i liczyć poprawnie wartościowości (uwzględniając to, że po jednej stronie może być np. Ca2 a po drugiej 2 Ca). Proszę o podpowiedzi :)

1
komentarz 18 stycznia 2018 przez mokrowski Mędrzec (155,460 p.)
Jeśli zaczynasz programować, to jest trochę zbyt ambitne zadanie. I nie piszę tego by demotywować :-) Jest tam po prostu dużo przetwarzania symboli.

Z całą pewnością przyda się:

- std::string

- std::vector

- std::unordered_map

- ...

2 odpowiedzi

+2 głosów
odpowiedź 19 stycznia 2018 przez GoRo3 Obywatel (1,640 p.)

Cześć.

To jest skomplikowany projekt jak na początek ale postaram się podpowiedzieć. 

Tak na gorąco to zastanowił bym się najpierw jaka ma być struktura takiego programu oraz jakie zależności powinny mieć między sobą klasy. Można sobie to rozrysować w ładny diagram - poczytać google o projektowaniu aplikacji zorientowanych obiektowo. 

Co do mechaniki działania - bo zakładam że menu itp. to sobie zrobisz bez problemu. 

Kolejna sprawa stricte techniczna to wyszedłbym z klas głównych Kwas oraz Zasada i zrobiłbym do nich klasy dziedziczące opisujące poszczególne kwasy lub zasady. Później wprowadzane dane trzeba by spakować w jakiś kontener pewnie lista lub vector tutaj kłania się biblioteka STL. Do obliczeń matematycznych to masz większość potrzebnych rzeczy w bibliotece standardowej - tylko trzeba zrobić rozeznanie jakie metody są Tobie potrzebne. 

No i kwestia ogarnięcia tematów obliczeń - tutaj może być skomplikowana sprawa bo trzeba określić zależności o których pisałeś i szczerze to nie mam pomysłu jak to zrobić - trzeba by się wgryźć w temat. 

Co znalazłem na googlach: 

Projekt dot. chemi w C++

dokumentacja STL i STD

 

Pozdrawiam! 

1
komentarz 19 stycznia 2018 przez j23 Mędrzec (194,920 p.)

cppreference.com w polskiej wersji? Przecież tam połowy rzeczy nie ma...

1
komentarz 19 stycznia 2018 przez GoRo3 Obywatel (1,640 p.)
Pewnie tak, jak pisałem na szybko z google ;)
1
komentarz 19 stycznia 2018 przez Sebastian Fojcik Nałogowiec (43,020 p.)

@GoRo3, dobra odpowiedź :-)

Twoje rady zakładają jednak pisanie programu Obiektowo Orientowanego (OOP). Jest to podejście profesjonalne i popieram je. Aczkolwiek nie jestem pewien czy autor posta, który jak napisał "zna jakieś podstawy" będzie w stanie użyć tej techniki programowania, aby wykorzystać Twoje sugestie. 

Wymagają one przecież znajomości obiektowośći, klas, dziedziczenia i być może polimorfizmu. + STL (niezbędny)

Ale i tak plus za OOP :-)

1
komentarz 19 stycznia 2018 przez GoRo3 Obywatel (1,640 p.)
Dzięki za łapkę.

Jestem zdania że nie ma sensu pisać inaczej niż OOP ;) Do nauki można sobie pisać proceduralnie ale taki pomysł jak ma autor to nie wyobrażam sobie napisać go w inny niż OOP sposób.

Co do podstaw i metodyki, to internet aż od tego kipi wystarczy chcieć i poświęcić czas. Ja sam właśnie w taki sposób się uczę + symfonia c++ ;) Walczę aktualnie z własną implementacją listy na mikrokontrolerze. Zajmie autorowi to dużo czasu ale za to jak się nauczy to będzie już miał całkiem niezłe podstawy do innych aplikacji.
1
komentarz 19 stycznia 2018 przez Sebastian Fojcik Nałogowiec (43,020 p.)

Doskonale rozumiem co masz na myśli :-) Jak raz poznasz OOP, to później wszędzie widzisz jak można wszystko pięknie zaimplementować w różnych projektach. Mam podobnie, dlatego męczę się teraz, gdy na studiach każą mi pisać w językach proceduralnych :-P

Żeby jednak moja odpowiedź wnosiła coś do tematu, to dodam, żeby autor realizował swój projekt metodą kolejnych przybliżeń. Nie musi od razu uczyć się obiektowości odstawiając swój projekt na miesiąc. Najefektywniejsza nauka będzie wtedy, gdy będzie się uczył przy okazji realizowania projektu.

Tzn. napisz prototyp realizujący kilka reakcji (nie więcej niż 3-4). Niby banał, ale zobaczysz z jakimi problemami się spotkasz, np. wczytywanie danych, walidacja (sprawdzanie poprawności) danych, wyznaczanie wyniku.

Na początku zakładasz, że dane są poprawne i wszystkie reakcje zachodzą. Obliczasz wynik. Później dodajesz funkcjonalność do programu, np. sprawdzanie czy reakcja zachodzi w oparciu o tabelę rozpuszczalności, później sprawdzasz poprawność danych, np. żeby program nie wypisywał do reakcji "H2O + XD" wyniku "reakcja nie zachodzi" :-P.
Ważne jest to, abyś dodawał nowe funkcjonalności powoli i (co ważne) do działającego programu. Tzn. nie pisz od razu programu na 100... tych, no... (jest jeden pierwiastek, a jak jest kilka połączone, to jak się nazywało? nieważne :-P). Pisz na 3 reakcje, upewnij się, że to co napisałeś działa i wtedy dodaj coś nowego.

Aby taki sposób projektowania miał sens i nie zakończył się czymś w rodzaju: "Aby dodać teraz uwzględnianie rozpuszczalności muszę przebudować pół programu" powinieneś najpierw rozplanować program. Tak robią dobrzy programiści. A do tego najlepiej przydaje się długopis i kartka papieru ;-)

+1 głos
odpowiedź 19 stycznia 2018 przez TenGumis Gaduła (3,440 p.)
Myślę że program nie wymaga zbyt dużo składni i napisanie go w pythonie może być nieco bardziej przejrzyste
1
komentarz 19 stycznia 2018 przez Marcin_N_97 Stary wyjadacz (10,290 p.)
Pod warunkiem, że op chce pisać w Pythonie, a nie zostać programistą cpp.

Podobne pytania

+2 głosów
2 odpowiedzi 333 wizyt
+5 głosów
5 odpowiedzi 1,942 wizyt
0 głosów
1 odpowiedź 183 wizyt
pytanie zadane 7 listopada 2018 w Ogłoszenia, zlecenia przez Skull Nowicjusz (120 p.)

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...