Napsaný v Prologu
Použití...
-
Stačí načíst hlavní modul anorg_prevodnik.pl a zavolat jeho predikát
jmeno_vzorec/2
, který obstarává obousměrný převod.- Alespoň jeden z argumentů nutně musí být poskytnut, jinak predikát vždy selže.
-
Podporované sloučeniny: základní kyslíkaté kyseliny, jejich soli, oxidy, hydroxidy, sulfidy, halogenidy (implementované jako specielní případy solí)
-
Vzorečky používají intuitivní formát zápisu - značka prvku příp. následovaná číslem udávajícím počet výskytů, za ní další zn. prvku atd., případné složeniny (kyselinové anionty, amonný kationt,...), pokud se vyskytují násobně, jsou zapsány do závorky následované kvantifikátorem (např. 'NaCl', 'H2SO4', '(NH4)2CO3', 'Fe2(SO4)3', ...)
-
Vytvořené názvy jsou v některých případech lehce kostrbaté, jelikož vystihnout všechny mírné odchylky od striktního názvoslovného pravidla k pěkněji vyslovitelným reálně používaným tvarům by mi dalo více práce, než za kolik to stojí.
-
Za kyseliny odpovídající danému jménu jsou považovány všechny, které splňují ze jména plynoucí ox. číslo - tedy vyžádáte-li např. kys. sírovou, dostanete H2SO4, ale zároveň i H4SO5 atd. . Stejně tak ale díky tomu pro kys. fosforečnou dostanete vedle neexistující HPO3 i správnou H3PO4. Jak hodně kyslíků navíc bude program zkoušet dohazovat, lze ovlivnit skrze predikát
c_ROZUMNY_POCET_KYSLIKU_V_KYSELINE_NAVIC
v modulu moduldata.pl
.
Obdobné platí i pro soli daných kyselin.
Přidávání dat...
-
modul data.pl
- seznam všech chemických prvků
- pro přehlednost definovány zvlášť v modulu seznam_prvku.pl
- modul
data.pl
ho importuje a predikátprvek/3
exportuje dál
- koncovky pro automatickou tvorbu jmen iontů
- seznam prvků, pro něž se mají automaticky generovat kationty (vygenerují se vždy se všemi oxidačními čísly)
- seznam explicitně definovaných iontů
- seznam všech chemických prvků
-
Přidávání nových skupin prvků...
- pro implementaci úplně nové skupiny prvků je třeba přidat novou klauzuli k predikátu
je_molekula/3
- drtivou většinu skupin (kyslíkaté kyseliny, oxidy, sulfidy, halogenidy, ...) lze implementovat jako specielní případ solí
- sůl je jakákoliv sloučenina libovolného kationtu s aniontem , jehož jméno má koncovku
"ovy"
- jméno soli vznikne takto:
(JmenoAniontu - "ovy") + " " + JmenoKationtu
(např.("siranovy" - "ovy") + " " + "sodny" -> "siran sodny"
)
- jméno soli vznikne takto:
- pro přidání nové skupiny solí tedy stačí přidat novou klauzuli k predikátu
iont_expl/2
- např.:
skupinu oxidů přidáme takto:iont_expl(ion(-2, "O"), "oxidovy").
obdobně hydroxidy:iont_expl(ion(-1, [ion(-2, "O"), ion(1, "H")]),"hydroxidovy").
ukázka složitější implementace peroxidů
apod. - pro podrobnější instrukce k zápisu iontů v interní reprezentaci viz.
- např.:
- sůl je jakákoliv sloučenina libovolného kationtu s aniontem , jehož jméno má koncovku
- pro implementaci úplně nové skupiny prvků je třeba přidat novou klauzuli k predikátu