home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / spezial / 18 / alkane.asc < prev    next >
Encoding:
Text File  |  1990-02-07  |  19.2 KB  |  383 lines

  1.                                   - 1 -
  2.            Jürgen Linz : Nomenklatur von Alkanen nach IUPAC-Norm
  3.  
  4.  
  5.                              Nomen est omen
  6.                              --------------
  7.  
  8.                  Nomenklatur von Alkanen nach IUPAC-Norm
  9.  
  10.  
  11.         Bereitet es im allgemeinen bereits Schwierigkeiten dem
  12.         eigenen Nachwuchs einen - allen gerecht werdenden -
  13.         Namen zu verpassen, so verzweifelt selbst der gutmütigste
  14.         Vater bei der Namensgebung in der organischen Chemie.
  15.         Auch, wenn es sich nur um gesättigte Kohlenwasserstoffe
  16.         handelt.
  17.         Doch selbst hier steckt (Betriebs-) System dahinter.
  18.         Mit ein "paar" Programmzeilen in TURBO-Pascal 5.0 geht's
  19.         wie von selbst.
  20.  
  21.  
  22.         Um bei der Unmenge chemischer Verbindungen, die bis heute
  23.         entdeckt bzw. synthetisiert wurden, den Überblick zu behalten
  24.         und eine vernünftige, d.h. verwechslungfreie Kommunikation der
  25.         Chemiker untereinander -selbst über Sprachgrenzen hinweg- zu
  26.         ermöglichen, muß eine einheitliche (genormte) Benennung
  27.         (Nomenklatur) der Stoffe erfolgen.
  28.         Dies gilt bereits für die anorganische Chemie mit etwa 500000
  29.         bekannten Verbindungen, insbesondere aber für die organische
  30.         Chemie, die über 8 Millionen Verbindungen kennt und jährlich
  31.         um etwa 500000 neusynthetisierte Stoffe bereichert wird.
  32.  
  33.         Der Grund für diesen enormen Verbindungsreichtum liegt in den
  34.         außerordentlichen Eigenschaften des Kohlenstoffs begründet,
  35.         der das dominierende Element der organischen Chemie ist.
  36.         Deshalb zunächst ein kleiner ...
  37.  
  38.  
  39.         Crash-Curs Chemie
  40.  
  41.         Kohlenstoff (C) steht im Periodensystem der Elemente in der
  42.         IV. Hauptgruppe und besitzt demnach vier Valenzelektronen.
  43.         Aus energetischen Gründen kann er diese vier Elektronen weder
  44.         an seinen Bindungspartner abgeben, noch kann er von diesem
  45.         vier weitere Elektronen aufnehmen, um so in die bei jeder
  46.         chemischen Bindung angestrebte (weil energetisch günstige)
  47.         Edelgaskonfiguration der Elektronenhülle zu gelangen.
  48.         Kohlenstoff kann deshalb keine Ionenbindungen bilden, sondern
  49.         muß mit seinen Bindungspartnern Atombindungen eingehen.
  50.         Dabei wird die Oktettregel streng eingehalten, d.h. Kohlenstoff
  51.         ist stets vierbindig/-wertig.
  52.  
  53.         Im Gegensatz zu seinen unmittelbaren Nachbarn im Perioden-
  54.         system Bor (B), Stickstoff (N) und Silizium (Si) zeichnet
  55.         sich Kohlenstoff nun aber besonders dadurch aus, daß sich
  56.         C-Atome in großer Anzahl untereinander verbinden können.
  57.         Sie bilden unverzweigte und verzweigte Ketten (aliphatische
  58.         Struktur) und Ring(e)/-systeme (zyklische Struktur).
  59.         Außer mit sich selbst können C-Atome natürlich mit Atomen
  60.         anderer Elemente (Fremd-/Heteroatome) verknüpft sein.
  61.         Zu den häufigsten Bindungspartnern zählen Wasserstoff (H),
  62.         Sauerstoff (O), Stickstoff (N), Schwefel (S), Phosphor (P),
  63.         sowie die Halogene Fluor, Chlor und Brom (F, Cl, Br).
  64.         Zwischen den Atomen sind Einfach-, Doppel- und Dreifach-
  65.         bindungen möglich.
  66.  
  67.  
  68.                                   - 2 -
  69.            Jürgen Linz : Nomenklatur von Alkanen nach IUPAC-Norm
  70.  
  71.  
  72.         Durch diese vielfältigen Bindungsmöglichkeiten ergeben sich
  73.         so unterschiedliche Substanzklassen/Verbindungen wie :
  74.  
  75.          - gesättigte und ungesättigte Kohlenwasserstoffe (KW's) :
  76.            (Cyclo-) Alkane (Methan, Ethan, Propan, Butan), (Cyclo-) Alkene,
  77.            Alkine, Enine, halogenierte KW's (Chloroform, FCKW's)
  78.          - ein- und mehrwertige Alkohole (Methanol, Ethanol, Glycerin)
  79.          - Aldehyde und Ketone (Formaldehyd, Aceton)
  80.          - organische Säuren/Fettsäuren (Ameisensäure, Essigsäure)
  81.          - Aminosäuren -> Peptide u. Proteine/Eiweiß (z.B. Enzyme)
  82.          - Fette (Lipide)
  83.          - Kohlenhydrate (Glucose, Lactose, Maltose, Cellulose)
  84.          - Aromaten (Benzol -> Phenol, Anilin)
  85.  
  86.         Auch Farbstoffe, Kunstoffe/-fasern, Arzneimittel, Vitamine,
  87.         Hormone und die Erbsubstanz DNA haben vornehmlich C-Atome
  88.         in ihren Strukturen.
  89.  
  90.  
  91.         What's your name ?
  92.  
  93.         Doch wir wollen uns auf die Kohlenwasserstoffe und bei diesen
  94.         auf die gesättigten, aliphatischen KW's (Alkane) beschränken.
  95.         Alkane sind -neben anderen KW's- der Hauptbestandteil des
  96.         Erdöls und somit Ausgangspunkt für die Gewinnung hochwertiger
  97.         Energieträger (Gas, Benzin, Öl), sowie Rohstoff der Petrochemie.
  98.  
  99.         Bei den Alkanen sind die C-Atome nur durch Einfachbindungen
  100.         verknüpft und alle anderen möglichen Bindungen mit Wasserstoff
  101.         abgesättigt. Ihre allgemeine Summenformel lautet : CnH2n+2
  102.         Bereits deren Anzahl ist unermeßlich groß, denn es gibt
  103.         (theoretisch) unendlich viele unverzweigte Alkane, dazu kommen
  104.         noch deren Strukturisomere, d.h. verzweigte KW's mit gleicher
  105.         Anzahl an C-Atomen.
  106.         So hat z.B. HEPTAN (C7H16) 9 Isomere, DECAN (C10H22) bereits 75,
  107.         EICOSAN (C20H42) 366319 und TETRACONTAN (C40H82) sogar über
  108.         62 Billionen Isomere.
  109.         Doch davon wollen wir uns nicht abschrecken lassen und allen
  110.         möglichen Vertretern dieser Verbindungsklasse einen anständigen,
  111.         d.h. eindeutigen (sogar 1-1-deutigen) Namen zuteilen.
  112.         Und der setzt sich wie im richtigen Leben aus "Vor-" und
  113.         "Nachnamen" zusammen und ist noch dazu genormt.
  114.         Denn die "International Union of Pure and Applied Chemistry"
  115.         (IUPAC) hat einige Regeln erlassen, wie er zu bilden ist
  116.         (sogenannte Genfer Nomenklatur).
  117.  
  118.         Zunächst ist die Hauptkette (HK) des Moleküls zu bestimmen.
  119.         Dabei geht man von folgenden Kriterien aus :
  120.  
  121.           Hauptkette ist, die
  122.  
  123.          (1) längste Kette (größte Zahl an C-Atomen)
  124.          (2) Kette mit den meisten Nebenketten (NK)
  125.          (3) Kette mit den niedrigsten Positionsziffern für die NK
  126.          (4) Kette mit den meisten C-Atomen in den NK
  127.          (5) Kette mit mehr C-Atomen in der betrachteten NK
  128.              beim Vergleich der nach der Größe geordneten NK
  129.          (6) Kette mit möglichst gering verzweigten Nebenketten
  130.  
  131.  
  132.                                   - 3 -
  133.            Jürgen Linz : Nomenklatur von Alkanen nach IUPAC-Norm
  134.  
  135.  
  136.         Gibt es nach Anwendung eines Kriteriums noch eine Wahl-
  137.         möglichkeit, so wird das folgende Kriterium angewandt.
  138.         Ergibt sich auch durch das letzte Kriterium keine endgültige
  139.         Entscheidung, so sind die zur Wahl stehenden Möglichkeiten
  140.         gleichwertig und es ergäbe sich für sie der gleiche Name.
  141.  
  142.         Aus der Zahl der C-Atome der Hauptkette ergibt sich der
  143.         "Nachname" des Alkans, zu dem sich noch das Suffix 'AN'
  144.         als Kennzeichen dafür, daß es sich um ein Alkan handelt,
  145.         gesellt.
  146.         Die ersten vier Alkane besitzen jedoch Trivialnamen :
  147.                         METHAN, ETHAN, PROPAN, BUTAN
  148.         Ab dem fünften Alkan wird der Name aus dem entsprechenden
  149.         lateinischen bzw. griechischen Zahlwort gebildet :
  150.               PENTAN, HEXAN, HEPTAN, OCTAN, NONAN, DECAN  usw.
  151.         Bei unverzweigten Ketten ist dies bereits der endgültige
  152.         Name des Moleküls.
  153.         Besitzt das Molekül jedoch Nebenketten, also Verzweigungen,
  154.         so muß auch noch der "Vorname" gefunden werden.
  155.         Dazu muß für jede Nebenkette äquivalent zur Hauptkette vor-
  156.         gegangen werden, d.h. aus der Länge der Nebenkette ergibt
  157.         sich deren Name, der jedoch mit 'YL' endet.
  158.  
  159.         Für den endgültigen Namen spielt neben der Länge auch die
  160.         Position der Nebenketten eine entscheidende Rolle.
  161.         Dabei numeriert man die Hauptkette so, daß sich für die
  162.         Nebenketten kleinstmögliche Positionsziffern ergeben.
  163.         Ergeben sich von beiden Seiten der Hauptkette aus gleiche
  164.         Positionsziffern, so erhält die im Namen zuerst auftretende
  165.         Nebenkette die niedrigste Positionsziffer.
  166.         Positionnummern und Namen der Nebenketten werden vor
  167.         den Namen der Hauptkette gesetzt.
  168.         Zur weiteren Vereinfachung werden identische Nebenketten
  169.         zusammengefasst, und zwar mit durch Komma getrennten
  170.         Positionsziffern und den vervielfachenden Affixen DI, TRI,
  171.         TETRA, ... für die Anzahl der identischen Nebenketten.
  172.         Zusätzlich werden die Nebenketten alphabetisch geordnet
  173.         (jedoch ohne Berücksichtigung der Präfixe).
  174.         Sind auch die Nebenketten verzweigt, so werden diese wie
  175.         beschrieben benannt, jedoch geklammert hinter ihrer
  176.         Positionsziffer in den Namen aufgenommen.
  177.         Die Nebenketten selbst werden so numeriert, daß sie mit
  178.         ihrer Position 1 an die übergeordnete Kette geknüpft sind.
  179.         Treten identische Nebenketten auf, die ihrerseits identisch
  180.         verzweigt sind (identisch weitersubstituierte identische
  181.         Substituenten), so erhalten sie bei der Vereinfachung
  182.         des Namens die Multiplikativ-Präfixe BIS, TRIS, TETRAKIS, ... .
  183.  
  184.  
  185.         Repräsentationspflicht
  186.  
  187.         Zur Darstellung eines Alkanmoleküls im Rechner wurde die
  188.         Datenstruktur des Baumes gewählt, da diese die natürliche
  189.         Hierarchie des Moleküls (Hauptkette mit abzweigenden
  190.         Nebenketten, die selbst wiederum Nebenketten besitzen können)
  191.         exakt wiedergibt; sie ist isomorph.
  192.         Dabei stellt die Hauptkette des Alkans die Wurzel eines
  193.         t-ären geordneten Baumes dar, d.h. jeder Knoten des Baumes
  194.         (= Kette des Alkans) hat höchstens t Nachfolger/Söhne
  195.         (= Nebenketten) in festgelegter Reihenfolge K1 .. Kt.
  196.         Die Reihenfolge der Nachfolger ergibt sich aus der Position,
  197.         an der sie von der übergeordnete Kette abzweigen.
  198.  
  199.  
  200.                                   - 4 -
  201.            Jürgen Linz : Nomenklatur von Alkanen nach IUPAC-Norm
  202.  
  203.  
  204.         Eine C-Kette der Länge n kann nun höchstens 2*(n-1) Nebenketten
  205.         haben, da ja - mit Ausnahme des Atoms am Kettenende - von jedem
  206.         Atom der Kette zwei Nebenketten abgehen können.
  207.         Die Hauptkette macht hier insofern eine Ausnahme, als daß sie
  208.         ja zwei Kettenenden besitzt, also nur 2*(n-2) Nebenketten
  209.         abzweigen können.
  210.         Die maximale Zahl der Nebenketten einer Kette und damit die
  211.         Anzahl der Sohnzeiger ist also abhängig von der Länge der Kette,
  212.         was bei der Codierung der Datenstruktur in einer realen
  213.         Programmiersprache zum Problem wird, da hier bei der Typverein-
  214.         barung die Zahl der Zeiger ja bereits feststehen muß.
  215.         Jeder t-äre Baum läßt sich jedoch durch einen binären Baum
  216.         repräsentieren, indem der Sohn mit der niedrigsten Positionsziffer
  217.         über den Zeiger auf den linken Nachfolger (Sohn) an den Vater, die
  218.         weiteren Söhne als rechte Nachfolger (Brüder) an diesen Sohn
  219.         angehängt werden.
  220.         In der realen Implementierung wurde der Baum als doppelt
  221.         verkettete RECORD-Struktur realisiert, d.h zusätzlich zu den
  222.         Zeigern auf Sohn und rechten Bruder existieren Zeiger auf Vater
  223.         und linken Bruder.
  224.         Neben Angaben über Position und Länge (für Regeln 1 + 3) sind für
  225.         jede Kette zusätzliche Informationen für die weiteren Kriterien
  226.         notwendig.
  227.         Jeder Baumknoten (RECORD-Element) enthält somit folgende Daten :
  228.  
  229.           - posit , laenge , niveau
  230.           - anso (Anzahl Söhne/NK)
  231.           - anlibr/anrebr (Anzahl linke/rechte Brüder)
  232.           - sumpos/revpos (Summe der Posziffern der Söhne)
  233.           - sumanca (Summe der C-Atome in Nebenketten)
  234.           - anca (geordnete Liste der Atomanzahl in NK)
  235.           - komplex (Verzweigungsgrad der NK)
  236.           - atome (Koordinaten der Kettenatome)
  237.           - vater, sohn, libr, rebr (Zeiger)
  238.  
  239.  
  240.         Generationenkonflikt
  241.  
  242.         Bei Programmstart existiert nur die Wurzel des Baumes
  243.         (Hauptkette) mit der willkürlich gewählten Positions-
  244.         ziffer 0 und der Länge 1 (METHAN / ein C-Atom ist vorgegeben).
  245.         Fügt/löscht man nun bei der Eingabe der Strukturgerüst-Formel
  246.         C-Atome (an), so ergeben sich -abhängig davon, ob man am Kettenende
  247.         oder innerhalb der Kette anhängt/löscht- zwei mögliche Situationen :
  248.             - eine bestehende Kette wird verlängert/verkürzt
  249.             - eine Nebenkette (Baumknoten) wird eingefügt/gelöscht
  250.         Nach jedem Anhängen bzw. Löschen eines C-Atoms muß nun
  251.         entsprechend den aufgeführten Regeln geprüft werden, ob sich
  252.         die "Verwandschaftsverhältnisse" innerhalb des Baums geändert haben.
  253.         Dazu muß jeweils die betreffende Kette mit ihren Vätern bzw. Söhnen
  254.         verglichen werden.
  255.         Die Vaterkette wird bei diesem Vergleich versuchsweise vom
  256.         Kettenanfang her in die Sohnkette "hineingebogen".
  257.         Sowohl für Vater als auch für den Sohn müssen dazu die sich neu
  258.         ergebenden Werte für Position, Länge, Niveau etc. errechnet und
  259.         verglichen werden.
  260.  
  261.  
  262.                                   - 5 -
  263.            Jürgen Linz : Nomenklatur von Alkanen nach IUPAC-Norm
  264.  
  265.  
  266.         Sollte ein Sohn bei diesem Vergleich nun "besser" abschneiden
  267.         als sein ehemaliger Vater, so wird er selbst zum Vater und der
  268.         Vater wird zum Sohn.
  269.         Auch für die übrige Baumstruktur ergeben sich dadurch Konsequenzen.
  270.         Linke Brüder des alten Sohnes, also Brüder mit niedrigeren
  271.         Positionsziffern als er selbst, werden zu Söhnen des neuen Vaters
  272.         (ehemaliger Sohn), rechte Brüder bleiben Söhne des alten Vaters
  273.         (neuer Sohn), ausgenommen solche mit gleicher Positionsziffer wie
  274.         der ehemalige Sohn, diese werden Söhne des neuen Vaters.
  275.  
  276.         Betrachtet man die Hauptkette, so läßt sich diese auch vom
  277.         Kettenende her in eine Nebenkette "hineinbiegen", dabei ergeben
  278.         sich im Vergleich zum oben beschriebenen "Normalfall" für die
  279.         linken/rechten Brüder die genau umgekehrten Strukturveränderungen.
  280.         Um bei Errechnung der neuen Kettendaten für Vater und Sohn,
  281.         sowie für eventuell notwendige Strukturänderungen im Baum
  282.         keine Sonderfallbehandlung bei der Hauptkette vorsehen zu
  283.         müssen, wird die Hauptkette beim Vergleich zunächst vom
  284.         Kettenanfang in die Nebenkette gebogen, dann umgedreht, d.h. vom
  285.         Kettenende her beginnend durchnumeriert (wobei sich natürlich
  286.         die Positionen und die Reihenfolge der Söhne ändert), und erneut
  287.         vom Anfang in die Seitenkette gebogen.
  288.         Der Vergleich mit den Söhnen beginnt dabei immer beim Sohn mit
  289.         höchster Positionsziffer, damit bei notwendigen Strukturänderungen
  290.         des Baumes und dem damit verbundenen Verbiegen der Zeiger
  291.         (Vater wird Sohn etc.) die Vergleiche mit weiteren Söhnen
  292.         nicht verschluckt werden können.
  293.         Rechte Söhne sind damit bei Änderungen immer schon verglichen,
  294.         linke Söhne bleiben auch beim neuen Vater an ihrem Platz.
  295.  
  296.         In einem ARRAY akt_atom speichert das Programm zusätzlich für
  297.         jedes C-Atom (Feldindizes entsprechen Bildschirmkoordinaten/2),
  298.         in welcher Kette es enthalten ist (akt_atom^.in_kette), sowie
  299.         in welche Richtungen Bindungen zu weiteren C-Atomen führen.
  300.         Dadurch werden Zyklen bzw. Lücken im Molekül verhindert.
  301.         Die Bindungen sind dabei folgendermaßen in den unteren vier Bit
  302.         einer INTEGER-Zahl (akt_atom^.bind) verschlüsselt :
  303.  
  304.                        Bit  :    3       2      1      0
  305.               Bindung nach  :  oben   rechts  unten  links
  306.                         dx  :    0      +1      0     -1
  307.                         dy  :   -1       0     +1      0
  308.  
  309.         Die Richtung bestimmt dabei das "alte" Atom (ax,ay), von dem die
  310.         Bindung zum neuen Atom (nx,ny) ausgeht.
  311.         ((nx,ny) = aktuelle Cursor-Koordinaten (x,y) + (dx,dy))
  312.         Beim neuen C-Atom muß dann jeweils das Bit der entgegengesetzten
  313.         Richtung gesetzt werden.
  314.         Das Setzen selbst erfolgt durch AND-Verknüpfung der bisherigen
  315.         INTEGER-Zahl mit (1 SHL bit), wobei sich bit aus dx/dy nach
  316.         folgenden Formeln berechnet :
  317.                   ABS((1 + dx) - 2 * dy)  für "altes" C-Atom
  318.                   ABS((1 - dx) + 2 * dy)  für "neues" C-Atom
  319.         Löschen erfolgt durch AND-Verknüpfung mit negiertem (1 SHL bit),
  320.         wobei bit = ABS((1 - dx) + 2* dy) ist.
  321.         Für das gelöschte Atom wird akt_atom^.bind natürlich gleich Null.
  322.  
  323.  
  324.                                   - 6 -
  325.            Jürgen Linz : Nomenklatur von Alkanen nach IUPAC-Norm
  326.  
  327.  
  328.         Umgekehrt enthält jeder Baumknoten die Koordinaten aller seiner
  329.         C-Atome. Dies ist notwendig um bei Strukturänderungen des Baumes
  330.         nach Vater-Sohn-Vergleichen, bei denen sich ja die Ketten-
  331.         zugehörigkeit der C-Atome ändern kann, diese wieder den richtigen
  332.         Ketten zuordnen zu können.
  333.  
  334.  
  335.         REMarks
  336.  
  337.         In der Prozedur "wertigkeit" wird genaugenommen nicht die
  338.         Wertigkeit des C-Atoms ermittelt (C-Atome sind immer vierwertig),
  339.         sondern mit wievielen weiteren C-Atomen Bindungen geknüpft sind,
  340.         also, ob es sich um ein primäres, sekundäres, tertiäres oder
  341.         quartäres C-Atom handelt.
  342.         Zur Ermittlung des Namens wird der Baum in symmetrischer Ordnung
  343.         (inorder) traversiert; der entsprechende Algorithmus ist rekursiv
  344.         formuliert.
  345.         Die Prozeduren "alphsort" und "namen_verkuerzen" sind zweistufig
  346.         rekursiv : Beide rufen zur Ermittlung des nächsten Namensteils
  347.         die Prozedur "namteil_finden" auf, die wiederum (bei geklammerten
  348.         Namensteilen) "alphsort"/"namen_verkuerzen" aufruft, wodurch auch
  349.         Namensteile in Klammer alphabetisch sortiert/verkürzt werden.
  350.  
  351.         Durch die Verwendung von STRINGs wurde die Anzahl der C-Atome pro
  352.         Kette auf 63 (pro Atom 4 Zeichen), die Länge des Namens auf 255
  353.         Zeichen, und damit die Anzahl der Nebenketten auf 20 beschränkt.
  354.         Jedoch stellt ja bereits die Größe des Bildschirms eine "natürliche"
  355.         Grenze für die Ausdehnung des Alkanmoleküls dar; demnach sollte
  356.         diese Einschränkung nicht besonders ins Gewicht fallen.
  357.  
  358.         Das Programm wurde auf einem No-name PC-AT (AMI-Bios) mit
  359.         512 KB RAM unter MS-DOS 3.30 in TURBO-Pascal 5.0 entwickelt.
  360.         Der Source-Code benötigt 47 KB, das EXE-File 32 KB.
  361.         Bei der Compilation sollten folgende Werte im Menue Options/
  362.         Compiler gesetzt werden :
  363.         Low heap limit/High heap limit : 10590 Byte (353 Byte/Kette)
  364.         Stack-Size                     : 65520 Byte
  365.         Alle Compilerdirektiven        : OFF
  366.         Es wurden im wesentlichen nur Standard-Pascal Befehle verwendet,
  367.         so erfolgt die Bildschirmausgabe über WRITELN-Anweisung auf den
  368.         normalen Textbildschirm (80 * 25).
  369.         Aus der UNIT CRT wurden nur die Befehle GOTOXY, CLREOL, CLRSCR,
  370.         DELAY, READKEY und TEXTBACKGROUND/TEXTCOLOR verwendet.
  371.  
  372.  
  373.         Literatur
  374.  
  375.         D. Hellwinkel
  376.         Die systematische Nomenklatur der organischen Chemie
  377.         Springer Verlag, Berlin/Heidelberg/New York, 1974
  378.  
  379.         E. Denert, R. Franck
  380.         Datenstrukturen
  381.         BI-Wissenschaftsverlag, Zürich 1977
  382.         (Reihe Informatik Bd. 22)
  383.